@asgardeo/auth-spa 0.2.15 → 0.2.19

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.
Files changed (31) hide show
  1. package/dist/asgardeo-spa.production.esm.js +13 -13
  2. package/dist/asgardeo-spa.production.esm.js.map +1 -1
  3. package/dist/asgardeo-spa.production.js +13 -13
  4. package/dist/asgardeo-spa.production.js.map +1 -1
  5. package/dist/asgardeo-spa.production.min.js +1 -1
  6. package/dist/asgardeo-spa.production.min.js.map +1 -1
  7. package/dist/polyfilled/asgardeo-spa.production.esm.js +35 -35
  8. package/dist/polyfilled/asgardeo-spa.production.esm.js.map +1 -1
  9. package/dist/polyfilled/asgardeo-spa.production.js +35 -35
  10. package/dist/polyfilled/asgardeo-spa.production.js.map +1 -1
  11. package/dist/polyfilled/asgardeo-spa.production.min.js +1 -1
  12. package/dist/polyfilled/asgardeo-spa.production.min.js.map +1 -1
  13. package/dist/src/clients/main-thread-client.d.ts.map +1 -1
  14. package/dist/src/clients/main-thread-client.js +24 -17
  15. package/dist/src/clients/main-thread-client.js.map +1 -1
  16. package/dist/src/clients/web-worker-client.d.ts.map +1 -1
  17. package/dist/src/clients/web-worker-client.js +5 -1
  18. package/dist/src/clients/web-worker-client.js.map +1 -1
  19. package/dist/src/models/request-custom-grant.d.ts +25 -0
  20. package/dist/src/models/request-custom-grant.d.ts.map +1 -0
  21. package/dist/src/models/request-custom-grant.js +19 -0
  22. package/dist/src/models/request-custom-grant.js.map +1 -0
  23. package/dist/src/worker/worker-core.d.ts.map +1 -1
  24. package/dist/src/worker/worker-core.js +11 -13
  25. package/dist/src/worker/worker-core.js.map +1 -1
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +2 -2
  28. package/src/clients/main-thread-client.ts +28 -19
  29. package/src/clients/web-worker-client.ts +8 -2
  30. package/src/models/request-custom-grant.ts +26 -0
  31. package/src/worker/worker-core.ts +12 -15
@@ -1,4 +1,4 @@
1
- var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function n(t,e,n){return n={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&n.path)}},t(n,n.exports),n.exports}var r,i,c=n((function(t){function e(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(t.exports=e=function(t){return typeof t},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=e=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.default=t.exports,t.exports.__esModule=!0),e(n)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),l=e(c),o=function(t){return t&&t.Math==Math&&t},a=o("object"==("undefined"==typeof globalThis?"undefined":l(globalThis))&&globalThis)||o("object"==("undefined"==typeof window?"undefined":l(window))&&window)||o("object"==("undefined"==typeof self?"undefined":l(self))&&self)||o("object"==l(t)&&t)||function(){return this}()||Function("return this")(),u=function(t){try{return!!t()}catch(t){return!0}},d=!u((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),s=Function.prototype.call,m=s.bind?s.bind(s):function(){return s.apply(s,arguments)},h={}.propertyIsEnumerable,Z=Object.getOwnPropertyDescriptor,b=Z&&!h.call({1:2},1)?function(t){var e=Z(this,t);return!!e&&e.enumerable}:h,p={f:b},y=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},I=Function.prototype,X=I.bind,G=I.call,g=X&&X.bind(G),f=X?function(t){return t&&g(G,t)}:function(t){return t&&function(){return G.apply(t,arguments)}},V=f({}.toString),W=f("".slice),v=function(t){return W(V(t),8,-1)},S=a.Object,C=f("".split),Y=u((function(){return!S("z").propertyIsEnumerable(0)}))?function(t){return"String"==v(t)?C(t,""):S(t)}:S,R=a.TypeError,K=function(t){if(null==t)throw R("Can't call method on "+t);return t},L=function(t){return Y(K(t))},J=function(t){return"function"==typeof t},x=function(t){return"object"==l(t)?null!==t:J(t)},H=function(t){return J(t)?t:void 0},N=function(t,e){return arguments.length<2?H(a[t]):a[t]&&a[t][e]},k=f({}.isPrototypeOf),U=N("navigator","userAgent")||"",w=a.process,T=a.Deno,F=w&&w.versions||T&&T.version,z=F&&F.v8;z&&(i=(r=z.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!i&&U&&(!(r=U.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=U.match(/Chrome\/(\d+)/))&&(i=+r[1]);var B=i,j=!!Object.getOwnPropertySymbols&&!u((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&B&&B<41})),M=j&&!Symbol.sham&&"symbol"==l(Symbol.iterator),Q=a.Object,P=M?function(t){return"symbol"==l(t)}:function(t){var e=N("Symbol");return J(e)&&k(e.prototype,Q(t))},A=a.String,D=function(t){try{return A(t)}catch(t){return"Object"}},E=a.TypeError,O=function(t){if(J(t))return t;throw E(D(t)+" is not a function")},_=function(t,e){var n=t[e];return null==n?void 0:O(n)},q=a.TypeError,$=function(t,e){var n,r;if("string"===e&&J(n=t.toString)&&!x(r=m(n,t)))return r;if(J(n=t.valueOf)&&!x(r=m(n,t)))return r;if("string"!==e&&J(n=t.toString)&&!x(r=m(n,t)))return r;throw q("Can't convert object to primitive value")},tt=Object.defineProperty,et=function(t,e){try{tt(a,t,{value:e,configurable:!0,writable:!0})}catch(n){a[t]=e}return e},nt=a["__core-js_shared__"]||et("__core-js_shared__",{}),rt=n((function(t){(t.exports=function(t,e){return nt[t]||(nt[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.19.3",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})})),it=a.Object,ct=function(t){return it(K(t))},lt=f({}.hasOwnProperty),ot=Object.hasOwn||function(t,e){return lt(ct(t),e)},at=0,ut=Math.random(),dt=f(1..toString),st=function(t){return"Symbol("+(void 0===t?"":t)+")_"+dt(++at+ut,36)},mt=rt("wks"),ht=a.Symbol,Zt=ht&&ht.for,bt=M?ht:ht&&ht.withoutSetter||st,pt=function(t){if(!ot(mt,t)||!j&&"string"!=typeof mt[t]){var e="Symbol."+t;j&&ot(ht,t)?mt[t]=ht[t]:mt[t]=M&&Zt?Zt(e):bt(e)}return mt[t]},yt=a.TypeError,It=pt("toPrimitive"),Xt=function(t,e){if(!x(t)||P(t))return t;var n,r=_(t,It);if(r){if(void 0===e&&(e="default"),n=m(r,t,e),!x(n)||P(n))return n;throw yt("Can't convert object to primitive value")}return void 0===e&&(e="number"),$(t,e)},Gt=function(t){var e=Xt(t,"string");return P(e)?e:e+""},gt=a.document,ft=x(gt)&&x(gt.createElement),Vt=function(t){return ft?gt.createElement(t):{}},Wt=!d&&!u((function(){return 7!=Object.defineProperty(Vt("div"),"a",{get:function(){return 7}}).a})),vt=Object.getOwnPropertyDescriptor,St=d?vt:function(t,e){if(t=L(t),e=Gt(e),Wt)try{return vt(t,e)}catch(t){}if(ot(t,e))return y(!m(p.f,t,e),t[e])},Ct={f:St},Yt=a.String,Rt=a.TypeError,Kt=function(t){if(x(t))return t;throw Rt(Yt(t)+" is not an object")},Lt=a.TypeError,Jt=Object.defineProperty,xt=d?Jt:function(t,e,n){if(Kt(t),e=Gt(e),Kt(n),Wt)try{return Jt(t,e,n)}catch(t){}if("get"in n||"set"in n)throw Lt("Accessors not supported");return"value"in n&&(t[e]=n.value),t},Ht={f:xt},Nt=d?function(t,e,n){return Ht.f(t,e,y(1,n))}:function(t,e,n){return t[e]=n,t},kt=f(Function.toString);J(nt.inspectSource)||(nt.inspectSource=function(t){return kt(t)});var Ut,wt,Tt,Ft=nt.inspectSource,zt=a.WeakMap,Bt=J(zt)&&/native code/.test(Ft(zt)),jt=rt("keys"),Mt=function(t){return jt[t]||(jt[t]=st(t))},Qt={},Pt=a.TypeError,At=a.WeakMap;if(Bt||nt.state){var Dt=nt.state||(nt.state=new At),Et=f(Dt.get),Ot=f(Dt.has),_t=f(Dt.set);Ut=function(t,e){if(Ot(Dt,t))throw new Pt("Object already initialized");return e.facade=t,_t(Dt,t,e),e},wt=function(t){return Et(Dt,t)||{}},Tt=function(t){return Ot(Dt,t)}}else{var qt=Mt("state");Qt[qt]=!0,Ut=function(t,e){if(ot(t,qt))throw new Pt("Object already initialized");return e.facade=t,Nt(t,qt,e),e},wt=function(t){return ot(t,qt)?t[qt]:{}},Tt=function(t){return ot(t,qt)}}var $t={set:Ut,get:wt,has:Tt,enforce:function(t){return Tt(t)?wt(t):Ut(t,{})},getterFor:function(t){return function(e){var n;if(!x(e)||(n=wt(e)).type!==t)throw Pt("Incompatible receiver, "+t+" required");return n}}},te=Function.prototype,ee=d&&Object.getOwnPropertyDescriptor,ne=ot(te,"name"),re={EXISTS:ne,PROPER:ne&&"something"===function(){}.name,CONFIGURABLE:ne&&(!d||d&&ee(te,"name").configurable)},ie=n((function(t){var e=re.CONFIGURABLE,n=$t.get,r=$t.enforce,i=String(String).split("String");(t.exports=function(t,n,c,l){var o,u=!!l&&!!l.unsafe,d=!!l&&!!l.enumerable,s=!!l&&!!l.noTargetGet,m=l&&void 0!==l.name?l.name:n;J(c)&&("Symbol("===String(m).slice(0,7)&&(m="["+String(m).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!ot(c,"name")||e&&c.name!==m)&&Nt(c,"name",m),(o=r(c)).source||(o.source=i.join("string"==typeof m?m:""))),t!==a?(u?!s&&t[n]&&(d=!0):delete t[n],d?t[n]=c:Nt(t,n,c)):d?t[n]=c:et(n,c)})(Function.prototype,"toString",(function(){return J(this)&&n(this).source||Ft(this)}))})),ce=Math.ceil,le=Math.floor,oe=function(t){var e=+t;return e!=e||0===e?0:(e>0?le:ce)(e)},ae=Math.max,ue=Math.min,de=function(t,e){var n=oe(t);return n<0?ae(n+e,0):ue(n,e)},se=Math.min,me=function(t){return t>0?se(oe(t),9007199254740991):0},he=function(t){return me(t.length)},Ze=function(t){return function(e,n,r){var i,c=L(e),l=he(c),o=de(r,l);if(t&&n!=n){for(;l>o;)if((i=c[o++])!=i)return!0}else for(;l>o;o++)if((t||o in c)&&c[o]===n)return t||o||0;return!t&&-1}},be={includes:Ze(!0),indexOf:Ze(!1)},pe=be.indexOf,ye=f([].push),Ie=function(t,e){var n,r=L(t),i=0,c=[];for(n in r)!ot(Qt,n)&&ot(r,n)&&ye(c,n);for(;e.length>i;)ot(r,n=e[i++])&&(~pe(c,n)||ye(c,n));return c},Xe=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Ge=Xe.concat("length","prototype"),ge=Object.getOwnPropertyNames||function(t){return Ie(t,Ge)},fe={f:ge},Ve={f:Object.getOwnPropertySymbols},We=f([].concat),ve=N("Reflect","ownKeys")||function(t){var e=fe.f(Kt(t)),n=Ve.f;return n?We(e,n(t)):e},Se=function(t,e){for(var n=ve(e),r=Ht.f,i=Ct.f,c=0;c<n.length;c++){var l=n[c];ot(t,l)||r(t,l,i(e,l))}},Ce=/#|\.prototype\./,Ye=function(t,e){var n=Ke[Re(t)];return n==Je||n!=Le&&(J(e)?u(e):!!e)},Re=Ye.normalize=function(t){return String(t).replace(Ce,".").toLowerCase()},Ke=Ye.data={},Le=Ye.NATIVE="N",Je=Ye.POLYFILL="P",xe=Ye,He=Ct.f,Ne=function(t,e){var n,r,i,c,o,u=t.target,d=t.global,s=t.stat;if(n=d?a:s?a[u]||et(u,{}):(a[u]||{}).prototype)for(r in e){if(c=e[r],i=t.noTargetGet?(o=He(n,r))&&o.value:n[r],!xe(d?r:u+(s?".":"#")+r,t.forced)&&void 0!==i){if(l(c)==l(i))continue;Se(c,i)}(t.sham||i&&i.sham)&&Nt(c,"sham",!0),ie(n,r,c,t)}},ke=Function.prototype,Ue=ke.apply,we=ke.bind,Te=ke.call,Fe="object"==("undefined"==typeof Reflect?"undefined":l(Reflect))&&Reflect.apply||(we?Te.bind(Ue):function(){return Te.apply(Ue,arguments)}),ze=Array.isArray||function(t){return"Array"==v(t)},Be={};Be[pt("toStringTag")]="z";var je,Me="[object z]"===String(Be),Qe=pt("toStringTag"),Pe=a.Object,Ae="Arguments"==v(function(){return arguments}()),De=Me?v:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Pe(t),Qe))?n:Ae?v(e):"Object"==(r=v(e))&&J(e.callee)?"Arguments":r},Ee=a.String,Oe=function(t){if("Symbol"===De(t))throw TypeError("Cannot convert a Symbol value to a string");return Ee(t)},_e=Object.keys||function(t){return Ie(t,Xe)},qe=d?Object.defineProperties:function(t,e){Kt(t);for(var n,r=L(e),i=_e(e),c=i.length,l=0;c>l;)Ht.f(t,n=i[l++],r[n]);return t},$e=N("document","documentElement"),tn=Mt("IE_PROTO"),en=function(){},nn=function(t){return"<script>"+t+"<\/script>"},rn=function(t){t.write(nn("")),t.close();var e=t.parentWindow.Object;return t=null,e},cn=function(){try{je=new ActiveXObject("htmlfile")}catch(t){}var t,e;cn="undefined"!=typeof document?document.domain&&je?rn(je):((e=Vt("iframe")).style.display="none",$e.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(nn("document.F=Object")),t.close(),t.F):rn(je);for(var n=Xe.length;n--;)delete cn.prototype[Xe[n]];return cn()};Qt[tn]=!0;var ln=Object.create||function(t,e){var n;return null!==t?(en.prototype=Kt(t),n=new en,en.prototype=null,n[tn]=t):n=cn(),void 0===e?n:qe(n,e)},on=function(t,e,n){var r=Gt(e);r in t?Ht.f(t,r,y(0,n)):t[r]=n},an=a.Array,un=Math.max,dn=function(t,e,n){for(var r=he(t),i=de(e,r),c=de(void 0===n?r:n,r),l=an(un(c-i,0)),o=0;i<c;i++,o++)on(l,o,t[i]);return l.length=o,l},sn=fe.f,mn="object"==("undefined"==typeof window?"undefined":l(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],hn={f:function(t){return mn&&"Window"==v(t)?function(t){try{return sn(t)}catch(t){return dn(mn)}}(t):sn(L(t))}},Zn=f([].slice),bn={f:pt},pn=a,yn=Ht.f,In=function(t){var e=pn.Symbol||(pn.Symbol={});ot(e,t)||yn(e,t,{value:bn.f(t)})},Xn=Ht.f,Gn=pt("toStringTag"),gn=function(t,e,n){t&&!ot(t=n?t:t.prototype,Gn)&&Xn(t,Gn,{configurable:!0,value:e})},fn=f(f.bind),Vn=function(t,e){return O(t),void 0===e?t:fn?fn(t,e):function(){return t.apply(e,arguments)}},Wn=function(){},vn=[],Sn=N("Reflect","construct"),Cn=/^\s*(?:class|function)\b/,Yn=f(Cn.exec),Rn=!Cn.exec(Wn),Kn=function(t){if(!J(t))return!1;try{return Sn(Wn,vn,t),!0}catch(t){return!1}},Ln=!Sn||u((function(){var t;return Kn(Kn.call)||!Kn(Object)||!Kn((function(){t=!0}))||t}))?function(t){if(!J(t))return!1;switch(De(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return Rn||!!Yn(Cn,Ft(t))}:Kn,Jn=pt("species"),xn=a.Array,Hn=function(t,e){return new(function(t){var e;return ze(t)&&(e=t.constructor,(Ln(e)&&(e===xn||ze(e.prototype))||x(e)&&null===(e=e[Jn]))&&(e=void 0)),void 0===e?xn:e}(t))(0===e?0:e)},Nn=f([].push),kn=function(t){var e=1==t,n=2==t,r=3==t,i=4==t,c=6==t,l=7==t,o=5==t||c;return function(a,u,d,s){for(var m,h,Z=ct(a),b=Y(Z),p=Vn(u,d),y=he(b),I=0,X=s||Hn,G=e?X(a,y):n||l?X(a,0):void 0;y>I;I++)if((o||I in b)&&(h=p(m=b[I],I,Z),t))if(e)G[I]=h;else if(h)switch(t){case 3:return!0;case 5:return m;case 6:return I;case 2:Nn(G,m)}else switch(t){case 4:return!1;case 7:Nn(G,m)}return c?-1:r||i?i:G}},Un={forEach:kn(0),map:kn(1),filter:kn(2),some:kn(3),every:kn(4),find:kn(5),findIndex:kn(6),filterReject:kn(7)},wn=Un.forEach,Tn=Mt("hidden"),Fn=pt("toPrimitive"),zn=$t.set,Bn=$t.getterFor("Symbol"),jn=Object.prototype,Mn=a.Symbol,Qn=Mn&&Mn.prototype,Pn=a.TypeError,An=a.QObject,Dn=N("JSON","stringify"),En=Ct.f,On=Ht.f,_n=hn.f,qn=p.f,$n=f([].push),tr=rt("symbols"),er=rt("op-symbols"),nr=rt("string-to-symbol-registry"),rr=rt("symbol-to-string-registry"),ir=rt("wks"),cr=!An||!An.prototype||!An.prototype.findChild,lr=d&&u((function(){return 7!=ln(On({},"a",{get:function(){return On(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=En(jn,e);r&&delete jn[e],On(t,e,n),r&&t!==jn&&On(jn,e,r)}:On,or=function(t,e){var n=tr[t]=ln(Qn);return zn(n,{type:"Symbol",tag:t,description:e}),d||(n.description=e),n},ar=function(t,e,n){t===jn&&ar(er,e,n),Kt(t);var r=Gt(e);return Kt(n),ot(tr,r)?(n.enumerable?(ot(t,Tn)&&t[Tn][r]&&(t[Tn][r]=!1),n=ln(n,{enumerable:y(0,!1)})):(ot(t,Tn)||On(t,Tn,y(1,{})),t[Tn][r]=!0),lr(t,r,n)):On(t,r,n)},ur=function(t,e){Kt(t);var n=L(e),r=_e(n).concat(hr(n));return wn(r,(function(e){d&&!m(dr,n,e)||ar(t,e,n[e])})),t},dr=function(t){var e=Gt(t),n=m(qn,this,e);return!(this===jn&&ot(tr,e)&&!ot(er,e))&&(!(n||!ot(this,e)||!ot(tr,e)||ot(this,Tn)&&this[Tn][e])||n)},sr=function(t,e){var n=L(t),r=Gt(e);if(n!==jn||!ot(tr,r)||ot(er,r)){var i=En(n,r);return!i||!ot(tr,r)||ot(n,Tn)&&n[Tn][r]||(i.enumerable=!0),i}},mr=function(t){var e=_n(L(t)),n=[];return wn(e,(function(t){ot(tr,t)||ot(Qt,t)||$n(n,t)})),n},hr=function(t){var e=t===jn,n=_n(e?er:L(t)),r=[];return wn(n,(function(t){!ot(tr,t)||e&&!ot(jn,t)||$n(r,tr[t])})),r};if(j||(Mn=function(){if(k(Qn,this))throw Pn("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?Oe(arguments[0]):void 0,e=st(t),n=function t(n){this===jn&&m(t,er,n),ot(this,Tn)&&ot(this[Tn],e)&&(this[Tn][e]=!1),lr(this,e,y(1,n))};return d&&cr&&lr(jn,e,{configurable:!0,set:n}),or(e,t)},Qn=Mn.prototype,ie(Qn,"toString",(function(){return Bn(this).tag})),ie(Mn,"withoutSetter",(function(t){return or(st(t),t)})),p.f=dr,Ht.f=ar,Ct.f=sr,fe.f=hn.f=mr,Ve.f=hr,bn.f=function(t){return or(pt(t),t)},d&&(On(Qn,"description",{configurable:!0,get:function(){return Bn(this).description}}),ie(jn,"propertyIsEnumerable",dr,{unsafe:!0}))),Ne({global:!0,wrap:!0,forced:!j,sham:!j},{Symbol:Mn}),wn(_e(ir),(function(t){In(t)})),Ne({target:"Symbol",stat:!0,forced:!j},{for:function(t){var e=Oe(t);if(ot(nr,e))return nr[e];var n=Mn(e);return nr[e]=n,rr[n]=e,n},keyFor:function(t){if(!P(t))throw Pn(t+" is not a symbol");if(ot(rr,t))return rr[t]},useSetter:function(){cr=!0},useSimple:function(){cr=!1}}),Ne({target:"Object",stat:!0,forced:!j,sham:!d},{create:function(t,e){return void 0===e?ln(t):ur(ln(t),e)},defineProperty:ar,defineProperties:ur,getOwnPropertyDescriptor:sr}),Ne({target:"Object",stat:!0,forced:!j},{getOwnPropertyNames:mr,getOwnPropertySymbols:hr}),Ne({target:"Object",stat:!0,forced:u((function(){Ve.f(1)}))},{getOwnPropertySymbols:function(t){return Ve.f(ct(t))}}),Dn){var Zr=!j||u((function(){var t=Mn();return"[null]"!=Dn([t])||"{}"!=Dn({a:t})||"{}"!=Dn(Object(t))}));Ne({target:"JSON",stat:!0,forced:Zr},{stringify:function(t,e,n){var r=Zn(arguments),i=e;if((x(e)||void 0!==t)&&!P(t))return ze(e)||(e=function(t,e){if(J(i)&&(e=m(i,this,t,e)),!P(e))return e}),r[1]=e,Fe(Dn,null,r)}})}if(!Qn[Fn]){var br=Qn.valueOf;ie(Qn,Fn,(function(t){return m(br,this)}))}gn(Mn,"Symbol"),Qt[Tn]=!0;var pr=Ht.f,yr=a.Symbol,Ir=yr&&yr.prototype;if(d&&J(yr)&&(!("description"in Ir)||void 0!==yr().description)){var Xr={},Gr=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:Oe(arguments[0]),e=k(Ir,this)?new yr(t):void 0===t?yr():yr(t);return""===t&&(Xr[e]=!0),e};Se(Gr,yr),Gr.prototype=Ir,Ir.constructor=Gr;var gr="Symbol(test)"==String(yr("test")),fr=f(Ir.toString),Vr=f(Ir.valueOf),Wr=/^Symbol\((.*)\)[^)]+$/,vr=f("".replace),Sr=f("".slice);pr(Ir,"description",{configurable:!0,get:function(){var t=Vr(this),e=fr(t);if(ot(Xr,t))return"";var n=gr?Sr(e,7,-1):vr(e,Wr,"$1");return""===n?void 0:n}}),Ne({global:!0,forced:!0},{Symbol:Gr})}In("asyncIterator"),In("hasInstance"),In("isConcatSpreadable"),In("iterator"),In("match"),In("matchAll"),In("replace"),In("search"),In("species"),In("split"),In("toPrimitive"),In("toStringTag"),In("unscopables");var Cr=pt("species"),Yr=function(t){return B>=51||!u((function(){var e=[];return(e.constructor={})[Cr]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},Rr=pt("isConcatSpreadable"),Kr=a.TypeError,Lr=B>=51||!u((function(){var t=[];return t[Rr]=!1,t.concat()[0]!==t})),Jr=Yr("concat"),xr=function(t){if(!x(t))return!1;var e=t[Rr];return void 0!==e?!!e:ze(t)};Ne({target:"Array",proto:!0,forced:!Lr||!Jr},{concat:function(t){var e,n,r,i,c,l=ct(this),o=Hn(l,0),a=0;for(e=-1,r=arguments.length;e<r;e++)if(xr(c=-1===e?l:arguments[e])){if(a+(i=he(c))>9007199254740991)throw Kr("Maximum allowed index exceeded");for(n=0;n<i;n++,a++)n in c&&on(o,a,c[n])}else{if(a>=9007199254740991)throw Kr("Maximum allowed index exceeded");on(o,a++,c)}return o.length=a,o}});var Hr=Math.min,Nr=[].copyWithin||function(t,e){var n=ct(this),r=he(n),i=de(t,r),c=de(e,r),l=arguments.length>2?arguments[2]:void 0,o=Hr((void 0===l?r:de(l,r))-c,r-i),a=1;for(c<i&&i<c+o&&(a=-1,c+=o-1,i+=o-1);o-- >0;)c in n?n[i]=n[c]:delete n[i],i+=a,c+=a;return n},kr=pt("unscopables"),Ur=Array.prototype;null==Ur[kr]&&Ht.f(Ur,kr,{configurable:!0,value:ln(null)});var wr=function(t){Ur[kr][t]=!0};Ne({target:"Array",proto:!0},{copyWithin:Nr}),wr("copyWithin");var Tr=function(t){for(var e=ct(this),n=he(e),r=arguments.length,i=de(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,l=void 0===c?n:de(c,n);l>i;)e[i++]=t;return e};Ne({target:"Array",proto:!0},{fill:Tr}),wr("fill");var Fr=Un.filter,zr=Yr("filter");Ne({target:"Array",proto:!0,forced:!zr},{filter:function(t){return Fr(this,t,arguments.length>1?arguments[1]:void 0)}});var Br=Un.find,jr=!0;"find"in[]&&Array(1).find((function(){jr=!1})),Ne({target:"Array",proto:!0,forced:jr},{find:function(t){return Br(this,t,arguments.length>1?arguments[1]:void 0)}}),wr("find");var Mr=Un.findIndex,Qr=!0;"findIndex"in[]&&Array(1).findIndex((function(){Qr=!1})),Ne({target:"Array",proto:!0,forced:Qr},{findIndex:function(t){return Mr(this,t,arguments.length>1?arguments[1]:void 0)}}),wr("findIndex");var Pr=a.TypeError,Ar=function t(e,n,r,i,c,l,o,a){for(var u,d=c,s=0,m=!!o&&Vn(o,a);s<i;){if(s in r){if(u=m?m(r[s],s,n):r[s],l>0&&ze(u))d=t(e,n,u,he(u),d,l-1)-1;else{if(d>=9007199254740991)throw Pr("Exceed the acceptable array length");e[d]=u}d++}s++}return d};Ne({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=ct(this),n=he(e),r=Hn(e,0);return r.length=Ar(r,e,e,n,0,void 0===t?1:oe(t)),r}}),Ne({target:"Array",proto:!0},{flatMap:function(t){var e,n=ct(this),r=he(n);return O(t),(e=Hn(n,0)).length=Ar(e,n,n,r,0,1,t,arguments.length>1?arguments[1]:void 0),e}});var Dr=function(t,e,n){var r,i;Kt(t);try{if(!(r=_(t,"return"))){if("throw"===e)throw n;return n}r=m(r,t)}catch(t){i=!0,r=t}if("throw"===e)throw n;if(i)throw r;return Kt(r),n},Er=function(t,e,n,r){try{return r?e(Kt(n)[0],n[1]):e(n)}catch(e){Dr(t,"throw",e)}},Or={},_r=pt("iterator"),qr=Array.prototype,$r=function(t){return void 0!==t&&(Or.Array===t||qr[_r]===t)},ti=pt("iterator"),ei=function(t){if(null!=t)return _(t,ti)||_(t,"@@iterator")||Or[De(t)]},ni=a.TypeError,ri=function(t,e){var n=arguments.length<2?ei(t):e;if(O(n))return Kt(m(n,t));throw ni(D(t)+" is not iterable")},ii=a.Array,ci=function(t){var e=ct(t),n=Ln(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=Vn(i,r>2?arguments[2]:void 0));var l,o,a,u,d,s,h=ei(e),Z=0;if(!h||this==ii&&$r(h))for(l=he(e),o=n?new this(l):ii(l);l>Z;Z++)s=c?i(e[Z],Z):e[Z],on(o,Z,s);else for(d=(u=ri(e,h)).next,o=n?new this:[];!(a=m(d,u)).done;Z++)s=c?Er(u,i,[a.value,Z],!0):a.value,on(o,Z,s);return o.length=Z,o},li=pt("iterator"),oi=!1;try{var ai=0,ui={next:function(){return{done:!!ai++}},return:function(){oi=!0}};ui[li]=function(){return this},Array.from(ui,(function(){throw 2}))}catch(t){}var di=function(t,e){if(!e&&!oi)return!1;var n=!1;try{var r={};r[li]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(t){}return n},si=!di((function(t){Array.from(t)}));Ne({target:"Array",stat:!0,forced:si},{from:ci});var mi=be.includes;Ne({target:"Array",proto:!0},{includes:function(t){return mi(this,t,arguments.length>1?arguments[1]:void 0)}}),wr("includes");var hi=function(t,e){var n=[][t];return!!n&&u((function(){n.call(null,e||function(){throw 1},1)}))},Zi=be.indexOf,bi=f([].indexOf),pi=!!bi&&1/bi([1],1,-0)<0,yi=hi("indexOf");Ne({target:"Array",proto:!0,forced:pi||!yi},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return pi?bi(this,t,e)||0:Zi(this,t,e)}});var Ii,Xi,Gi,gi=!u((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),fi=Mt("IE_PROTO"),Vi=a.Object,Wi=Vi.prototype,vi=gi?Vi.getPrototypeOf:function(t){var e=ct(t);if(ot(e,fi))return e[fi];var n=e.constructor;return J(n)&&e instanceof n?n.prototype:e instanceof Vi?Wi:null},Si=pt("iterator"),Ci=!1;[].keys&&("next"in(Gi=[].keys())?(Xi=vi(vi(Gi)))!==Object.prototype&&(Ii=Xi):Ci=!0);var Yi=null==Ii||u((function(){var t={};return Ii[Si].call(t)!==t}));Yi&&(Ii={}),J(Ii[Si])||ie(Ii,Si,(function(){return this}));var Ri={IteratorPrototype:Ii,BUGGY_SAFARI_ITERATORS:Ci},Ki=Ri.IteratorPrototype,Li=function(){return this},Ji=function(t,e,n,r){var i=e+" Iterator";return t.prototype=ln(Ki,{next:y(+!r,n)}),gn(t,i,!1),Or[i]=Li,t},xi=a.String,Hi=a.TypeError,Ni=function(t){if("object"==l(t)||J(t))return t;throw Hi("Can't set "+xi(t)+" as a prototype")},ki=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=f(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),e=n instanceof Array}catch(t){}return function(n,r){return Kt(n),Ni(r),e?t(n,r):n.__proto__=r,n}}():void 0),Ui=re.PROPER,wi=re.CONFIGURABLE,Ti=Ri.IteratorPrototype,Fi=Ri.BUGGY_SAFARI_ITERATORS,zi=pt("iterator"),Bi=function(){return this},ji=function(t,e,n,r,i,c,l){Ji(n,e,r);var o,a,u,d=function(t){if(t===i&&p)return p;if(!Fi&&t in Z)return Z[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},s=e+" Iterator",h=!1,Z=t.prototype,b=Z[zi]||Z["@@iterator"]||i&&Z[i],p=!Fi&&b||d(i),y="Array"==e&&Z.entries||b;if(y&&(o=vi(y.call(new t)))!==Object.prototype&&o.next&&(vi(o)!==Ti&&(ki?ki(o,Ti):J(o[zi])||ie(o,zi,Bi)),gn(o,s,!0)),Ui&&"values"==i&&b&&"values"!==b.name&&(wi?Nt(Z,"name","values"):(h=!0,p=function(){return m(b,this)})),i)if(a={values:d("values"),keys:c?p:d("keys"),entries:d("entries")},l)for(u in a)(Fi||h||!(u in Z))&&ie(Z,u,a[u]);else Ne({target:e,proto:!0,forced:Fi||h},a);return Z[zi]!==p&&ie(Z,zi,p,{name:i}),Or[e]=p,a},Mi=$t.set,Qi=$t.getterFor("Array Iterator"),Pi=ji(Array,"Array",(function(t,e){Mi(this,{type:"Array Iterator",target:L(t),index:0,kind:e})}),(function(){var t=Qi(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values");Or.Arguments=Or.Array,wr("keys"),wr("values"),wr("entries");var Ai=f([].join),Di=Y!=Object,Ei=hi("join",",");Ne({target:"Array",proto:!0,forced:Di||!Ei},{join:function(t){return Ai(L(this),void 0===t?",":t)}});var Oi=Math.min,_i=[].lastIndexOf,qi=!!_i&&1/[1].lastIndexOf(1,-0)<0,$i=hi("lastIndexOf"),tc=qi||!$i?function(t){if(qi)return Fe(_i,this,arguments)||0;var e=L(this),n=he(e),r=n-1;for(arguments.length>1&&(r=Oi(r,oe(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in e&&e[r]===t)return r||0;return-1}:_i;Ne({target:"Array",proto:!0,forced:tc!==[].lastIndexOf},{lastIndexOf:tc});var ec=Un.map,nc=Yr("map");Ne({target:"Array",proto:!0,forced:!nc},{map:function(t){return ec(this,t,arguments.length>1?arguments[1]:void 0)}});var rc=a.Array,ic=u((function(){function t(){}return!(rc.of.call(t)instanceof t)}));Ne({target:"Array",stat:!0,forced:ic},{of:function(){for(var t=0,e=arguments.length,n=new(Ln(this)?this:rc)(e);e>t;)on(n,t,arguments[t++]);return n.length=e,n}});var cc=a.TypeError,lc=function(t){return function(e,n,r,i){O(n);var c=ct(e),l=Y(c),o=he(c),a=t?o-1:0,u=t?-1:1;if(r<2)for(;;){if(a in l){i=l[a],a+=u;break}if(a+=u,t?a<0:o<=a)throw cc("Reduce of empty array with no initial value")}for(;t?a>=0:o>a;a+=u)a in l&&(i=n(i,l[a],a,c));return i}},oc={left:lc(!1),right:lc(!0)},ac="process"==v(a.process),uc=oc.left,dc=hi("reduce");Ne({target:"Array",proto:!0,forced:!dc||!ac&&B>79&&B<83},{reduce:function(t){var e=arguments.length;return uc(this,t,e,e>1?arguments[1]:void 0)}});var sc=oc.right,mc=hi("reduceRight");Ne({target:"Array",proto:!0,forced:!mc||!ac&&B>79&&B<83},{reduceRight:function(t){return sc(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}});var hc=Yr("slice"),Zc=pt("species"),bc=a.Array,pc=Math.max;Ne({target:"Array",proto:!0,forced:!hc},{slice:function(t,e){var n,r,i,c=L(this),l=he(c),o=de(t,l),a=de(void 0===e?l:e,l);if(ze(c)&&(n=c.constructor,(Ln(n)&&(n===bc||ze(n.prototype))||x(n)&&null===(n=n[Zc]))&&(n=void 0),n===bc||void 0===n))return Zn(c,o,a);for(r=new(void 0===n?bc:n)(pc(a-o,0)),i=0;o<a;o++,i++)o in c&&on(r,i,c[o]);return r.length=i,r}});var yc=Math.floor,Ic=function(t,e){for(var n,r,i=t.length,c=1;c<i;){for(r=c,n=t[c];r&&e(t[r-1],n)>0;)t[r]=t[--r];r!==c++&&(t[r]=n)}return t},Xc=function(t,e,n,r){for(var i=e.length,c=n.length,l=0,o=0;l<i||o<c;)t[l+o]=l<i&&o<c?r(e[l],n[o])<=0?e[l++]:n[o++]:l<i?e[l++]:n[o++];return t},Gc=function t(e,n){var r=e.length,i=yc(r/2);return r<8?Ic(e,n):Xc(e,t(dn(e,0,i),n),t(dn(e,i),n),n)},gc=U.match(/firefox\/(\d+)/i),fc=!!gc&&+gc[1],Vc=/MSIE|Trident/.test(U),Wc=U.match(/AppleWebKit\/(\d+)\./),vc=!!Wc&&+Wc[1],Sc=[],Cc=f(Sc.sort),Yc=f(Sc.push),Rc=u((function(){Sc.sort(void 0)})),Kc=u((function(){Sc.sort(null)})),Lc=hi("sort"),Jc=!u((function(){if(B)return B<70;if(!(fc&&fc>3)){if(Vc)return!0;if(vc)return vc<603;var t,e,n,r,i="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)Sc.push({k:e+r,v:n})}for(Sc.sort((function(t,e){return e.v-t.v})),r=0;r<Sc.length;r++)e=Sc[r].k.charAt(0),i.charAt(i.length-1)!==e&&(i+=e);return"DGBEFHACIJK"!==i}}));Ne({target:"Array",proto:!0,forced:Rc||!Kc||!Lc||!Jc},{sort:function(t){void 0!==t&&O(t);var e=ct(this);if(Jc)return void 0===t?Cc(e):Cc(e,t);var n,r,i=[],c=he(e);for(r=0;r<c;r++)r in e&&Yc(i,e[r]);for(Gc(i,function(t){return function(e,n){return void 0===n?-1:void 0===e?1:void 0!==t?+t(e,n)||0:Oe(e)>Oe(n)?1:-1}}(t)),n=i.length,r=0;r<n;)e[r]=i[r++];for(;r<c;)delete e[r++];return e}});var xc=pt("species"),Hc=function(t){var e=N(t),n=Ht.f;d&&e&&!e[xc]&&n(e,xc,{configurable:!0,get:function(){return this}})};Hc("Array");var Nc=Yr("splice"),kc=a.TypeError,Uc=Math.max,wc=Math.min;Ne({target:"Array",proto:!0,forced:!Nc},{splice:function(t,e){var n,r,i,c,l,o,a=ct(this),u=he(a),d=de(t,u),s=arguments.length;if(0===s?n=r=0:1===s?(n=0,r=u-d):(n=s-2,r=wc(Uc(oe(e),0),u-d)),u+n-r>9007199254740991)throw kc("Maximum allowed length exceeded");for(i=Hn(a,r),c=0;c<r;c++)(l=d+c)in a&&on(i,c,a[l]);if(i.length=r,n<r){for(c=d;c<u-r;c++)o=c+n,(l=c+r)in a?a[o]=a[l]:delete a[o];for(c=u;c>u-r+n;c--)delete a[c-1]}else if(n>r)for(c=u-r;c>d;c--)o=c+n-1,(l=c+r-1)in a?a[o]=a[l]:delete a[o];for(c=0;c<n;c++)a[c+d]=arguments[c+2];return a.length=u-r+n,i}}),wr("flat"),wr("flatMap");var Tc="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Fc=function(t,e,n){for(var r in e)ie(t,r,e[r],n);return t},zc=a.TypeError,Bc=function(t,e){if(k(e,t))return t;throw zc("Incorrect invocation")},jc=a.RangeError,Mc=function(t){if(void 0===t)return 0;var e=oe(t),n=me(e);if(e!==n)throw jc("Wrong length or index");return n},Qc=a.Array,Pc=Math.abs,Ac=Math.pow,Dc=Math.floor,Ec=Math.log,Oc=Math.LN2,_c=function(t,e,n){var r,i,c,l=Qc(n),o=8*n-e-1,a=(1<<o)-1,u=a>>1,d=23===e?Ac(2,-24)-Ac(2,-77):0,s=t<0||0===t&&1/t<0?1:0,m=0;for((t=Pc(t))!=t||t===1/0?(i=t!=t?1:0,r=a):(r=Dc(Ec(t)/Oc),t*(c=Ac(2,-r))<1&&(r--,c*=2),(t+=r+u>=1?d/c:d*Ac(2,1-u))*c>=2&&(r++,c/=2),r+u>=a?(i=0,r=a):r+u>=1?(i=(t*c-1)*Ac(2,e),r+=u):(i=t*Ac(2,u-1)*Ac(2,e),r=0));e>=8;)l[m++]=255&i,i/=256,e-=8;for(r=r<<e|i,o+=e;o>0;)l[m++]=255&r,r/=256,o-=8;return l[--m]|=128*s,l},qc=function(t,e){var n,r=t.length,i=8*r-e-1,c=(1<<i)-1,l=c>>1,o=i-7,a=r-1,u=t[a--],d=127&u;for(u>>=7;o>0;)d=256*d+t[a--],o-=8;for(n=d&(1<<-o)-1,d>>=-o,o+=e;o>0;)n=256*n+t[a--],o-=8;if(0===d)d=1-l;else{if(d===c)return n?NaN:u?-1/0:1/0;n+=Ac(2,e),d-=l}return(u?-1:1)*n*Ac(2,d-e)},$c=fe.f,tl=Ht.f,el=re.PROPER,nl=re.CONFIGURABLE,rl=$t.get,il=$t.set,cl=a.ArrayBuffer,ll=cl,ol=ll&&ll.prototype,al=a.DataView,ul=al&&al.prototype,dl=Object.prototype,sl=a.Array,ml=a.RangeError,hl=f(Tr),Zl=f([].reverse),bl=_c,pl=qc,yl=function(t){return[255&t]},Il=function(t){return[255&t,t>>8&255]},Xl=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},Gl=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},gl=function(t){return bl(t,23,4)},fl=function(t){return bl(t,52,8)},Vl=function(t,e){tl(t.prototype,e,{get:function(){return rl(this)[e]}})},Wl=function(t,e,n,r){var i=Mc(n),c=rl(t);if(i+e>c.byteLength)throw ml("Wrong index");var l=rl(c.buffer).bytes,o=i+c.byteOffset,a=dn(l,o,o+e);return r?a:Zl(a)},vl=function(t,e,n,r,i,c){var l=Mc(n),o=rl(t);if(l+e>o.byteLength)throw ml("Wrong index");for(var a=rl(o.buffer).bytes,u=l+o.byteOffset,d=r(+i),s=0;s<e;s++)a[u+s]=d[c?s:e-s-1]};if(Tc){var Sl=el&&"ArrayBuffer"!==cl.name;if(u((function(){cl(1)}))&&u((function(){new cl(-1)}))&&!u((function(){return new cl,new cl(1.5),new cl(NaN),Sl&&!nl})))Sl&&nl&&Nt(cl,"name","ArrayBuffer");else{(ll=function(t){return Bc(this,ol),new cl(Mc(t))}).prototype=ol;for(var Cl,Yl=$c(cl),Rl=0;Yl.length>Rl;)(Cl=Yl[Rl++])in ll||Nt(ll,Cl,cl[Cl]);ol.constructor=ll}ki&&vi(ul)!==dl&&ki(ul,dl);var Kl=new al(new ll(2)),Ll=f(ul.setInt8);Kl.setInt8(0,2147483648),Kl.setInt8(1,2147483649),!Kl.getInt8(0)&&Kl.getInt8(1)||Fc(ul,{setInt8:function(t,e){Ll(this,t,e<<24>>24)},setUint8:function(t,e){Ll(this,t,e<<24>>24)}},{unsafe:!0})}else ll=function(t){Bc(this,ol);var e=Mc(t);il(this,{bytes:hl(sl(e),0),byteLength:e}),d||(this.byteLength=e)},ol=ll.prototype,al=function(t,e,n){Bc(this,ul),Bc(t,ol);var r=rl(t).byteLength,i=oe(e);if(i<0||i>r)throw ml("Wrong offset");if(i+(n=void 0===n?r-i:me(n))>r)throw ml("Wrong length");il(this,{buffer:t,byteLength:n,byteOffset:i}),d||(this.buffer=t,this.byteLength=n,this.byteOffset=i)},ul=al.prototype,d&&(Vl(ll,"byteLength"),Vl(al,"buffer"),Vl(al,"byteLength"),Vl(al,"byteOffset")),Fc(ul,{getInt8:function(t){return Wl(this,1,t)[0]<<24>>24},getUint8:function(t){return Wl(this,1,t)[0]},getInt16:function(t){var e=Wl(this,2,t,arguments.length>1?arguments[1]:void 0);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=Wl(this,2,t,arguments.length>1?arguments[1]:void 0);return e[1]<<8|e[0]},getInt32:function(t){return Gl(Wl(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return Gl(Wl(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return pl(Wl(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return pl(Wl(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,e){vl(this,1,t,yl,e)},setUint8:function(t,e){vl(this,1,t,yl,e)},setInt16:function(t,e){vl(this,2,t,Il,e,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,e){vl(this,2,t,Il,e,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,e){vl(this,4,t,Xl,e,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,e){vl(this,4,t,Xl,e,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,e){vl(this,4,t,gl,e,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,e){vl(this,8,t,fl,e,arguments.length>2?arguments[2]:void 0)}});gn(ll,"ArrayBuffer"),gn(al,"DataView");var Jl={ArrayBuffer:ll,DataView:al},xl=Jl.ArrayBuffer,Hl=a.ArrayBuffer;Ne({global:!0,forced:Hl!==xl},{ArrayBuffer:xl}),Hc("ArrayBuffer");var Nl=a.TypeError,kl=pt("toPrimitive"),Ul=Date.prototype;ot(Ul,kl)||ie(Ul,kl,(function(t){if(Kt(this),"string"===t||"default"===t)t="string";else if("number"!==t)throw Nl("Incorrect hint");return $(this,t)}));var wl=pt("hasInstance"),Tl=Function.prototype;wl in Tl||Ht.f(Tl,wl,{value:function(t){if(!J(this)||!x(t))return!1;var e=this.prototype;if(!x(e))return t instanceof this;for(;t=vi(t);)if(e===t)return!0;return!1}});var Fl=re.EXISTS,zl=Ht.f,Bl=Function.prototype,jl=f(Bl.toString),Ml=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,Ql=f(Ml.exec);d&&!Fl&&zl(Bl,"name",{configurable:!0,get:function(){try{return Ql(Ml,jl(this))[1]}catch(t){return""}}}),Ne({global:!0},{globalThis:a});var Pl=a.Array,Al=N("JSON","stringify"),Dl=f(/./.exec),El=f("".charAt),Ol=f("".charCodeAt),_l=f("".replace),ql=f(1..toString),$l=/[\uD800-\uDFFF]/g,to=/^[\uD800-\uDBFF]$/,eo=/^[\uDC00-\uDFFF]$/,no=function(t,e,n){var r=El(n,e-1),i=El(n,e+1);return Dl(to,t)&&!Dl(eo,i)||Dl(eo,t)&&!Dl(to,r)?"\\u"+ql(Ol(t,0),16):t},ro=u((function(){return'"\\udf06\\ud834"'!==Al("\udf06\ud834")||'"\\udead"'!==Al("\udead")}));Al&&Ne({target:"JSON",stat:!0,forced:ro},{stringify:function(t,e,n){for(var r=0,i=arguments.length,c=Pl(i);r<i;r++)c[r]=arguments[r];var l=Fe(Al,null,c);return"string"==typeof l?_l(l,$l,no):l}}),gn(a.JSON,"JSON",!0);var io=u((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}})),co=Object.isExtensible,lo=u((function(){co(1)}))||io?function(t){return!!x(t)&&((!io||"ArrayBuffer"!=v(t))&&(!co||co(t)))}:co,oo=!u((function(){return Object.isExtensible(Object.preventExtensions({}))})),ao=n((function(t){var e=Ht.f,n=!1,r=st("meta"),i=0,c=function(t){e(t,r,{value:{objectID:"O"+i++,weakData:{}}})},o=t.exports={enable:function(){o.enable=function(){},n=!0;var t=fe.f,e=f([].splice),i={};i[r]=1,t(i).length&&(fe.f=function(n){for(var i=t(n),c=0,l=i.length;c<l;c++)if(i[c]===r){e(i,c,1);break}return i},Ne({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:hn.f}))},fastKey:function(t,e){if(!x(t))return"symbol"==l(t)?t:("string"==typeof t?"S":"P")+t;if(!ot(t,r)){if(!lo(t))return"F";if(!e)return"E";c(t)}return t[r].objectID},getWeakData:function(t,e){if(!ot(t,r)){if(!lo(t))return!0;if(!e)return!1;c(t)}return t[r].weakData},onFreeze:function(t){return oo&&n&&lo(t)&&!ot(t,r)&&c(t),t}};Qt[r]=!0})),uo=a.TypeError,so=function(t,e){this.stopped=t,this.result=e},mo=so.prototype,ho=function(t,e,n){var r,i,c,o,a,u,d,s=n&&n.that,h=!(!n||!n.AS_ENTRIES),Z=!(!n||!n.IS_ITERATOR),b=!(!n||!n.INTERRUPTED),p=Vn(e,s),y=function(t){return r&&Dr(r,"normal",t),new so(!0,t)},I=function(t){return h?(Kt(t),b?p(t[0],t[1],y):p(t[0],t[1])):b?p(t,y):p(t)};if(Z)r=t;else{if(!(i=ei(t)))throw uo(D(t)+" is not iterable");if($r(i)){for(c=0,o=he(t);o>c;c++)if((a=I(t[c]))&&k(mo,a))return a;return new so(!1)}r=ri(t,i)}for(u=r.next;!(d=m(u,r)).done;){try{a=I(d.value)}catch(t){Dr(r,"throw",t)}if("object"==l(a)&&a&&k(mo,a))return a}return new so(!1)},Zo=function(t,e,n){var r,i;return ki&&J(r=e.constructor)&&r!==n&&x(i=r.prototype)&&i!==n.prototype&&ki(t,i),t},bo=function(t,e,n){var r=-1!==t.indexOf("Map"),i=-1!==t.indexOf("Weak"),c=r?"set":"add",l=a[t],o=l&&l.prototype,d=l,s={},m=function(t){var e=f(o[t]);ie(o,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(i&&!x(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return i&&!x(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(i&&!x(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(xe(t,!J(l)||!(i||o.forEach&&!u((function(){(new l).entries().next()})))))d=n.getConstructor(e,t,r,c),ao.enable();else if(xe(t,!0)){var h=new d,Z=h[c](i?{}:-0,1)!=h,b=u((function(){h.has(1)})),p=di((function(t){new l(t)})),y=!i&&u((function(){for(var t=new l,e=5;e--;)t[c](e,e);return!t.has(-0)}));p||((d=e((function(t,e){Bc(t,o);var n=Zo(new l,t,d);return null!=e&&ho(e,n[c],{that:n,AS_ENTRIES:r}),n}))).prototype=o,o.constructor=d),(b||y)&&(m("delete"),m("has"),r&&m("get")),(y||Z)&&m(c),i&&o.clear&&delete o.clear}return s[t]=d,Ne({global:!0,forced:d!=l},s),gn(d,t),i||n.setStrong(d,t,r),d},po=Ht.f,yo=ao.fastKey,Io=$t.set,Xo=$t.getterFor,Go={getConstructor:function(t,e,n,r){var i=t((function(t,i){Bc(t,c),Io(t,{type:e,index:ln(null),first:void 0,last:void 0,size:0}),d||(t.size=0),null!=i&&ho(i,t[r],{that:t,AS_ENTRIES:n})})),c=i.prototype,l=Xo(e),o=function(t,e,n){var r,i,c=l(t),o=a(t,e);return o?o.value=n:(c.last=o={index:i=yo(e,!0),key:e,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=o),r&&(r.next=o),d?c.size++:t.size++,"F"!==i&&(c.index[i]=o)),t},a=function(t,e){var n,r=l(t),i=yo(e);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==e)return n};return Fc(c,{clear:function(){for(var t=l(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,d?t.size=0:this.size=0},delete:function(t){var e=this,n=l(e),r=a(e,t);if(r){var i=r.next,c=r.previous;delete n.index[r.index],r.removed=!0,c&&(c.next=i),i&&(i.previous=c),n.first==r&&(n.first=i),n.last==r&&(n.last=c),d?n.size--:e.size--}return!!r},forEach:function(t){for(var e,n=l(this),r=Vn(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:n.first;)for(r(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!a(this,t)}}),Fc(c,n?{get:function(t){var e=a(this,t);return e&&e.value},set:function(t,e){return o(this,0===t?0:t,e)}}:{add:function(t){return o(this,t=0===t?0:t,t)}}),d&&po(c,"size",{get:function(){return l(this).size}}),i},setStrong:function(t,e,n){var r=e+" Iterator",i=Xo(e),c=Xo(r);ji(t,e,(function(t,e){Io(this,{type:r,target:t,state:i(t),kind:e,last:void 0})}),(function(){for(var t=c(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),Hc(e)}};bo("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),Go);var go=Math.log,fo=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:go(1+t)},Vo=Math.acosh,Wo=Math.log,vo=Math.sqrt,So=Math.LN2,Co=!Vo||710!=Math.floor(Vo(Number.MAX_VALUE))||Vo(1/0)!=1/0;Ne({target:"Math",stat:!0,forced:Co},{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Wo(t)+So:fo(t-1+vo(t-1)*vo(t+1))}});var Yo=Math.asinh,Ro=Math.log,Ko=Math.sqrt;Ne({target:"Math",stat:!0,forced:!(Yo&&1/Yo(0)>0)},{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):Ro(e+Ko(e*e+1)):e}});var Lo=Math.atanh,Jo=Math.log;Ne({target:"Math",stat:!0,forced:!(Lo&&1/Lo(-0)<0)},{atanh:function(t){return 0==(t=+t)?t:Jo((1+t)/(1-t))/2}});var xo=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1},Ho=Math.abs,No=Math.pow;Ne({target:"Math",stat:!0},{cbrt:function(t){return xo(t=+t)*No(Ho(t),1/3)}});var ko=Math.floor,Uo=Math.log,wo=Math.LOG2E;Ne({target:"Math",stat:!0},{clz32:function(t){return(t>>>=0)?31-ko(Uo(t+.5)*wo):32}});var To=Math.expm1,Fo=Math.exp,zo=!To||To(10)>22025.465794806718||To(10)<22025.465794806718||-2e-17!=To(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Fo(t)-1}:To,Bo=Math.cosh,jo=Math.abs,Mo=Math.E;Ne({target:"Math",stat:!0,forced:!Bo||Bo(710)===1/0},{cosh:function(t){var e=zo(jo(t)-1)+1;return(e+1/(e*Mo*Mo))*(Mo/2)}}),Ne({target:"Math",stat:!0,forced:zo!=Math.expm1},{expm1:zo});var Qo=Math.abs,Po=Math.pow,Ao=Po(2,-52),Do=Po(2,-23),Eo=Po(2,127)*(2-Do),Oo=Po(2,-126),_o=Math.fround||function(t){var e,n,r=Qo(t),i=xo(t);return r<Oo?i*function(t){return t+1/Ao-1/Ao}(r/Oo/Do)*Oo*Do:(n=(e=(1+Do/Ao)*r)-(e-r))>Eo||n!=n?i*(1/0):i*n};Ne({target:"Math",stat:!0},{fround:_o});var qo=Math.hypot,$o=Math.abs,ta=Math.sqrt,ea=!!qo&&qo(1/0,NaN)!==1/0;Ne({target:"Math",stat:!0,forced:ea},{hypot:function(t,e){for(var n,r,i=0,c=0,l=arguments.length,o=0;c<l;)o<(n=$o(arguments[c++]))?(i=i*(r=o/n)*r+1,o=n):i+=n>0?(r=n/o)*r:n;return o===1/0?1/0:o*ta(i)}});var na=Math.imul,ra=u((function(){return-5!=na(4294967295,5)||2!=na.length}));Ne({target:"Math",stat:!0,forced:ra},{imul:function(t,e){var n=65535,r=+t,i=+e,c=n&r,l=n&i;return 0|c*l+((n&r>>>16)*l+c*(n&i>>>16)<<16>>>0)}});var ia=Math.log,ca=Math.LOG10E;Ne({target:"Math",stat:!0},{log10:function(t){return ia(t)*ca}}),Ne({target:"Math",stat:!0},{log1p:fo});var la=Math.log,oa=Math.LN2;Ne({target:"Math",stat:!0},{log2:function(t){return la(t)/oa}}),Ne({target:"Math",stat:!0},{sign:xo});var aa=Math.abs,ua=Math.exp,da=Math.E,sa=u((function(){return-2e-17!=Math.sinh(-2e-17)}));Ne({target:"Math",stat:!0,forced:sa},{sinh:function(t){return aa(t=+t)<1?(zo(t)-zo(-t))/2:(ua(t-1)-ua(-t-1))*(da/2)}});var ma=Math.exp;Ne({target:"Math",stat:!0},{tanh:function(t){var e=zo(t=+t),n=zo(-t);return e==1/0?1:n==1/0?-1:(e-n)/(ma(t)+ma(-t))}}),gn(Math,"Math",!0);var ha=Math.ceil,Za=Math.floor;Ne({target:"Math",stat:!0},{trunc:function(t){return(t>0?Za:ha)(t)}});var ba=f(1..valueOf),pa="\t\n\v\f\r                 \u2028\u2029\ufeff",ya=f("".replace),Ia="["+pa+"]",Xa=RegExp("^"+Ia+Ia+"*"),Ga=RegExp(Ia+Ia+"*$"),ga=function(t){return function(e){var n=Oe(K(e));return 1&t&&(n=ya(n,Xa,"")),2&t&&(n=ya(n,Ga,"")),n}},fa={start:ga(1),end:ga(2),trim:ga(3)},Va=fe.f,Wa=Ct.f,va=Ht.f,Sa=fa.trim,Ca=a.Number,Ya=Ca.prototype,Ra=a.TypeError,Ka=f("".slice),La=f("".charCodeAt),Ja=function(t){var e=Xt(t,"number");return"bigint"==typeof e?e:xa(e)},xa=function(t){var e,n,r,i,c,l,o,a,u=Xt(t,"number");if(P(u))throw Ra("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=Sa(u),43===(e=La(u,0))||45===e){if(88===(n=La(u,2))||120===n)return NaN}else if(48===e){switch(La(u,1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(l=(c=Ka(u,2)).length,o=0;o<l;o++)if((a=La(c,o))<48||a>i)return NaN;return parseInt(c,r)}return+u};if(xe("Number",!Ca(" 0o1")||!Ca("0b1")||Ca("+0x1"))){for(var Ha,Na=function(t){var e=arguments.length<1?0:Ca(Ja(t)),n=this;return k(Ya,n)&&u((function(){ba(n)}))?Zo(Object(e),n,Na):e},ka=d?Va(Ca):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),Ua=0;ka.length>Ua;Ua++)ot(Ca,Ha=ka[Ua])&&!ot(Na,Ha)&&va(Na,Ha,Wa(Ca,Ha));Na.prototype=Ya,Ya.constructor=Na,ie(a,"Number",Na)}Ne({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var wa=a.isFinite,Ta=Number.isFinite||function(t){return"number"==typeof t&&wa(t)};Ne({target:"Number",stat:!0},{isFinite:Ta});var Fa=Math.floor,za=Number.isInteger||function(t){return!x(t)&&isFinite(t)&&Fa(t)===t};Ne({target:"Number",stat:!0},{isInteger:za}),Ne({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var Ba=Math.abs;Ne({target:"Number",stat:!0},{isSafeInteger:function(t){return za(t)&&Ba(t)<=9007199254740991}}),Ne({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),Ne({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var ja=fa.trim,Ma=f("".charAt),Qa=a.parseFloat,Pa=a.Symbol,Aa=Pa&&Pa.iterator,Da=1/Qa(pa+"-0")!=-1/0||Aa&&!u((function(){Qa(Object(Aa))}))?function(t){var e=ja(Oe(t)),n=Qa(e);return 0===n&&"-"==Ma(e,0)?-0:n}:Qa;Ne({target:"Number",stat:!0,forced:Number.parseFloat!=Da},{parseFloat:Da});var Ea=fa.trim,Oa=a.parseInt,_a=a.Symbol,qa=_a&&_a.iterator,$a=/^[+-]?0x/i,tu=f($a.exec),eu=8!==Oa(pa+"08")||22!==Oa(pa+"0x16")||qa&&!u((function(){Oa(Object(qa))}))?function(t,e){var n=Ea(Oe(t));return Oa(n,e>>>0||(tu($a,n)?16:10))}:Oa;Ne({target:"Number",stat:!0,forced:Number.parseInt!=eu},{parseInt:eu});var nu=a.RangeError,ru=function(t){var e=Oe(K(this)),n="",r=oe(t);if(r<0||r==1/0)throw nu("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(e+=e))1&r&&(n+=e);return n},iu=a.RangeError,cu=a.String,lu=Math.floor,ou=f(ru),au=f("".slice),uu=f(1..toFixed),du=function t(e,n,r){return 0===n?r:n%2==1?t(e,n-1,r*e):t(e*e,n/2,r)},su=function(t,e,n){for(var r=-1,i=n;++r<6;)i+=e*t[r],t[r]=i%1e7,i=lu(i/1e7)},mu=function(t,e){for(var n=6,r=0;--n>=0;)r+=t[n],t[n]=lu(r/e),r=r%e*1e7},hu=function(t){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==t[e]){var r=cu(t[e]);n=""===n?r:n+ou("0",7-r.length)+r}return n},Zu=u((function(){return"0.000"!==uu(8e-5,3)||"1"!==uu(.9,0)||"1.25"!==uu(1.255,2)||"1000000000000000128"!==uu(0xde0b6b3a7640080,0)}))||!u((function(){uu({})}));Ne({target:"Number",proto:!0,forced:Zu},{toFixed:function(t){var e,n,r,i,c=ba(this),l=oe(t),o=[0,0,0,0,0,0],a="",u="0";if(l<0||l>20)throw iu("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return cu(c);if(c<0&&(a="-",c=-c),c>1e-21)if(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*du(2,69,1))-69,n=e<0?c*du(2,-e,1):c/du(2,e,1),n*=4503599627370496,(e=52-e)>0){for(su(o,0,n),r=l;r>=7;)su(o,1e7,0),r-=7;for(su(o,du(10,r,1),0),r=e-1;r>=23;)mu(o,1<<23),r-=23;mu(o,1<<r),su(o,1,1),mu(o,2),u=hu(o)}else su(o,0,n),su(o,1<<-e,0),u=hu(o)+ou("0",l);return u=l>0?a+((i=u.length)<=l?"0."+ou("0",l-i)+u:au(u,0,i-l)+"."+au(u,i-l)):a+u}});var bu=Object.assign,pu=Object.defineProperty,yu=f([].concat),Iu=!bu||u((function(){if(d&&1!==bu({b:1},bu(pu({},"a",{enumerable:!0,get:function(){pu(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=bu({},t)[n]||_e(bu({},e)).join("")!=r}))?function(t,e){for(var n=ct(t),r=arguments.length,i=1,c=Ve.f,l=p.f;r>i;)for(var o,a=Y(arguments[i++]),u=c?yu(_e(a),c(a)):_e(a),s=u.length,h=0;s>h;)o=u[h++],d&&!m(l,a,o)||(n[o]=a[o]);return n}:bu;Ne({target:"Object",stat:!0,forced:Object.assign!==Iu},{assign:Iu});var Xu=!u((function(){if(!(vc&&vc<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete a[t]}}));d&&Ne({target:"Object",proto:!0,forced:Xu},{__defineGetter__:function(t,e){Ht.f(ct(this),t,{get:O(e),enumerable:!0,configurable:!0})}}),d&&Ne({target:"Object",proto:!0,forced:Xu},{__defineSetter__:function(t,e){Ht.f(ct(this),t,{set:O(e),enumerable:!0,configurable:!0})}});var Gu=p.f,gu=f(Gu),fu=f([].push),Vu=function(t){return function(e){for(var n,r=L(e),i=_e(r),c=i.length,l=0,o=[];c>l;)n=i[l++],d&&!gu(r,n)||fu(o,t?[n,r[n]]:r[n]);return o}},Wu={entries:Vu(!0),values:Vu(!1)},vu=Wu.entries;Ne({target:"Object",stat:!0},{entries:function(t){return vu(t)}});var Su=ao.onFreeze,Cu=Object.freeze,Yu=u((function(){Cu(1)}));Ne({target:"Object",stat:!0,forced:Yu,sham:!oo},{freeze:function(t){return Cu&&x(t)?Cu(Su(t)):t}}),Ne({target:"Object",stat:!0},{fromEntries:function(t){var e={};return ho(t,(function(t,n){on(e,t,n)}),{AS_ENTRIES:!0}),e}});var Ru=Ct.f,Ku=u((function(){Ru(1)}));Ne({target:"Object",stat:!0,forced:!d||Ku,sham:!d},{getOwnPropertyDescriptor:function(t,e){return Ru(L(t),e)}}),Ne({target:"Object",stat:!0,sham:!d},{getOwnPropertyDescriptors:function(t){for(var e,n,r=L(t),i=Ct.f,c=ve(r),l={},o=0;c.length>o;)void 0!==(n=i(r,e=c[o++]))&&on(l,e,n);return l}});var Lu=hn.f,Ju=u((function(){return!Object.getOwnPropertyNames(1)}));Ne({target:"Object",stat:!0,forced:Ju},{getOwnPropertyNames:Lu});var xu=u((function(){vi(1)}));Ne({target:"Object",stat:!0,forced:xu,sham:!gi},{getPrototypeOf:function(t){return vi(ct(t))}});var Hu=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};Ne({target:"Object",stat:!0},{is:Hu}),Ne({target:"Object",stat:!0,forced:Object.isExtensible!==lo},{isExtensible:lo});var Nu=Object.isFrozen,ku=u((function(){Nu(1)}));Ne({target:"Object",stat:!0,forced:ku||io},{isFrozen:function(t){return!x(t)||(!(!io||"ArrayBuffer"!=v(t))||!!Nu&&Nu(t))}});var Uu=Object.isSealed,wu=u((function(){Uu(1)}));Ne({target:"Object",stat:!0,forced:wu||io},{isSealed:function(t){return!x(t)||(!(!io||"ArrayBuffer"!=v(t))||!!Uu&&Uu(t))}});var Tu=u((function(){_e(1)}));Ne({target:"Object",stat:!0,forced:Tu},{keys:function(t){return _e(ct(t))}});var Fu=Ct.f;d&&Ne({target:"Object",proto:!0,forced:Xu},{__lookupGetter__:function(t){var e,n=ct(this),r=Gt(t);do{if(e=Fu(n,r))return e.get}while(n=vi(n))}});var zu=Ct.f;d&&Ne({target:"Object",proto:!0,forced:Xu},{__lookupSetter__:function(t){var e,n=ct(this),r=Gt(t);do{if(e=zu(n,r))return e.set}while(n=vi(n))}});var Bu=ao.onFreeze,ju=Object.preventExtensions,Mu=u((function(){ju(1)}));Ne({target:"Object",stat:!0,forced:Mu,sham:!oo},{preventExtensions:function(t){return ju&&x(t)?ju(Bu(t)):t}});var Qu=ao.onFreeze,Pu=Object.seal,Au=u((function(){Pu(1)}));Ne({target:"Object",stat:!0,forced:Au,sham:!oo},{seal:function(t){return Pu&&x(t)?Pu(Qu(t)):t}}),Ne({target:"Object",stat:!0},{setPrototypeOf:ki});var Du=Me?{}.toString:function(){return"[object "+De(this)+"]"};Me||ie(Object.prototype,"toString",Du,{unsafe:!0});var Eu=Wu.values;Ne({target:"Object",stat:!0},{values:function(t){return Eu(t)}}),Ne({global:!0,forced:parseFloat!=Da},{parseFloat:Da}),Ne({global:!0,forced:parseInt!=eu},{parseInt:eu});var Ou,_u,qu,$u,td=a.Promise,ed=a.TypeError,nd=function(t){if(Ln(t))return t;throw ed(D(t)+" is not a constructor")},rd=pt("species"),id=function(t,e){var n,r=Kt(t).constructor;return void 0===r||null==(n=Kt(r)[rd])?e:nd(n)},cd=/(?:ipad|iphone|ipod).*applewebkit/i.test(U),ld=a.setImmediate,od=a.clearImmediate,ad=a.process,ud=a.Dispatch,dd=a.Function,sd=a.MessageChannel,md=a.String,hd=0,Zd={};try{Ou=a.location}catch(t){}var bd=function(t){if(ot(Zd,t)){var e=Zd[t];delete Zd[t],e()}},pd=function(t){return function(){bd(t)}},yd=function(t){bd(t.data)},Id=function(t){a.postMessage(md(t),Ou.protocol+"//"+Ou.host)};ld&&od||(ld=function(t){var e=Zn(arguments,1);return Zd[++hd]=function(){Fe(J(t)?t:dd(t),void 0,e)},_u(hd),hd},od=function(t){delete Zd[t]},ac?_u=function(t){ad.nextTick(pd(t))}:ud&&ud.now?_u=function(t){ud.now(pd(t))}:sd&&!cd?($u=(qu=new sd).port2,qu.port1.onmessage=yd,_u=Vn($u.postMessage,$u)):a.addEventListener&&J(a.postMessage)&&!a.importScripts&&Ou&&"file:"!==Ou.protocol&&!u(Id)?(_u=Id,a.addEventListener("message",yd,!1)):_u="onreadystatechange"in Vt("script")?function(t){$e.appendChild(Vt("script")).onreadystatechange=function(){$e.removeChild(this),bd(t)}}:function(t){setTimeout(pd(t),0)});var Xd,Gd,gd,fd,Vd,Wd,vd,Sd,Cd={set:ld,clear:od},Yd=/ipad|iphone|ipod/i.test(U)&&void 0!==a.Pebble,Rd=/web0s(?!.*chrome)/i.test(U),Kd=Ct.f,Ld=Cd.set,Jd=a.MutationObserver||a.WebKitMutationObserver,xd=a.document,Hd=a.process,Nd=a.Promise,kd=Kd(a,"queueMicrotask"),Ud=kd&&kd.value;Ud||(Xd=function(){var t,e;for(ac&&(t=Hd.domain)&&t.exit();Gd;){e=Gd.fn,Gd=Gd.next;try{e()}catch(t){throw Gd?fd():gd=void 0,t}}gd=void 0,t&&t.enter()},cd||ac||Rd||!Jd||!xd?!Yd&&Nd&&Nd.resolve?((vd=Nd.resolve(void 0)).constructor=Nd,Sd=Vn(vd.then,vd),fd=function(){Sd(Xd)}):ac?fd=function(){Hd.nextTick(Xd)}:(Ld=Vn(Ld,a),fd=function(){Ld(Xd)}):(Vd=!0,Wd=xd.createTextNode(""),new Jd(Xd).observe(Wd,{characterData:!0}),fd=function(){Wd.data=Vd=!Vd}));var wd,Td,Fd,zd,Bd=Ud||function(t){var e={fn:t,next:void 0};gd&&(gd.next=e),Gd||(Gd=e,fd()),gd=e},jd=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=O(e),this.reject=O(n)},Md={f:function(t){return new jd(t)}},Qd=function(t,e){if(Kt(t),x(e)&&e.constructor===t)return e;var n=Md.f(t);return(0,n.resolve)(e),n.promise},Pd=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},Ad="object"==("undefined"==typeof window?"undefined":l(window)),Dd=Cd.set,Ed=pt("species"),Od="Promise",_d=$t.getterFor(Od),qd=$t.set,$d=$t.getterFor(Od),ts=td&&td.prototype,es=td,ns=ts,rs=a.TypeError,is=a.document,cs=a.process,ls=Md.f,os=ls,as=!!(is&&is.createEvent&&a.dispatchEvent),us=J(a.PromiseRejectionEvent),ds=!1,ss=xe(Od,(function(){var t=Ft(es),e=t!==String(es);if(!e&&66===B)return!0;if(B>=51&&/native code/.test(t))return!1;var n=new es((function(t){t(1)})),r=function(t){t((function(){}),(function(){}))};return(n.constructor={})[Ed]=r,!(ds=n.then((function(){}))instanceof r)||!e&&Ad&&!us})),ms=ss||!di((function(t){es.all(t).catch((function(){}))})),hs=function(t){var e;return!(!x(t)||!J(e=t.then))&&e},Zs=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;Bd((function(){for(var r=t.value,i=1==t.state,c=0;n.length>c;){var l,o,a,u=n[c++],d=i?u.ok:u.fail,s=u.resolve,h=u.reject,Z=u.domain;try{d?(i||(2===t.rejection&&Is(t),t.rejection=1),!0===d?l=r:(Z&&Z.enter(),l=d(r),Z&&(Z.exit(),a=!0)),l===u.promise?h(rs("Promise-chain cycle")):(o=hs(l))?m(o,l,s,h):s(l)):h(r)}catch(t){Z&&!a&&Z.exit(),h(t)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&ps(t)}))}},bs=function(t,e,n){var r,i;as?((r=is.createEvent("Event")).promise=e,r.reason=n,r.initEvent(t,!1,!0),a.dispatchEvent(r)):r={promise:e,reason:n},!us&&(i=a["on"+t])?i(r):"unhandledrejection"===t&&function(t,e){var n=a.console;n&&n.error&&(1==arguments.length?n.error(t):n.error(t,e))}("Unhandled promise rejection",n)},ps=function(t){m(Dd,a,(function(){var e,n=t.facade,r=t.value;if(ys(t)&&(e=Pd((function(){ac?cs.emit("unhandledRejection",r,n):bs("unhandledrejection",n,r)})),t.rejection=ac||ys(t)?2:1,e.error))throw e.value}))},ys=function(t){return 1!==t.rejection&&!t.parent},Is=function(t){m(Dd,a,(function(){var e=t.facade;ac?cs.emit("rejectionHandled",e):bs("rejectionhandled",e,t.value)}))},Xs=function(t,e,n){return function(r){t(e,r,n)}},Gs=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,Zs(t,!0))},gs=function t(e,n,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===n)throw rs("Promise can't be resolved itself");var i=hs(n);i?Bd((function(){var r={done:!1};try{m(i,n,Xs(t,r,e),Xs(Gs,r,e))}catch(t){Gs(r,t,e)}})):(e.value=n,e.state=1,Zs(e,!1))}catch(t){Gs({done:!1},t,e)}}};if(ss&&(ns=(es=function(t){Bc(this,ns),O(t),m(wd,this);var e=_d(this);try{t(Xs(gs,e),Xs(Gs,e))}catch(t){Gs(e,t)}}).prototype,(wd=function(t){qd(this,{type:Od,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=Fc(ns,{then:function(t,e){var n=$d(this),r=n.reactions,i=ls(id(this,es));return i.ok=!J(t)||t,i.fail=J(e)&&e,i.domain=ac?cs.domain:void 0,n.parent=!0,r[r.length]=i,0!=n.state&&Zs(n,!1),i.promise},catch:function(t){return this.then(void 0,t)}}),Td=function(){var t=new wd,e=_d(t);this.promise=t,this.resolve=Xs(gs,e),this.reject=Xs(Gs,e)},Md.f=ls=function(t){return t===es||t===Fd?new Td(t):os(t)},J(td)&&ts!==Object.prototype)){zd=ts.then,ds||(ie(ts,"then",(function(t,e){var n=this;return new es((function(t,e){m(zd,n,t,e)})).then(t,e)}),{unsafe:!0}),ie(ts,"catch",ns.catch,{unsafe:!0}));try{delete ts.constructor}catch(t){}ki&&ki(ts,ns)}Ne({global:!0,wrap:!0,forced:ss},{Promise:es}),gn(es,Od,!1),Hc(Od),Fd=N(Od),Ne({target:Od,stat:!0,forced:ss},{reject:function(t){var e=ls(this);return m(e.reject,void 0,t),e.promise}}),Ne({target:Od,stat:!0,forced:ss},{resolve:function(t){return Qd(this,t)}}),Ne({target:Od,stat:!0,forced:ms},{all:function(t){var e=this,n=ls(e),r=n.resolve,i=n.reject,c=Pd((function(){var n=O(e.resolve),c=[],l=0,o=1;ho(t,(function(t){var a=l++,u=!1;o++,m(n,e,t).then((function(t){u||(u=!0,c[a]=t,--o||r(c))}),i)})),--o||r(c)}));return c.error&&i(c.value),n.promise},race:function(t){var e=this,n=ls(e),r=n.reject,i=Pd((function(){var i=O(e.resolve);ho(t,(function(t){m(i,e,t).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}}),Ne({target:"Promise",stat:!0},{allSettled:function(t){var e=this,n=Md.f(e),r=n.resolve,i=n.reject,c=Pd((function(){var n=O(e.resolve),i=[],c=0,l=1;ho(t,(function(t){var o=c++,a=!1;l++,m(n,e,t).then((function(t){a||(a=!0,i[o]={status:"fulfilled",value:t},--l||r(i))}),(function(t){a||(a=!0,i[o]={status:"rejected",reason:t},--l||r(i))}))})),--l||r(i)}));return c.error&&i(c.value),n.promise}});var fs=!!td&&u((function(){td.prototype.finally.call({then:function(){}},(function(){}))}));if(Ne({target:"Promise",proto:!0,real:!0,forced:fs},{finally:function(t){var e=id(this,N("Promise")),n=J(t);return this.then(n?function(n){return Qd(e,t()).then((function(){return n}))}:t,n?function(n){return Qd(e,t()).then((function(){throw n}))}:t)}}),J(td)){var Vs=N("Promise").prototype.finally;td.prototype.finally!==Vs&&ie(td.prototype,"finally",Vs,{unsafe:!0})}var Ws=!u((function(){Reflect.apply((function(){}))}));Ne({target:"Reflect",stat:!0,forced:Ws},{apply:function(t,e,n){return Fe(O(t),e,Kt(n))}});var vs=a.Function,Ss=f([].concat),Cs=f([].join),Ys={},Rs=function(t,e,n){if(!ot(Ys,e)){for(var r=[],i=0;i<e;i++)r[i]="a["+i+"]";Ys[e]=vs("C,a","return new C("+Cs(r,",")+")")}return Ys[e](t,n)},Ks=vs.bind||function(t){var e=O(this),n=e.prototype,r=Zn(arguments,1),i=function(){var n=Ss(r,Zn(arguments));return this instanceof i?Rs(e,n.length,n):e.apply(t,n)};return x(n)&&(i.prototype=n),i},Ls=N("Reflect","construct"),Js=Object.prototype,xs=[].push,Hs=u((function(){function t(){}return!(Ls((function(){}),[],t)instanceof t)})),Ns=!u((function(){Ls((function(){}))})),ks=Hs||Ns;Ne({target:"Reflect",stat:!0,forced:ks,sham:ks},{construct:function(t,e){nd(t),Kt(e);var n=arguments.length<3?t:nd(arguments[2]);if(Ns&&!Hs)return Ls(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var r=[null];return Fe(xs,r,e),new(Fe(Ks,t,r))}var i=n.prototype,c=ln(x(i)?i:Js),l=Fe(t,c,e);return x(l)?l:c}});var Us=u((function(){Reflect.defineProperty(Ht.f({},1,{value:1}),1,{value:2})}));Ne({target:"Reflect",stat:!0,forced:Us,sham:!d},{defineProperty:function(t,e,n){Kt(t);var r=Gt(e);Kt(n);try{return Ht.f(t,r,n),!0}catch(t){return!1}}});var ws=Ct.f;Ne({target:"Reflect",stat:!0},{deleteProperty:function(t,e){var n=ws(Kt(t),e);return!(n&&!n.configurable)&&delete t[e]}});var Ts=function(t){return void 0!==t&&(ot(t,"value")||ot(t,"writable"))};Ne({target:"Reflect",stat:!0},{get:function t(e,n){var r,i,c=arguments.length<3?e:arguments[2];return Kt(e)===c?e[n]:(r=Ct.f(e,n))?Ts(r)?r.value:void 0===r.get?void 0:m(r.get,c):x(i=vi(e))?t(i,n,c):void 0}}),Ne({target:"Reflect",stat:!0,sham:!d},{getOwnPropertyDescriptor:function(t,e){return Ct.f(Kt(t),e)}}),Ne({target:"Reflect",stat:!0,sham:!gi},{getPrototypeOf:function(t){return vi(Kt(t))}}),Ne({target:"Reflect",stat:!0},{has:function(t,e){return e in t}}),Ne({target:"Reflect",stat:!0},{isExtensible:function(t){return Kt(t),lo(t)}}),Ne({target:"Reflect",stat:!0},{ownKeys:ve}),Ne({target:"Reflect",stat:!0,sham:!oo},{preventExtensions:function(t){Kt(t);try{var e=N("Object","preventExtensions");return e&&e(t),!0}catch(t){return!1}}});var Fs=u((function(){var t=function(){},e=Ht.f(new t,"a",{configurable:!0});return!1!==Reflect.set(t.prototype,"a",1,e)}));Ne({target:"Reflect",stat:!0,forced:Fs},{set:function t(e,n,r){var i,c,l,o=arguments.length<4?e:arguments[3],a=Ct.f(Kt(e),n);if(!a){if(x(c=vi(e)))return t(c,n,r,o);a=y(0)}if(Ts(a)){if(!1===a.writable||!x(o))return!1;if(i=Ct.f(o,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,Ht.f(o,n,i)}else Ht.f(o,n,y(0,r))}else{if(void 0===(l=a.set))return!1;m(l,o,r)}return!0}}),ki&&Ne({target:"Reflect",stat:!0},{setPrototypeOf:function(t,e){Kt(t),Ni(e);try{return ki(t,e),!0}catch(t){return!1}}});var zs=pt("match"),Bs=function(t){var e;return x(t)&&(void 0!==(e=t[zs])?!!e:"RegExp"==v(t))},js=function(){var t=Kt(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e},Ms=a.RegExp,Qs=u((function(){var t=Ms("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),Ps=Qs||u((function(){return!Ms("a","y").sticky})),As=Qs||u((function(){var t=Ms("^r","gy");return t.lastIndex=2,null!=t.exec("str")})),Ds={BROKEN_CARET:As,MISSED_STICKY:Ps,UNSUPPORTED_Y:Qs},Es=a.RegExp,Os=u((function(){var t=Es(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)})),_s=a.RegExp,qs=u((function(){var t=_s("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")})),$s=Ht.f,tm=fe.f,em=$t.enforce,nm=pt("match"),rm=a.RegExp,im=rm.prototype,cm=a.SyntaxError,lm=f(js),om=f(im.exec),am=f("".charAt),um=f("".replace),dm=f("".indexOf),sm=f("".slice),mm=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,hm=/a/g,Zm=/a/g,bm=new rm(hm)!==hm,pm=Ds.MISSED_STICKY,ym=Ds.UNSUPPORTED_Y,Im=d&&(!bm||pm||Os||qs||u((function(){return Zm[nm]=!1,rm(hm)!=hm||rm(Zm)==Zm||"/a/i"!=rm(hm,"i")})));if(xe("RegExp",Im)){for(var Xm=function(t,e){var n,r,i,c,l,o,a=k(im,this),u=Bs(t),d=void 0===e,s=[],m=t;if(!a&&u&&d&&t.constructor===Xm)return t;if((u||k(im,t))&&(t=t.source,d&&(e="flags"in m?m.flags:lm(m))),t=void 0===t?"":Oe(t),e=void 0===e?"":Oe(e),m=t,Os&&"dotAll"in hm&&(r=!!e&&dm(e,"s")>-1)&&(e=um(e,/s/g,"")),n=e,pm&&"sticky"in hm&&(i=!!e&&dm(e,"y")>-1)&&ym&&(e=um(e,/y/g,"")),qs&&(c=function(t){for(var e,n=t.length,r=0,i="",c=[],l={},o=!1,a=!1,u=0,d="";r<=n;r++){if("\\"===(e=am(t,r)))e+=am(t,++r);else if("]"===e)o=!1;else if(!o)switch(!0){case"["===e:o=!0;break;case"("===e:om(mm,sm(t,r+1))&&(r+=2,a=!0),i+=e,u++;continue;case">"===e&&a:if(""===d||ot(l,d))throw new cm("Invalid capture group name");l[d]=!0,c[c.length]=[d,u],a=!1,d="";continue}a?d+=e:i+=e}return[i,c]}(t),t=c[0],s=c[1]),l=Zo(rm(t,e),a?this:im,Xm),(r||i||s.length)&&(o=em(l),r&&(o.dotAll=!0,o.raw=Xm(function(t){for(var e,n=t.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(e=am(t,r))?c||"."!==e?("["===e?c=!0:"]"===e&&(c=!1),i+=e):i+="[\\s\\S]":i+=e+am(t,++r);return i}(t),n)),i&&(o.sticky=!0),s.length&&(o.groups=s)),t!==m)try{Nt(l,"source",""===m?"(?:)":m)}catch(t){}return l},Gm=function(t){t in Xm||$s(Xm,t,{configurable:!0,get:function(){return rm[t]},set:function(e){rm[t]=e}})},gm=tm(rm),fm=0;gm.length>fm;)Gm(gm[fm++]);im.constructor=Xm,Xm.prototype=im,ie(a,"RegExp",Xm)}Hc("RegExp");var Vm=$t.get,Wm=rt("native-string-replace",String.prototype.replace),vm=RegExp.prototype.exec,Sm=vm,Cm=f("".charAt),Ym=f("".indexOf),Rm=f("".replace),Km=f("".slice),Lm=function(){var t=/a/,e=/b*/g;return m(vm,t,"a"),m(vm,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),Jm=Ds.BROKEN_CARET,xm=void 0!==/()??/.exec("")[1];(Lm||xm||Jm||Os||qs)&&(Sm=function(t){var e,n,r,i,c,l,o,a=this,u=Vm(a),d=Oe(t),s=u.raw;if(s)return s.lastIndex=a.lastIndex,e=m(Sm,s,d),a.lastIndex=s.lastIndex,e;var h=u.groups,Z=Jm&&a.sticky,b=m(js,a),p=a.source,y=0,I=d;if(Z&&(b=Rm(b,"y",""),-1===Ym(b,"g")&&(b+="g"),I=Km(d,a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==Cm(d,a.lastIndex-1))&&(p="(?: "+p+")",I=" "+I,y++),n=new RegExp("^(?:"+p+")",b)),xm&&(n=new RegExp("^"+p+"$(?!\\s)",b)),Lm&&(r=a.lastIndex),i=m(vm,Z?n:a,I),Z?i?(i.input=Km(i.input,y),i[0]=Km(i[0],y),i.index=a.lastIndex,a.lastIndex+=i[0].length):a.lastIndex=0:Lm&&i&&(a.lastIndex=a.global?i.index+i[0].length:r),xm&&i&&i.length>1&&m(Wm,i[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(i[c]=void 0)})),i&&h)for(i.groups=l=ln(null),c=0;c<h.length;c++)l[(o=h[c])[0]]=i[o[1]];return i});var Hm=Sm;Ne({target:"RegExp",proto:!0,forced:/./.exec!==Hm},{exec:Hm});var Nm=RegExp.prototype;d&&u((function(){return"sy"!==Object.getOwnPropertyDescriptor(Nm,"flags").get.call({dotAll:!0,sticky:!0})}))&&Ht.f(Nm,"flags",{configurable:!0,get:js});var km=Ds.MISSED_STICKY,Um=Ht.f,wm=$t.get,Tm=RegExp.prototype,Fm=a.TypeError;d&&km&&Um(Tm,"sticky",{configurable:!0,get:function(){if(this!==Tm){if("RegExp"===v(this))return!!wm(this).sticky;throw Fm("Incompatible receiver, RegExp required")}}});var zm=function(){var t=!1,e=/[ac]/;return e.exec=function(){return t=!0,/./.exec.apply(this,arguments)},!0===e.test("abc")&&t}(),Bm=a.Error,jm=f(/./.test);Ne({target:"RegExp",proto:!0,forced:!zm},{test:function(t){var e=this.exec;if(!J(e))return jm(this,t);var n=m(e,this,t);if(null!==n&&!x(n))throw new Bm("RegExp exec method returned something other than an Object or null");return!!n}});var Mm=re.PROPER,Qm=RegExp.prototype,Pm=Qm.toString,Am=f(js),Dm=u((function(){return"/a/b"!=Pm.call({source:"a",flags:"b"})})),Em=Mm&&"toString"!=Pm.name;(Dm||Em)&&ie(RegExp.prototype,"toString",(function(){var t=Kt(this),e=Oe(t.source),n=t.flags;return"/"+e+"/"+Oe(void 0===n&&k(Qm,t)&&!("flags"in Qm)?Am(t):n)}),{unsafe:!0}),bo("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),Go);var Om=f("".charAt),_m=f("".charCodeAt),qm=f("".slice),$m=function(t){return function(e,n){var r,i,c=Oe(K(e)),l=oe(n),o=c.length;return l<0||l>=o?t?"":void 0:(r=_m(c,l))<55296||r>56319||l+1===o||(i=_m(c,l+1))<56320||i>57343?t?Om(c,l):r:t?qm(c,l,l+2):i-56320+(r-55296<<10)+65536}},th={codeAt:$m(!1),charAt:$m(!0)},eh=th.codeAt;Ne({target:"String",proto:!0},{codePointAt:function(t){return eh(this,t)}});var nh,rh=a.TypeError,ih=function(t){if(Bs(t))throw rh("The method doesn't accept regular expressions");return t},ch=pt("match"),lh=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[ch]=!1,"/./"[t](e)}catch(t){}}return!1},oh=Ct.f,ah=f("".endsWith),uh=f("".slice),dh=Math.min,sh=lh("endsWith"),mh=!(sh||(nh=oh(String.prototype,"endsWith"),!nh||nh.writable));Ne({target:"String",proto:!0,forced:!mh&&!sh},{endsWith:function(t){var e=Oe(K(this));ih(t);var n=arguments.length>1?arguments[1]:void 0,r=e.length,i=void 0===n?r:dh(me(n),r),c=Oe(t);return ah?ah(e,c,i):uh(e,i-c.length,i)===c}});var hh=a.RangeError,Zh=String.fromCharCode,bh=String.fromCodePoint,ph=f([].join),yh=!!bh&&1!=bh.length;Ne({target:"String",stat:!0,forced:yh},{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,i=0;r>i;){if(e=+arguments[i++],de(e,1114111)!==e)throw hh(e+" is not a valid code point");n[i]=e<65536?Zh(e):Zh(55296+((e-=65536)>>10),e%1024+56320)}return ph(n,"")}});var Ih=f("".indexOf);Ne({target:"String",proto:!0,forced:!lh("includes")},{includes:function(t){return!!~Ih(Oe(K(this)),Oe(ih(t)),arguments.length>1?arguments[1]:void 0)}});var Xh=th.charAt,Gh=$t.set,gh=$t.getterFor("String Iterator");ji(String,"String",(function(t){Gh(this,{type:"String Iterator",string:Oe(t),index:0})}),(function(){var t,e=gh(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=Xh(n,r),e.index+=t.length,{value:t,done:!1})}));var fh=pt("species"),Vh=RegExp.prototype,Wh=function(t,e,n,r){var i=pt(t),c=!u((function(){var e={};return e[i]=function(){return 7},7!=""[t](e)})),l=c&&!u((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[fh]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return e=!0,null},n[i](""),!e}));if(!c||!l||n){var o=f(/./[i]),a=e(i,""[t],(function(t,e,n,r,i){var l=f(t),a=e.exec;return a===Hm||a===Vh.exec?c&&!i?{done:!0,value:o(e,n,r)}:{done:!0,value:l(n,e,r)}:{done:!1}}));ie(String.prototype,t,a[0]),ie(Vh,i,a[1])}r&&Nt(Vh[i],"sham",!0)},vh=th.charAt,Sh=function(t,e,n){return e+(n?vh(t,e).length:1)},Ch=a.TypeError,Yh=function(t,e){var n=t.exec;if(J(n)){var r=m(n,t,e);return null!==r&&Kt(r),r}if("RegExp"===v(t))return m(Hm,t,e);throw Ch("RegExp#exec called on incompatible receiver")};Wh("match",(function(t,e,n){return[function(e){var n=K(this),r=null==e?void 0:_(e,t);return r?m(r,e,n):new RegExp(e)[t](Oe(n))},function(t){var r=Kt(this),i=Oe(t),c=n(e,r,i);if(c.done)return c.value;if(!r.global)return Yh(r,i);var l=r.unicode;r.lastIndex=0;for(var o,a=[],u=0;null!==(o=Yh(r,i));){var d=Oe(o[0]);a[u]=d,""===d&&(r.lastIndex=Sh(i,me(r.lastIndex),l)),u++}return 0===u?null:a}]}));var Rh=pt("matchAll"),Kh=$t.set,Lh=$t.getterFor("RegExp String Iterator"),Jh=RegExp.prototype,xh=a.TypeError,Hh=f(js),Nh=f("".indexOf),kh=f("".matchAll),Uh=!!kh&&!u((function(){kh("a",/./)})),wh=Ji((function(t,e,n,r){Kh(this,{type:"RegExp String Iterator",regexp:t,string:e,global:n,unicode:r,done:!1})}),"RegExp String",(function(){var t=Lh(this);if(t.done)return{value:void 0,done:!0};var e=t.regexp,n=t.string,r=Yh(e,n);return null===r?{value:void 0,done:t.done=!0}:t.global?(""===Oe(r[0])&&(e.lastIndex=Sh(n,me(e.lastIndex),t.unicode)),{value:r,done:!1}):(t.done=!0,{value:r,done:!1})})),Th=function(t){var e,n,r,i,c,l,o=Kt(this),a=Oe(t);return e=id(o,RegExp),void 0===(n=o.flags)&&k(Jh,o)&&!("flags"in Jh)&&(n=Hh(o)),r=void 0===n?"":Oe(n),i=new e(e===RegExp?o.source:o,r),c=!!~Nh(r,"g"),l=!!~Nh(r,"u"),i.lastIndex=me(o.lastIndex),new wh(i,a,c,l)};Ne({target:"String",proto:!0,forced:Uh},{matchAll:function(t){var e,n,r,i=K(this);if(null!=t){if(Bs(t)&&(e=Oe(K("flags"in Jh?t.flags:Hh(t))),!~Nh(e,"g")))throw xh("`.matchAll` does not allow non-global regexes");if(Uh)return kh(i,t);if(r=_(t,Rh))return m(r,t,i)}else if(Uh)return kh(i,t);return n=Oe(i),new RegExp(t,"g")[Rh](n)}}),Rh in Jh||ie(Jh,Rh,Th);var Fh=f(ru),zh=f("".slice),Bh=Math.ceil,jh=function(t){return function(e,n,r){var i,c,l=Oe(K(e)),o=me(n),a=l.length,u=void 0===r?" ":Oe(r);return o<=a||""==u?l:((c=Fh(u,Bh((i=o-a)/u.length))).length>i&&(c=zh(c,0,i)),t?l+c:c+l)}},Mh={start:jh(!1),end:jh(!0)},Qh=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(U),Ph=Mh.end;Ne({target:"String",proto:!0,forced:Qh},{padEnd:function(t){return Ph(this,t,arguments.length>1?arguments[1]:void 0)}});var Ah=Mh.start;Ne({target:"String",proto:!0,forced:Qh},{padStart:function(t){return Ah(this,t,arguments.length>1?arguments[1]:void 0)}});var Dh=f([].push),Eh=f([].join);Ne({target:"String",stat:!0},{raw:function(t){for(var e=L(ct(t).raw),n=he(e),r=arguments.length,i=[],c=0;n>c;){if(Dh(i,Oe(e[c++])),c===n)return Eh(i,"");c<r&&Dh(i,Oe(arguments[c]))}}}),Ne({target:"String",proto:!0},{repeat:ru});var Oh=Math.floor,_h=f("".charAt),qh=f("".replace),$h=f("".slice),tZ=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,eZ=/\$([$&'`]|\d{1,2})/g,nZ=function(t,e,n,r,i,c){var l=n+t.length,o=r.length,a=eZ;return void 0!==i&&(i=ct(i),a=tZ),qh(c,a,(function(c,a){var u;switch(_h(a,0)){case"$":return"$";case"&":return t;case"`":return $h(e,0,n);case"'":return $h(e,l);case"<":u=i[$h(a,1,-1)];break;default:var d=+a;if(0===d)return c;if(d>o){var s=Oh(d/10);return 0===s?c:s<=o?void 0===r[s-1]?_h(a,1):r[s-1]+_h(a,1):c}u=r[d-1]}return void 0===u?"":u}))},rZ=pt("replace"),iZ=Math.max,cZ=Math.min,lZ=f([].concat),oZ=f([].push),aZ=f("".indexOf),uZ=f("".slice),dZ=function(t){return void 0===t?t:String(t)},sZ="$0"==="a".replace(/./,"$0"),mZ=!!/./[rZ]&&""===/./[rZ]("a","$0"),hZ=!u((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));Wh("replace",(function(t,e,n){var r=mZ?"$":"$0";return[function(t,n){var r=K(this),i=null==t?void 0:_(t,rZ);return i?m(i,t,r,n):m(e,Oe(r),t,n)},function(t,i){var c=Kt(this),l=Oe(t);if("string"==typeof i&&-1===aZ(i,r)&&-1===aZ(i,"$<")){var o=n(e,c,l,i);if(o.done)return o.value}var a=J(i);a||(i=Oe(i));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=Yh(c,l);if(null===m)break;if(oZ(s,m),!u)break;""===Oe(m[0])&&(c.lastIndex=Sh(l,me(c.lastIndex),d))}for(var h="",Z=0,b=0;b<s.length;b++){for(var p=Oe((m=s[b])[0]),y=iZ(cZ(oe(m.index),l.length),0),I=[],X=1;X<m.length;X++)oZ(I,dZ(m[X]));var G=m.groups;if(a){var g=lZ([p],I,y,l);void 0!==G&&oZ(g,G);var f=Oe(Fe(i,void 0,g))}else f=nZ(p,l,y,I,G,i);y>=Z&&(h+=uZ(l,Z,y)+f,Z=y+p.length)}return h+uZ(l,Z)}]}),!hZ||!sZ||mZ),Wh("search",(function(t,e,n){return[function(e){var n=K(this),r=null==e?void 0:_(e,t);return r?m(r,e,n):new RegExp(e)[t](Oe(n))},function(t){var r=Kt(this),i=Oe(t),c=n(e,r,i);if(c.done)return c.value;var l=r.lastIndex;Hu(l,0)||(r.lastIndex=0);var o=Yh(r,i);return Hu(r.lastIndex,l)||(r.lastIndex=l),null===o?-1:o.index}]}));var ZZ=Ds.UNSUPPORTED_Y,bZ=Math.min,pZ=[].push,yZ=f(/./.exec),IZ=f(pZ),XZ=f("".slice),GZ=!u((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));Wh("split",(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=Oe(K(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===t)return[r];if(!Bs(t))return m(e,r,t,i);for(var c,l,o,a=[],u=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),d=0,s=new RegExp(t.source,u+"g");(c=m(Hm,s,r))&&!((l=s.lastIndex)>d&&(IZ(a,XZ(r,d,c.index)),c.length>1&&c.index<r.length&&Fe(pZ,a,dn(c,1)),o=c[0].length,d=l,a.length>=i));)s.lastIndex===c.index&&s.lastIndex++;return d===r.length?!o&&yZ(s,"")||IZ(a,""):IZ(a,XZ(r,d)),a.length>i?dn(a,0,i):a}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:m(e,this,t,n)}:e,[function(e,n){var i=K(this),c=null==e?void 0:_(e,t);return c?m(c,e,i,n):m(r,Oe(i),e,n)},function(t,i){var c=Kt(this),l=Oe(t),o=n(r,c,l,i,r!==e);if(o.done)return o.value;var a=id(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(ZZ?"g":"y"),s=new a(ZZ?"^(?:"+c.source+")":c,d),m=void 0===i?4294967295:i>>>0;if(0===m)return[];if(0===l.length)return null===Yh(s,l)?[l]:[];for(var h=0,Z=0,b=[];Z<l.length;){s.lastIndex=ZZ?0:Z;var p,y=Yh(s,ZZ?XZ(l,Z):l);if(null===y||(p=bZ(me(s.lastIndex+(ZZ?Z:0)),l.length))===h)Z=Sh(l,Z,u);else{if(IZ(b,XZ(l,h,Z)),b.length===m)return b;for(var I=1;I<=y.length-1;I++)if(IZ(b,y[I]),b.length===m)return b;Z=h=p}}return IZ(b,XZ(l,h)),b}]}),!GZ,ZZ);var gZ=Ct.f,fZ=f("".startsWith),VZ=f("".slice),WZ=Math.min,vZ=lh("startsWith"),SZ=!vZ&&!!function(){var t=gZ(String.prototype,"startsWith");return t&&!t.writable}();Ne({target:"String",proto:!0,forced:!SZ&&!vZ},{startsWith:function(t){var e=Oe(K(this));ih(t);var n=me(WZ(arguments.length>1?arguments[1]:void 0,e.length)),r=Oe(t);return fZ?fZ(e,r,n):VZ(e,n,n+r.length)===r}});var CZ=re.PROPER,YZ=function(t){return u((function(){return!!pa[t]()||"​…᠎"!=="​…᠎"[t]()||CZ&&pa[t].name!==t}))},RZ=fa.trim;Ne({target:"String",proto:!0,forced:YZ("trim")},{trim:function(){return RZ(this)}});var KZ=fa.end,LZ=YZ("trimEnd"),JZ=LZ?function(){return KZ(this)}:"".trimEnd;Ne({target:"String",proto:!0,name:"trimEnd",forced:LZ},{trimEnd:JZ,trimRight:JZ});var xZ=fa.start,HZ=YZ("trimStart"),NZ=HZ?function(){return xZ(this)}:"".trimStart;Ne({target:"String",proto:!0,name:"trimStart",forced:HZ},{trimStart:NZ,trimLeft:NZ});var kZ=/"/g,UZ=f("".replace),wZ=function(t,e,n,r){var i=Oe(K(t)),c="<"+e;return""!==n&&(c+=" "+n+'="'+UZ(Oe(r),kZ,"&quot;")+'"'),c+">"+i+"</"+e+">"},TZ=function(t){return u((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))};Ne({target:"String",proto:!0,forced:TZ("anchor")},{anchor:function(t){return wZ(this,"a","name",t)}}),Ne({target:"String",proto:!0,forced:TZ("big")},{big:function(){return wZ(this,"big","","")}}),Ne({target:"String",proto:!0,forced:TZ("blink")},{blink:function(){return wZ(this,"blink","","")}}),Ne({target:"String",proto:!0,forced:TZ("bold")},{bold:function(){return wZ(this,"b","","")}}),Ne({target:"String",proto:!0,forced:TZ("fixed")},{fixed:function(){return wZ(this,"tt","","")}}),Ne({target:"String",proto:!0,forced:TZ("fontcolor")},{fontcolor:function(t){return wZ(this,"font","color",t)}}),Ne({target:"String",proto:!0,forced:TZ("fontsize")},{fontsize:function(t){return wZ(this,"font","size",t)}}),Ne({target:"String",proto:!0,forced:TZ("italics")},{italics:function(){return wZ(this,"i","","")}}),Ne({target:"String",proto:!0,forced:TZ("link")},{link:function(t){return wZ(this,"a","href",t)}}),Ne({target:"String",proto:!0,forced:TZ("small")},{small:function(){return wZ(this,"small","","")}}),Ne({target:"String",proto:!0,forced:TZ("strike")},{strike:function(){return wZ(this,"strike","","")}}),Ne({target:"String",proto:!0,forced:TZ("sub")},{sub:function(){return wZ(this,"sub","","")}}),Ne({target:"String",proto:!0,forced:TZ("sup")},{sup:function(){return wZ(this,"sup","","")}});var FZ,zZ,BZ,jZ=Ht.f,MZ=a.Int8Array,QZ=MZ&&MZ.prototype,PZ=a.Uint8ClampedArray,AZ=PZ&&PZ.prototype,DZ=MZ&&vi(MZ),EZ=QZ&&vi(QZ),OZ=Object.prototype,_Z=a.TypeError,qZ=pt("toStringTag"),$Z=st("TYPED_ARRAY_TAG"),tb=st("TYPED_ARRAY_CONSTRUCTOR"),eb=Tc&&!!ki&&"Opera"!==De(a.opera),nb=!1,rb={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},ib={BigInt64Array:8,BigUint64Array:8},cb=function(t){if(!x(t))return!1;var e=De(t);return ot(rb,e)||ot(ib,e)};for(FZ in rb)(BZ=(zZ=a[FZ])&&zZ.prototype)?Nt(BZ,tb,zZ):eb=!1;for(FZ in ib)(BZ=(zZ=a[FZ])&&zZ.prototype)&&Nt(BZ,tb,zZ);if((!eb||!J(DZ)||DZ===Function.prototype)&&(DZ=function(){throw _Z("Incorrect invocation")},eb))for(FZ in rb)a[FZ]&&ki(a[FZ],DZ);if((!eb||!EZ||EZ===OZ)&&(EZ=DZ.prototype,eb))for(FZ in rb)a[FZ]&&ki(a[FZ].prototype,EZ);if(eb&&vi(AZ)!==EZ&&ki(AZ,EZ),d&&!ot(EZ,qZ))for(FZ in nb=!0,jZ(EZ,qZ,{get:function(){return x(this)?this[$Z]:void 0}}),rb)a[FZ]&&Nt(a[FZ],$Z,FZ);var lb={NATIVE_ARRAY_BUFFER_VIEWS:eb,TYPED_ARRAY_CONSTRUCTOR:tb,TYPED_ARRAY_TAG:nb&&$Z,aTypedArray:function(t){if(cb(t))return t;throw _Z("Target is not a typed array")},aTypedArrayConstructor:function(t){if(J(t)&&(!ki||k(DZ,t)))return t;throw _Z(D(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n){if(d){if(n)for(var r in rb){var i=a[r];if(i&&ot(i.prototype,t))try{delete i.prototype[t]}catch(t){}}EZ[t]&&!n||ie(EZ,t,n?e:eb&&QZ[t]||e)}},exportTypedArrayStaticMethod:function(t,e,n){var r,i;if(d){if(ki){if(n)for(r in rb)if((i=a[r])&&ot(i,t))try{delete i[t]}catch(t){}if(DZ[t]&&!n)return;try{return ie(DZ,t,n?e:eb&&DZ[t]||e)}catch(t){}}for(r in rb)!(i=a[r])||i[t]&&!n||ie(i,t,e)}},isView:function(t){if(!x(t))return!1;var e=De(t);return"DataView"===e||ot(rb,e)||ot(ib,e)},isTypedArray:cb,TypedArray:DZ,TypedArrayPrototype:EZ},ob=lb.NATIVE_ARRAY_BUFFER_VIEWS,ab=a.ArrayBuffer,ub=a.Int8Array,db=!ob||!u((function(){ub(1)}))||!u((function(){new ub(-1)}))||!di((function(t){new ub,new ub(null),new ub(1.5),new ub(t)}),!0)||u((function(){return 1!==new ub(new ab(2),1,void 0).length})),sb=a.RangeError,mb=a.RangeError,hb=function(t,e){var n=function(t){var e=oe(t);if(e<0)throw sb("The argument can't be less than 0");return e}(t);if(n%e)throw mb("Wrong offset");return n},Zb=lb.aTypedArrayConstructor,bb=function(t){var e,n,r,i,c,l,o=nd(this),a=ct(t),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,h=ei(a);if(h&&!$r(h))for(l=(c=ri(a,h)).next,a=[];!(i=m(l,c)).done;)a.push(i.value);for(s&&u>2&&(d=Vn(d,arguments[2])),n=he(a),r=new(Zb(o))(n),e=0;n>e;e++)r[e]=s?d(a[e],e):a[e];return r},pb=n((function(t){var e=fe.f,n=Un.forEach,r=$t.get,i=$t.set,c=Ht.f,l=Ct.f,o=Math.round,u=a.RangeError,s=Jl.ArrayBuffer,h=s.prototype,Z=Jl.DataView,b=lb.NATIVE_ARRAY_BUFFER_VIEWS,p=lb.TYPED_ARRAY_CONSTRUCTOR,I=lb.TYPED_ARRAY_TAG,X=lb.TypedArray,G=lb.TypedArrayPrototype,g=lb.aTypedArrayConstructor,f=lb.isTypedArray,V="BYTES_PER_ELEMENT",W="Wrong length",v=function(t,e){g(t);for(var n=0,r=e.length,i=new t(r);r>n;)i[n]=e[n++];return i},S=function(t,e){c(t,e,{get:function(){return r(this)[e]}})},C=function(t){var e;return k(h,t)||"ArrayBuffer"==(e=De(t))||"SharedArrayBuffer"==e},Y=function(t,e){return f(t)&&!P(e)&&e in t&&za(+e)&&e>=0},R=function(t,e){return e=Gt(e),Y(t,e)?y(2,t[e]):l(t,e)},K=function(t,e,n){return e=Gt(e),!(Y(t,e)&&x(n)&&ot(n,"value"))||ot(n,"get")||ot(n,"set")||n.configurable||ot(n,"writable")&&!n.writable||ot(n,"enumerable")&&!n.enumerable?c(t,e,n):(t[e]=n.value,t)};d?(b||(Ct.f=R,Ht.f=K,S(G,"buffer"),S(G,"byteOffset"),S(G,"byteLength"),S(G,"length")),Ne({target:"Object",stat:!0,forced:!b},{getOwnPropertyDescriptor:R,defineProperty:K}),t.exports=function(t,l,d){var h=t.match(/\d+$/)[0]/8,y=t+(d?"Clamped":"")+"Array",g="get"+t,S="set"+t,Y=a[y],R=Y,K=R&&R.prototype,L={},J=function(t,e){c(t,e,{get:function(){return function(t,e){var n=r(t);return n.view[g](e*h+n.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,n){var i=r(t);d&&(n=(n=o(n))<0?0:n>255?255:255&n),i.view[S](e*h+i.byteOffset,n,!0)}(this,e,t)},enumerable:!0})};b?db&&(R=l((function(t,e,n,r){return Bc(t,K),Zo(x(e)?C(e)?void 0!==r?new Y(e,hb(n,h),r):void 0!==n?new Y(e,hb(n,h)):new Y(e):f(e)?v(R,e):m(bb,R,e):new Y(Mc(e)),t,R)})),ki&&ki(R,X),n(e(Y),(function(t){t in R||Nt(R,t,Y[t])})),R.prototype=K):(R=l((function(t,e,n,r){Bc(t,K);var c,l,o,a=0,d=0;if(x(e)){if(!C(e))return f(e)?v(R,e):m(bb,R,e);c=e,d=hb(n,h);var b=e.byteLength;if(void 0===r){if(b%h)throw u(W);if((l=b-d)<0)throw u(W)}else if((l=me(r)*h)+d>b)throw u(W);o=l/h}else o=Mc(e),c=new s(l=o*h);for(i(t,{buffer:c,byteOffset:d,byteLength:l,length:o,view:new Z(c)});a<o;)J(t,a++)})),ki&&ki(R,X),K=R.prototype=ln(G)),K.constructor!==R&&Nt(K,"constructor",R),Nt(K,p,R),I&&Nt(K,I,y),L[y]=R,Ne({global:!0,forced:R!=Y,sham:!b},L),V in R||Nt(R,V,h),V in K||Nt(K,V,h),Hc(y)}):t.exports=function(){}}));pb("Float32",(function(t){return function(e,n,r){return t(this,e,n,r)}})),pb("Float64",(function(t){return function(e,n,r){return t(this,e,n,r)}})),pb("Int8",(function(t){return function(e,n,r){return t(this,e,n,r)}})),pb("Int16",(function(t){return function(e,n,r){return t(this,e,n,r)}})),pb("Int32",(function(t){return function(e,n,r){return t(this,e,n,r)}})),pb("Uint8",(function(t){return function(e,n,r){return t(this,e,n,r)}})),pb("Uint8",(function(t){return function(e,n,r){return t(this,e,n,r)}}),!0),pb("Uint16",(function(t){return function(e,n,r){return t(this,e,n,r)}})),pb("Uint32",(function(t){return function(e,n,r){return t(this,e,n,r)}}));var yb=f(Nr),Ib=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("copyWithin",(function(t,e){return yb(Ib(this),t,e,arguments.length>2?arguments[2]:void 0)}));var Xb=Un.every,Gb=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("every",(function(t){return Xb(Gb(this),t,arguments.length>1?arguments[1]:void 0)}));var gb=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("fill",(function(t){var e=arguments.length;return m(Tr,gb(this),t,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}));var fb=lb.TYPED_ARRAY_CONSTRUCTOR,Vb=lb.aTypedArrayConstructor,Wb=function(t){return Vb(id(t,t[fb]))},vb=function(t,e){return function(t,e){for(var n=0,r=e.length,i=new t(r);r>n;)i[n]=e[n++];return i}(Wb(t),e)},Sb=Un.filter,Cb=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("filter",(function(t){var e=Sb(Cb(this),t,arguments.length>1?arguments[1]:void 0);return vb(this,e)}));var Yb=Un.find,Rb=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("find",(function(t){return Yb(Rb(this),t,arguments.length>1?arguments[1]:void 0)}));var Kb=Un.findIndex,Lb=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("findIndex",(function(t){return Kb(Lb(this),t,arguments.length>1?arguments[1]:void 0)}));var Jb=Un.forEach,xb=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("forEach",(function(t){Jb(xb(this),t,arguments.length>1?arguments[1]:void 0)})),(0,lb.exportTypedArrayStaticMethod)("from",bb,db);var Hb=be.includes,Nb=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("includes",(function(t){return Hb(Nb(this),t,arguments.length>1?arguments[1]:void 0)}));var kb=be.indexOf,Ub=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("indexOf",(function(t){return kb(Ub(this),t,arguments.length>1?arguments[1]:void 0)}));var wb=re.PROPER,Tb=pt("iterator"),Fb=a.Uint8Array,zb=f(Pi.values),Bb=f(Pi.keys),jb=f(Pi.entries),Mb=lb.aTypedArray,Qb=lb.exportTypedArrayMethod,Pb=Fb&&Fb.prototype[Tb],Ab=!!Pb&&"values"===Pb.name,Db=function(){return zb(Mb(this))};Qb("entries",(function(){return jb(Mb(this))})),Qb("keys",(function(){return Bb(Mb(this))})),Qb("values",Db,wb&&!Ab),Qb(Tb,Db,wb&&!Ab);var Eb=lb.aTypedArray,Ob=lb.exportTypedArrayMethod,_b=f([].join);Ob("join",(function(t){return _b(Eb(this),t)}));var qb=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("lastIndexOf",(function(t){var e=arguments.length;return Fe(tc,qb(this),e>1?[t,arguments[1]]:[t])}));var $b=Un.map,tp=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("map",(function(t){return $b(tp(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(Wb(t))(e)}))}));var ep=lb.aTypedArrayConstructor;(0,lb.exportTypedArrayStaticMethod)("of",(function(){for(var t=0,e=arguments.length,n=new(ep(this))(e);e>t;)n[t]=arguments[t++];return n}),db);var np=oc.left,rp=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("reduce",(function(t){var e=arguments.length;return np(rp(this),t,e,e>1?arguments[1]:void 0)}));var ip=oc.right,cp=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("reduceRight",(function(t){var e=arguments.length;return ip(cp(this),t,e,e>1?arguments[1]:void 0)}));var lp=lb.aTypedArray,op=lb.exportTypedArrayMethod,ap=Math.floor;op("reverse",(function(){for(var t,e=this,n=lp(e).length,r=ap(n/2),i=0;i<r;)t=e[i],e[i++]=e[--n],e[n]=t;return e}));var up=a.RangeError,dp=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("set",(function(t){dp(this);var e=hb(arguments.length>1?arguments[1]:void 0,1),n=this.length,r=ct(t),i=he(r),c=0;if(i+e>n)throw up("Wrong length");for(;c<i;)this[e+c]=r[c++]}),u((function(){new Int8Array(1).set({})})));var sp=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("slice",(function(t,e){for(var n=Zn(sp(this),t,e),r=Wb(this),i=0,c=n.length,l=new r(c);c>i;)l[i]=n[i++];return l}),u((function(){new Int8Array(1).slice()})));var mp=Un.some,hp=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("some",(function(t){return mp(hp(this),t,arguments.length>1?arguments[1]:void 0)}));var Zp=a.Array,bp=lb.aTypedArray,pp=lb.exportTypedArrayMethod,yp=a.Uint16Array,Ip=yp&&f(yp.prototype.sort),Xp=!(!Ip||u((function(){Ip(new yp(2),null)}))&&u((function(){Ip(new yp(2),{})}))),Gp=!!Ip&&!u((function(){if(B)return B<74;if(fc)return fc<67;if(Vc)return!0;if(vc)return vc<602;var t,e,n=new yp(516),r=Zp(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,r[t]=t-2*e+3;for(Ip(n,(function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(n[t]!==r[t])return!0}));pp("sort",(function(t){return void 0!==t&&O(t),Gp?Ip(this,t):Gc(bp(this),function(t){return function(e,n){return void 0!==t?+t(e,n)||0:n!=n?-1:e!=e?1:0===e&&0===n?1/e>0&&1/n<0?1:-1:e>n}}(t))}),!Gp||Xp);var gp=lb.aTypedArray;(0,lb.exportTypedArrayMethod)("subarray",(function(t,e){var n=gp(this),r=n.length,i=de(t,r);return new(Wb(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,me((void 0===e?r:de(e,r))-i))}));var fp=a.Int8Array,Vp=lb.aTypedArray,Wp=lb.exportTypedArrayMethod,vp=[].toLocaleString,Sp=!!fp&&u((function(){vp.call(new fp(1))}));Wp("toLocaleString",(function(){return Fe(vp,Sp?Zn(Vp(this)):Vp(this),Zn(arguments))}),u((function(){return[1,2].toLocaleString()!=new fp([1,2]).toLocaleString()}))||!u((function(){fp.prototype.toLocaleString.call([1,2])})));var Cp=lb.exportTypedArrayMethod,Yp=a.Uint8Array,Rp=Yp&&Yp.prototype||{},Kp=[].toString,Lp=f([].join);u((function(){Kp.call({})}))&&(Kp=function(){return Lp(this)});var Jp=Rp.toString!=Kp;Cp("toString",Kp,Jp);var xp=ao.getWeakData,Hp=$t.set,Np=$t.getterFor,kp=Un.find,Up=Un.findIndex,wp=f([].splice),Tp=0,Fp=function(t){return t.frozen||(t.frozen=new zp)},zp=function(){this.entries=[]},Bp=function(t,e){return kp(t.entries,(function(t){return t[0]===e}))};zp.prototype={get:function(t){var e=Bp(this,t);if(e)return e[1]},has:function(t){return!!Bp(this,t)},set:function(t,e){var n=Bp(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=Up(this.entries,(function(e){return e[0]===t}));return~e&&wp(this.entries,e,1),!!~e}};var jp,Mp={getConstructor:function(t,e,n,r){var i=t((function(t,i){Bc(t,c),Hp(t,{type:e,id:Tp++,frozen:void 0}),null!=i&&ho(i,t[r],{that:t,AS_ENTRIES:n})})),c=i.prototype,l=Np(e),o=function(t,e,n){var r=l(t),i=xp(Kt(e),!0);return!0===i?Fp(r).set(e,n):i[r.id]=n,t};return Fc(c,{delete:function(t){var e=l(this);if(!x(t))return!1;var n=xp(t);return!0===n?Fp(e).delete(t):n&&ot(n,e.id)&&delete n[e.id]},has:function(t){var e=l(this);if(!x(t))return!1;var n=xp(t);return!0===n?Fp(e).has(t):n&&ot(n,e.id)}}),Fc(c,n?{get:function(t){var e=l(this);if(x(t)){var n=xp(t);return!0===n?Fp(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return o(this,t,e)}}:{add:function(t){return o(this,t,!0)}}),i}},Qp=$t.enforce,Pp=!a.ActiveXObject&&"ActiveXObject"in a,Ap=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Dp=bo("WeakMap",Ap,Mp);if(Bt&&Pp){jp=Mp.getConstructor(Ap,"WeakMap",!0),ao.enable();var Ep=Dp.prototype,Op=f(Ep.delete),_p=f(Ep.has),qp=f(Ep.get),$p=f(Ep.set);Fc(Ep,{delete:function(t){if(x(t)&&!lo(t)){var e=Qp(this);return e.frozen||(e.frozen=new jp),Op(this,t)||e.frozen.delete(t)}return Op(this,t)},has:function(t){if(x(t)&&!lo(t)){var e=Qp(this);return e.frozen||(e.frozen=new jp),_p(this,t)||e.frozen.has(t)}return _p(this,t)},get:function(t){if(x(t)&&!lo(t)){var e=Qp(this);return e.frozen||(e.frozen=new jp),_p(this,t)?qp(this,t):e.frozen.get(t)}return qp(this,t)},set:function(t,e){if(x(t)&&!lo(t)){var n=Qp(this);n.frozen||(n.frozen=new jp),_p(this,t)?$p(this,t,e):n.frozen.set(t,e)}else $p(this,t,e);return this}})}bo("WeakSet",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),Mp);var ty={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},ey=Vt("span").classList,ny=ey&&ey.constructor&&ey.constructor.prototype,ry=ny===Object.prototype?void 0:ny,iy=Un.forEach,cy=hi("forEach")?[].forEach:function(t){return iy(this,t,arguments.length>1?arguments[1]:void 0)},ly=function(t){if(t&&t.forEach!==cy)try{Nt(t,"forEach",cy)}catch(e){t.forEach=cy}};for(var oy in ty)ty[oy]&&ly(a[oy]&&a[oy].prototype);ly(ry);var ay=pt("iterator"),uy=pt("toStringTag"),dy=Pi.values,sy=function(t,e){if(t){if(t[ay]!==dy)try{Nt(t,ay,dy)}catch(e){t[ay]=dy}if(t[uy]||Nt(t,uy,e),ty[e])for(var n in Pi)if(t[n]!==Pi[n])try{Nt(t,n,Pi[n])}catch(e){t[n]=Pi[n]}}};for(var my in ty)sy(a[my]&&a[my].prototype,my);sy(ry,"DOMTokenList");var hy=!a.setImmediate||!a.clearImmediate;Ne({global:!0,bind:!0,enumerable:!0,forced:hy},{setImmediate:Cd.set,clearImmediate:Cd.clear});var Zy=a.process;Ne({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(t){var e=ac&&Zy.domain;Bd(e?e.bind(t):t)}});var by=pt("iterator"),py=!u((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),e=t.searchParams,n="";return t.pathname="c%20d",e.forEach((function(t,r){e.delete("b"),n+=r+t})),!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[by]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),yy=/[^\0-\u007E]/,Iy=/[.\u3002\uFF0E\uFF61]/g,Xy="Overflow: input needs wider integers to process",Gy=a.RangeError,gy=f(Iy.exec),fy=Math.floor,Vy=String.fromCharCode,Wy=f("".charCodeAt),vy=f([].join),Sy=f([].push),Cy=f("".replace),Yy=f("".split),Ry=f("".toLowerCase),Ky=function(t){return t+22+75*(t<26)},Ly=function(t,e,n){var r=0;for(t=n?fy(t/700):t>>1,t+=fy(t/e);t>455;)t=fy(t/35),r+=36;return fy(r+36*t/(t+38))},Jy=function(t){var e=[];t=function(t){for(var e=[],n=0,r=t.length;n<r;){var i=Wy(t,n++);if(i>=55296&&i<=56319&&n<r){var c=Wy(t,n++);56320==(64512&c)?Sy(e,((1023&i)<<10)+(1023&c)+65536):(Sy(e,i),n--)}else Sy(e,i)}return e}(t);var n,r,i=t.length,c=128,l=0,o=72;for(n=0;n<t.length;n++)(r=t[n])<128&&Sy(e,Vy(r));var a=e.length,u=a;for(a&&Sy(e,"-");u<i;){var d=2147483647;for(n=0;n<t.length;n++)(r=t[n])>=c&&r<d&&(d=r);var s=u+1;if(d-c>fy((2147483647-l)/s))throw Gy(Xy);for(l+=(d-c)*s,c=d,n=0;n<t.length;n++){if((r=t[n])<c&&++l>2147483647)throw Gy(Xy);if(r==c){for(var m=l,h=36;;){var Z=h<=o?1:h>=o+26?26:h-o;if(m<Z)break;var b=m-Z,p=36-Z;Sy(e,Vy(Ky(Z+b%p))),m=fy(b/p),h+=36}Sy(e,Vy(Ky(m))),o=Ly(l,s,u==a),l=0,u++}}l++,c++}return vy(e,"")},xy=pt("iterator"),Hy=$t.set,Ny=$t.getterFor("URLSearchParams"),ky=$t.getterFor("URLSearchParamsIterator"),Uy=N("fetch"),wy=N("Request"),Ty=N("Headers"),Fy=wy&&wy.prototype,zy=Ty&&Ty.prototype,By=a.RegExp,jy=a.TypeError,My=a.decodeURIComponent,Qy=a.encodeURIComponent,Py=f("".charAt),Ay=f([].join),Dy=f([].push),Ey=f("".replace),Oy=f([].shift),_y=f([].splice),qy=f("".split),$y=f("".slice),tI=/\+/g,eI=Array(4),nI=function(t){return eI[t-1]||(eI[t-1]=By("((?:%[\\da-f]{2}){"+t+"})","gi"))},rI=function(t){try{return My(t)}catch(e){return t}},iI=function(t){var e=Ey(t,tI," "),n=4;try{return My(e)}catch(t){for(;n;)e=Ey(e,nI(n--),rI);return e}},cI=/[!'()~]|%20/g,lI={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},oI=function(t){return lI[t]},aI=function(t){return Ey(Qy(t),cI,oI)},uI=function(t,e){if(t<e)throw jy("Not enough arguments")},dI=Ji((function(t,e){Hy(this,{type:"URLSearchParamsIterator",iterator:ri(Ny(t).entries),kind:e})}),"Iterator",(function(){var t=ky(this),e=t.kind,n=t.iterator.next(),r=n.value;return n.done||(n.value="keys"===e?r.key:"values"===e?r.value:[r.key,r.value]),n}),!0),sI=function(t){this.entries=[],this.url=null,void 0!==t&&(x(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===Py(t,0)?$y(t,1):t:Oe(t)))};sI.prototype={type:"URLSearchParams",bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,n,r,i,c,l,o,a=ei(t);if(a)for(n=(e=ri(t,a)).next;!(r=m(n,e)).done;){if(c=(i=ri(Kt(r.value))).next,(l=m(c,i)).done||(o=m(c,i)).done||!m(c,i).done)throw jy("Expected sequence with length 2");Dy(this.entries,{key:Oe(l.value),value:Oe(o.value)})}else for(var u in t)ot(t,u)&&Dy(this.entries,{key:u,value:Oe(t[u])})},parseQuery:function(t){if(t)for(var e,n,r=qy(t,"&"),i=0;i<r.length;)(e=r[i++]).length&&(n=qy(e,"="),Dy(this.entries,{key:iI(Oy(n)),value:iI(Ay(n,"="))}))},serialize:function(){for(var t,e=this.entries,n=[],r=0;r<e.length;)t=e[r++],Dy(n,aI(t.key)+"="+aI(t.value));return Ay(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var mI=function(){Bc(this,hI);var t=arguments.length>0?arguments[0]:void 0;Hy(this,new sI(t))},hI=mI.prototype;if(Fc(hI,{append:function(t,e){uI(arguments.length,2);var n=Ny(this);Dy(n.entries,{key:Oe(t),value:Oe(e)}),n.updateURL()},delete:function(t){uI(arguments.length,1);for(var e=Ny(this),n=e.entries,r=Oe(t),i=0;i<n.length;)n[i].key===r?_y(n,i,1):i++;e.updateURL()},get:function(t){uI(arguments.length,1);for(var e=Ny(this).entries,n=Oe(t),r=0;r<e.length;r++)if(e[r].key===n)return e[r].value;return null},getAll:function(t){uI(arguments.length,1);for(var e=Ny(this).entries,n=Oe(t),r=[],i=0;i<e.length;i++)e[i].key===n&&Dy(r,e[i].value);return r},has:function(t){uI(arguments.length,1);for(var e=Ny(this).entries,n=Oe(t),r=0;r<e.length;)if(e[r++].key===n)return!0;return!1},set:function(t,e){uI(arguments.length,1);for(var n,r=Ny(this),i=r.entries,c=!1,l=Oe(t),o=Oe(e),a=0;a<i.length;a++)(n=i[a]).key===l&&(c?_y(i,a--,1):(c=!0,n.value=o));c||Dy(i,{key:l,value:o}),r.updateURL()},sort:function(){var t=Ny(this);Gc(t.entries,(function(t,e){return t.key>e.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,n=Ny(this).entries,r=Vn(t,arguments.length>1?arguments[1]:void 0),i=0;i<n.length;)r((e=n[i++]).value,e.key,this)},keys:function(){return new dI(this,"keys")},values:function(){return new dI(this,"values")},entries:function(){return new dI(this,"entries")}},{enumerable:!0}),ie(hI,xy,hI.entries,{name:"entries"}),ie(hI,"toString",(function(){return Ny(this).serialize()}),{enumerable:!0}),gn(mI,"URLSearchParams"),Ne({global:!0,forced:!py},{URLSearchParams:mI}),!py&&J(Ty)){var ZI=f(zy.has),bI=f(zy.set),pI=function(t){if(x(t)){var e,n=t.body;if("URLSearchParams"===De(n))return e=t.headers?new Ty(t.headers):new Ty,ZI(e,"content-type")||bI(e,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),ln(t,{body:y(0,Oe(n)),headers:y(0,e)})}return t};if(J(Uy)&&Ne({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return Uy(t,arguments.length>1?pI(arguments[1]):{})}}),J(wy)){var yI=function(t){return Bc(this,Fy),new wy(t,arguments.length>1?pI(arguments[1]):{})};Fy.constructor=yI,yI.prototype=Fy,Ne({global:!0,forced:!0},{Request:yI})}}var II,XI={URLSearchParams:mI,getState:Ny},GI=th.codeAt,gI=$t.set,fI=$t.getterFor("URL"),VI=XI.URLSearchParams,WI=XI.getState,vI=a.URL,SI=a.TypeError,CI=a.parseInt,YI=Math.floor,RI=Math.pow,KI=f("".charAt),LI=f(/./.exec),JI=f([].join),xI=f(1..toString),HI=f([].pop),NI=f([].push),kI=f("".replace),UI=f([].shift),wI=f("".split),TI=f("".slice),FI=f("".toLowerCase),zI=f([].unshift),BI=/[a-z]/i,jI=/[\d+-.a-z]/i,MI=/\d/,QI=/^0x/i,PI=/^[0-7]+$/,AI=/^\d+$/,DI=/^[\da-f]+$/i,EI=/[\0\t\n\r #%/:<>?@[\\\]^|]/,OI=/[\0\t\n\r #/:<>?@[\\\]^|]/,_I=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,qI=/[\t\n\r]/g,$I=function(t){var e,n,r,i;if("number"==typeof t){for(e=[],n=0;n<4;n++)zI(e,t%256),t=YI(t/256);return JI(e,".")}if("object"==l(t)){for(e="",r=function(t){for(var e=null,n=1,r=null,i=0,c=0;c<8;c++)0!==t[c]?(i>n&&(e=r,n=i),r=null,i=0):(null===r&&(r=c),++i);return i>n&&(e=r,n=i),e}(t),n=0;n<8;n++)i&&0===t[n]||(i&&(i=!1),r===n?(e+=n?":":"::",i=!0):(e+=xI(t[n],16),n<7&&(e+=":")));return"["+e+"]"}return t},tX={},eX=Iu({},tX,{" ":1,'"':1,"<":1,">":1,"`":1}),nX=Iu({},eX,{"#":1,"?":1,"{":1,"}":1}),rX=Iu({},nX,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),iX=function(t,e){var n=GI(t,0);return n>32&&n<127&&!ot(e,t)?t:encodeURIComponent(t)},cX={ftp:21,file:null,http:80,https:443,ws:80,wss:443},lX=function(t,e){var n;return 2==t.length&&LI(BI,KI(t,0))&&(":"==(n=KI(t,1))||!e&&"|"==n)},oX=function(t){var e;return t.length>1&&lX(TI(t,0,2))&&(2==t.length||"/"===(e=KI(t,2))||"\\"===e||"?"===e||"#"===e)},aX=function(t){return"."===t||"%2e"===FI(t)},uX={},dX={},sX={},mX={},hX={},ZX={},bX={},pX={},yX={},IX={},XX={},GX={},gX={},fX={},VX={},WX={},vX={},SX={},CX={},YX={},RX={},KX=function t(e,n,r){var i,c,l,o=Oe(e);if(n){if(c=this.parse(o))throw SI(c);this.searchParams=null}else{if(void 0!==r&&(i=new t(r,!0)),c=this.parse(o,null,i))throw SI(c);(l=WI(new VI)).bindURL(this),this.searchParams=l}};KX.prototype={type:"URL",parse:function(t,e,n){var r,i,c,l,o,a=this,u=e||uX,d=0,s="",m=!1,h=!1,Z=!1;for(t=Oe(t),e||(a.scheme="",a.username="",a.password="",a.host=null,a.port=null,a.path=[],a.query=null,a.fragment=null,a.cannotBeABaseURL=!1,t=kI(t,_I,"")),t=kI(t,qI,""),r=ci(t);d<=r.length;){switch(i=r[d],u){case uX:if(!i||!LI(BI,i)){if(e)return"Invalid scheme";u=sX;continue}s+=FI(i),u=dX;break;case dX:if(i&&(LI(jI,i)||"+"==i||"-"==i||"."==i))s+=FI(i);else{if(":"!=i){if(e)return"Invalid scheme";s="",u=sX,d=0;continue}if(e&&(a.isSpecial()!=ot(cX,s)||"file"==s&&(a.includesCredentials()||null!==a.port)||"file"==a.scheme&&!a.host))return;if(a.scheme=s,e)return void(a.isSpecial()&&cX[a.scheme]==a.port&&(a.port=null));s="","file"==a.scheme?u=fX:a.isSpecial()&&n&&n.scheme==a.scheme?u=mX:a.isSpecial()?u=pX:"/"==r[d+1]?(u=hX,d++):(a.cannotBeABaseURL=!0,NI(a.path,""),u=CX)}break;case sX:if(!n||n.cannotBeABaseURL&&"#"!=i)return"Invalid scheme";if(n.cannotBeABaseURL&&"#"==i){a.scheme=n.scheme,a.path=dn(n.path),a.query=n.query,a.fragment="",a.cannotBeABaseURL=!0,u=RX;break}u="file"==n.scheme?fX:ZX;continue;case mX:if("/"!=i||"/"!=r[d+1]){u=ZX;continue}u=yX,d++;break;case hX:if("/"==i){u=IX;break}u=SX;continue;case ZX:if(a.scheme=n.scheme,i==II)a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=dn(n.path),a.query=n.query;else if("/"==i||"\\"==i&&a.isSpecial())u=bX;else if("?"==i)a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=dn(n.path),a.query="",u=YX;else{if("#"!=i){a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=dn(n.path),a.path.length--,u=SX;continue}a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=dn(n.path),a.query=n.query,a.fragment="",u=RX}break;case bX:if(!a.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,u=SX;continue}u=IX}else u=yX;break;case pX:if(u=yX,"/"!=i||"/"!=KI(s,d+1))continue;d++;break;case yX:if("/"!=i&&"\\"!=i){u=IX;continue}break;case IX:if("@"==i){m&&(s="%40"+s),m=!0,c=ci(s);for(var b=0;b<c.length;b++){var p=c[b];if(":"!=p||Z){var y=iX(p,rX);Z?a.password+=y:a.username+=y}else Z=!0}s=""}else if(i==II||"/"==i||"?"==i||"#"==i||"\\"==i&&a.isSpecial()){if(m&&""==s)return"Invalid authority";d-=ci(s).length+1,s="",u=XX}else s+=i;break;case XX:case GX:if(e&&"file"==a.scheme){u=WX;continue}if(":"!=i||h){if(i==II||"/"==i||"?"==i||"#"==i||"\\"==i&&a.isSpecial()){if(a.isSpecial()&&""==s)return"Invalid host";if(e&&""==s&&(a.includesCredentials()||null!==a.port))return;if(l=a.parseHost(s))return l;if(s="",u=vX,e)return;continue}"["==i?h=!0:"]"==i&&(h=!1),s+=i}else{if(""==s)return"Invalid host";if(l=a.parseHost(s))return l;if(s="",u=gX,e==GX)return}break;case gX:if(!LI(MI,i)){if(i==II||"/"==i||"?"==i||"#"==i||"\\"==i&&a.isSpecial()||e){if(""!=s){var I=CI(s,10);if(I>65535)return"Invalid port";a.port=a.isSpecial()&&I===cX[a.scheme]?null:I,s=""}if(e)return;u=vX;continue}return"Invalid port"}s+=i;break;case fX:if(a.scheme="file","/"==i||"\\"==i)u=VX;else{if(!n||"file"!=n.scheme){u=SX;continue}if(i==II)a.host=n.host,a.path=dn(n.path),a.query=n.query;else if("?"==i)a.host=n.host,a.path=dn(n.path),a.query="",u=YX;else{if("#"!=i){oX(JI(dn(r,d),""))||(a.host=n.host,a.path=dn(n.path),a.shortenPath()),u=SX;continue}a.host=n.host,a.path=dn(n.path),a.query=n.query,a.fragment="",u=RX}}break;case VX:if("/"==i||"\\"==i){u=WX;break}n&&"file"==n.scheme&&!oX(JI(dn(r,d),""))&&(lX(n.path[0],!0)?NI(a.path,n.path[0]):a.host=n.host),u=SX;continue;case WX:if(i==II||"/"==i||"\\"==i||"?"==i||"#"==i){if(!e&&lX(s))u=SX;else if(""==s){if(a.host="",e)return;u=vX}else{if(l=a.parseHost(s))return l;if("localhost"==a.host&&(a.host=""),e)return;s="",u=vX}continue}s+=i;break;case vX:if(a.isSpecial()){if(u=SX,"/"!=i&&"\\"!=i)continue}else if(e||"?"!=i)if(e||"#"!=i){if(i!=II&&(u=SX,"/"!=i))continue}else a.fragment="",u=RX;else a.query="",u=YX;break;case SX:if(i==II||"/"==i||"\\"==i&&a.isSpecial()||!e&&("?"==i||"#"==i)){if(".."===(o=FI(o=s))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(a.shortenPath(),"/"==i||"\\"==i&&a.isSpecial()||NI(a.path,"")):aX(s)?"/"==i||"\\"==i&&a.isSpecial()||NI(a.path,""):("file"==a.scheme&&!a.path.length&&lX(s)&&(a.host&&(a.host=""),s=KI(s,0)+":"),NI(a.path,s)),s="","file"==a.scheme&&(i==II||"?"==i||"#"==i))for(;a.path.length>1&&""===a.path[0];)UI(a.path);"?"==i?(a.query="",u=YX):"#"==i&&(a.fragment="",u=RX)}else s+=iX(i,nX);break;case CX:"?"==i?(a.query="",u=YX):"#"==i?(a.fragment="",u=RX):i!=II&&(a.path[0]+=iX(i,tX));break;case YX:e||"#"!=i?i!=II&&("'"==i&&a.isSpecial()?a.query+="%27":a.query+="#"==i?"%23":iX(i,tX)):(a.fragment="",u=RX);break;case RX:i!=II&&(a.fragment+=iX(i,eX))}d++}},parseHost:function(t){var e,n,r;if("["==KI(t,0)){if("]"!=KI(t,t.length-1))return"Invalid host";if(e=function(t){var e,n,r,i,c,l,o,a=[0,0,0,0,0,0,0,0],u=0,d=null,s=0,m=function(){return KI(t,s)};if(":"==m()){if(":"!=KI(t,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(e=n=0;n<4&&LI(DI,m());)e=16*e+CI(m(),16),s++,n++;if("."==m()){if(0==n)return;if(s-=n,u>6)return;for(r=0;m();){if(i=null,r>0){if(!("."==m()&&r<4))return;s++}if(!LI(MI,m()))return;for(;LI(MI,m());){if(c=CI(m(),10),null===i)i=c;else{if(0==i)return;i=10*i+c}if(i>255)return;s++}a[u]=256*a[u]+i,2!=++r&&4!=r||u++}if(4!=r)return;break}if(":"==m()){if(s++,!m())return}else if(m())return;a[u++]=e}else{if(null!==d)return;s++,d=++u}}if(null!==d)for(l=u-d,u=7;0!=u&&l>0;)o=a[u],a[u--]=a[d+l-1],a[d+--l]=o;else if(8!=u)return;return a}(TI(t,1,-1)),!e)return"Invalid host";this.host=e}else if(this.isSpecial()){if(t=function(t){var e,n,r=[],i=Yy(Cy(Ry(t),Iy,"."),".");for(e=0;e<i.length;e++)n=i[e],Sy(r,gy(yy,n)?"xn--"+Jy(n):n);return vy(r,".")}(t),LI(EI,t))return"Invalid host";if(e=function(t){var e,n,r,i,c,l,o,a=wI(t,".");if(a.length&&""==a[a.length-1]&&a.length--,(e=a.length)>4)return t;for(n=[],r=0;r<e;r++){if(""==(i=a[r]))return t;if(c=10,i.length>1&&"0"==KI(i,0)&&(c=LI(QI,i)?16:8,i=TI(i,8==c?1:2)),""===i)l=0;else{if(!LI(10==c?AI:8==c?PI:DI,i))return t;l=CI(i,c)}NI(n,l)}for(r=0;r<e;r++)if(l=n[r],r==e-1){if(l>=RI(256,5-e))return null}else if(l>255)return null;for(o=HI(n),r=0;r<n.length;r++)o+=n[r]*RI(256,3-r);return o}(t),null===e)return"Invalid host";this.host=e}else{if(LI(OI,t))return"Invalid host";for(e="",n=ci(t),r=0;r<n.length;r++)e+=iX(n[r],tX);this.host=e}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return ot(cX,this.scheme)},shortenPath:function(){var t=this.path,e=t.length;!e||"file"==this.scheme&&1==e&&lX(t[0],!0)||t.length--},serialize:function(){var t=this,e=t.scheme,n=t.username,r=t.password,i=t.host,c=t.port,l=t.path,o=t.query,a=t.fragment,u=e+":";return null!==i?(u+="//",t.includesCredentials()&&(u+=n+(r?":"+r:"")+"@"),u+=$I(i),null!==c&&(u+=":"+c)):"file"==e&&(u+="//"),u+=t.cannotBeABaseURL?l[0]:l.length?"/"+JI(l,"/"):"",null!==o&&(u+="?"+o),null!==a&&(u+="#"+a),u},setHref:function(t){var e=this.parse(t);if(e)throw SI(e);this.searchParams.update()},getOrigin:function(){var t=this.scheme,e=this.port;if("blob"==t)try{return new LX(t.path[0]).origin}catch(t){return"null"}return"file"!=t&&this.isSpecial()?t+"://"+$I(this.host)+(null!==e?":"+e:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(t){this.parse(Oe(t)+":",uX)},getUsername:function(){return this.username},setUsername:function(t){var e=ci(Oe(t));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<e.length;n++)this.username+=iX(e[n],rX)}},getPassword:function(){return this.password},setPassword:function(t){var e=ci(Oe(t));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<e.length;n++)this.password+=iX(e[n],rX)}},getHost:function(){var t=this.host,e=this.port;return null===t?"":null===e?$I(t):$I(t)+":"+e},setHost:function(t){this.cannotBeABaseURL||this.parse(t,XX)},getHostname:function(){var t=this.host;return null===t?"":$I(t)},setHostname:function(t){this.cannotBeABaseURL||this.parse(t,GX)},getPort:function(){var t=this.port;return null===t?"":Oe(t)},setPort:function(t){this.cannotHaveUsernamePasswordPort()||(""==(t=Oe(t))?this.port=null:this.parse(t,gX))},getPathname:function(){var t=this.path;return this.cannotBeABaseURL?t[0]:t.length?"/"+JI(t,"/"):""},setPathname:function(t){this.cannotBeABaseURL||(this.path=[],this.parse(t,vX))},getSearch:function(){var t=this.query;return t?"?"+t:""},setSearch:function(t){""==(t=Oe(t))?this.query=null:("?"==KI(t,0)&&(t=TI(t,1)),this.query="",this.parse(t,YX)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var t=this.fragment;return t?"#"+t:""},setHash:function(t){""!=(t=Oe(t))?("#"==KI(t,0)&&(t=TI(t,1)),this.fragment="",this.parse(t,RX)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var LX=function(t){var e=Bc(this,JX),n=arguments.length>1?arguments[1]:void 0,r=gI(e,new KX(t,!1,n));d||(e.href=r.serialize(),e.origin=r.getOrigin(),e.protocol=r.getProtocol(),e.username=r.getUsername(),e.password=r.getPassword(),e.host=r.getHost(),e.hostname=r.getHostname(),e.port=r.getPort(),e.pathname=r.getPathname(),e.search=r.getSearch(),e.searchParams=r.getSearchParams(),e.hash=r.getHash())},JX=LX.prototype,xX=function(t,e){return{get:function(){return fI(this)[t]()},set:e&&function(t){return fI(this)[e](t)},configurable:!0,enumerable:!0}};if(d&&qe(JX,{href:xX("serialize","setHref"),origin:xX("getOrigin"),protocol:xX("getProtocol","setProtocol"),username:xX("getUsername","setUsername"),password:xX("getPassword","setPassword"),host:xX("getHost","setHost"),hostname:xX("getHostname","setHostname"),port:xX("getPort","setPort"),pathname:xX("getPathname","setPathname"),search:xX("getSearch","setSearch"),searchParams:xX("getSearchParams"),hash:xX("getHash","setHash")}),ie(JX,"toJSON",(function(){return fI(this).serialize()}),{enumerable:!0}),ie(JX,"toString",(function(){return fI(this).serialize()}),{enumerable:!0}),vI){var HX=vI.createObjectURL,NX=vI.revokeObjectURL;HX&&ie(LX,"createObjectURL",Vn(HX,vI)),NX&&ie(LX,"revokeObjectURL",Vn(NX,vI))}gn(LX,"URL"),Ne({global:!0,forced:!py,sham:!d},{URL:LX}),Ne({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return m(URL.prototype.toString,this)}});var kX=n((function(t){var e=function(t){var e,n=Object.prototype,r=n.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},c=i.iterator||"@@iterator",o=i.asyncIterator||"@@asyncIterator",a=i.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,n){return t[e]=n}}function d(t,e,n,r){var i=e&&e.prototype instanceof y?e:y,c=Object.create(i.prototype),l=new R(r||[]);return c._invoke=function(t,e,n){var r=m;return function(i,c){if(r===Z)throw new Error("Generator is already running");if(r===b){if("throw"===i)throw c;return L()}for(n.method=i,n.arg=c;;){var l=n.delegate;if(l){var o=S(l,n);if(o){if(o===p)continue;return o}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===m)throw r=b,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=Z;var a=s(t,e,n);if("normal"===a.type){if(r=n.done?b:h,a.arg===p)continue;return{value:a.arg,done:n.done}}"throw"===a.type&&(r=b,n.method="throw",n.arg=a.arg)}}}(t,n,l),c}function s(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=d;var m="suspendedStart",h="suspendedYield",Z="executing",b="completed",p={};function y(){}function I(){}function X(){}var G={};u(G,c,(function(){return this}));var g=Object.getPrototypeOf,f=g&&g(g(K([])));f&&f!==n&&r.call(f,c)&&(G=f);var V=X.prototype=y.prototype=Object.create(G);function W(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function v(t,e){function n(i,c,o,a){var u=s(t[i],t,c);if("throw"!==u.type){var d=u.arg,m=d.value;return m&&"object"===l(m)&&r.call(m,"__await")?e.resolve(m.__await).then((function(t){n("next",t,o,a)}),(function(t){n("throw",t,o,a)})):e.resolve(m).then((function(t){d.value=t,o(d)}),(function(t){return n("throw",t,o,a)}))}a(u.arg)}var i;this._invoke=function(t,r){function c(){return new e((function(e,i){n(t,r,e,i)}))}return i=i?i.then(c,c):c()}}function S(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,S(t,n),"throw"===n.method))return p;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var i=s(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,p;var c=i.arg;return c?c.done?(n[t.resultName]=c.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,p):c:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function C(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function Y(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function R(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(C,this),this.reset(!0)}function K(t){if(t){var n=t[c];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,l=function n(){for(;++i<t.length;)if(r.call(t,i))return n.value=t[i],n.done=!1,n;return n.value=e,n.done=!0,n};return l.next=l}}return{next:L}}function L(){return{value:e,done:!0}}return I.prototype=X,u(V,"constructor",X),u(X,"constructor",I),I.displayName=u(X,a,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===I||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,X):(t.__proto__=X,u(t,a,"GeneratorFunction")),t.prototype=Object.create(V),t},t.awrap=function(t){return{__await:t}},W(v.prototype),u(v.prototype,o,(function(){return this})),t.AsyncIterator=v,t.async=function(e,n,r,i,c){void 0===c&&(c=Promise);var l=new v(d(e,n,r,i),c);return t.isGeneratorFunction(n)?l:l.next().then((function(t){return t.done?t.value:l.next()}))},W(V),u(V,a,"Generator"),u(V,c,(function(){return this})),u(V,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},t.values=K,R.prototype={constructor:R,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(Y),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(r,i){return o.type="throw",o.arg=t,n.next=r,i&&(n.method="next",n.arg=e),!!i}for(var c=this.tryEntries.length-1;c>=0;--c){var l=this.tryEntries[c],o=l.completion;if("root"===l.tryLoc)return i("end");if(l.tryLoc<=this.prev){var a=r.call(l,"catchLoc"),u=r.call(l,"finallyLoc");if(a&&u){if(this.prev<l.catchLoc)return i(l.catchLoc,!0);if(this.prev<l.finallyLoc)return i(l.finallyLoc)}else if(a){if(this.prev<l.catchLoc)return i(l.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<l.finallyLoc)return i(l.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var c=i;break}}c&&("break"===t||"continue"===t)&&c.tryLoc<=e&&e<=c.finallyLoc&&(c=null);var l=c?c.completion:{};return l.type=t,l.arg=e,c?(this.method="next",this.next=c.finallyLoc,p):this.complete(l)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),p},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),Y(n),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;Y(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:K(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),p}},t}(t.exports);try{regeneratorRuntime=e}catch(t){"object"===("undefined"==typeof globalThis?"undefined":l(globalThis))?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}})),UX=n((function(t){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.default=t.exports,t.exports.__esModule=!0})),wX=e(UX),TX=n((function(t){function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}t.exports=function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t},t.exports.default=t.exports,t.exports.__esModule=!0})),FX=e(TX),zX=kX;function BX(t,e,n,r){return new(n||(n=Promise))((function(i,c){function l(t){try{a(r.next(t))}catch(t){c(t)}}function o(t){try{a(r.throw(t))}catch(t){c(t)}}function a(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(l,o)}a((r=r.apply(t,e||[])).next())}))}var jX=n((function(t){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r},t.exports.default=t.exports,t.exports.__esModule=!0})),MX=n((function(t){t.exports=function(t){if(Array.isArray(t))return jX(t)},t.exports.default=t.exports,t.exports.__esModule=!0})),QX=n((function(t){t.exports=function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)},t.exports.default=t.exports,t.exports.__esModule=!0})),PX=n((function(t){t.exports=function(t,e){if(t){if("string"==typeof t)return jX(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?jX(t,e):void 0}},t.exports.default=t.exports,t.exports.__esModule=!0})),AX=n((function(t){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0})),DX=e(n((function(t){t.exports=function(t){return MX(t)||QX(t)||PX(t)||AX()},t.exports.default=t.exports,t.exports.__esModule=!0}))),EX=n((function(t){t.exports=function(t){if(Array.isArray(t))return t},t.exports.default=t.exports,t.exports.__esModule=!0})),OX=n((function(t){t.exports=function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,i,c=[],l=!0,o=!1;try{for(n=n.call(t);!(l=(r=n.next()).done)&&(c.push(r.value),!e||c.length!==e);l=!0);}catch(t){o=!0,i=t}finally{try{l||null==n.return||n.return()}finally{if(o)throw i}}return c}},t.exports.default=t.exports,t.exports.__esModule=!0})),_X=n((function(t){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0})),qX=n((function(t){t.exports=function(t,e){return EX(t)||OX(t,e)||PX(t,e)||_X()},t.exports.default=t.exports,t.exports.__esModule=!0})),$X=e(qX),tG=n((function(t){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},t.exports.default=t.exports,t.exports.__esModule=!0})),eG=e(tG),nG=n((function(t){function e(t,e,n,r,i,c,l){try{var o=t[c](l),a=o.value}catch(t){return void n(t)}o.done?e(a):Promise.resolve(a).then(r,i)}t.exports=function(t){return function(){var n=this,r=arguments;return new Promise((function(i,c){var l=t.apply(n,r);function o(t){e(l,i,c,o,a,"next",t)}function a(t){e(l,i,c,o,a,"throw",t)}o(void 0)}))}},t.exports.default=t.exports,t.exports.__esModule=!0})),rG=e(nG),iG=n((function(t){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.default=t.exports,t.exports.__esModule=!0})),cG=e(iG),lG=n((function(t){function e(n,r){return t.exports=e=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},t.exports.default=t.exports,t.exports.__esModule=!0,e(n,r)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),oG=e(n((function(t){t.exports=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&lG(t,e)},t.exports.default=t.exports,t.exports.__esModule=!0}))),aG=n((function(t){var e=c.default;t.exports=function(t,n){if(n&&("object"===e(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return iG(t)},t.exports.default=t.exports,t.exports.__esModule=!0})),uG=e(aG),dG=n((function(t){function e(n){return t.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},t.exports.default=t.exports,t.exports.__esModule=!0,e(n)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),sG=e(dG),mG=n((function(t){t.exports=function(t){return-1!==Function.toString.call(t).indexOf("[native code]")},t.exports.default=t.exports,t.exports.__esModule=!0})),hG=n((function(t){t.exports=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}},t.exports.default=t.exports,t.exports.__esModule=!0})),ZG=n((function(t){function e(n,r,i){return hG()?(t.exports=e=Reflect.construct,t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=e=function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&lG(i,n.prototype),i},t.exports.default=t.exports,t.exports.__esModule=!0),e.apply(null,arguments)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),bG=n((function(t){function e(n){var r="function"==typeof Map?new Map:void 0;return t.exports=e=function(t){if(null===t||!mG(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(t))return r.get(t);r.set(t,e)}function e(){return ZG(t,arguments,dG(this).constructor)}return e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),lG(e,t)},t.exports.default=t.exports,t.exports.__esModule=!0,e(n)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),pG=e(bG),yG="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},IG=[],XG=[],GG="undefined"!=typeof Uint8Array?Uint8Array:Array,gG=!1;function fG(){gG=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,n=t.length;e<n;++e)IG[e]=t[e],XG[t.charCodeAt(e)]=e;XG["-".charCodeAt(0)]=62,XG["_".charCodeAt(0)]=63}function VG(t,e,n){for(var r,i,c=[],l=e;l<n;l+=3)r=(t[l]<<16)+(t[l+1]<<8)+t[l+2],c.push(IG[(i=r)>>18&63]+IG[i>>12&63]+IG[i>>6&63]+IG[63&i]);return c.join("")}function WG(t){var e;gG||fG();for(var n=t.length,r=n%3,i="",c=[],l=16383,o=0,a=n-r;o<a;o+=l)c.push(VG(t,o,o+l>a?a:o+l));return 1===r?(e=t[n-1],i+=IG[e>>2],i+=IG[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=IG[e>>10],i+=IG[e>>4&63],i+=IG[e<<2&63],i+="="),c.push(i),c.join("")}function vG(t,e,n,r,i){var c,l,o=8*i-r-1,a=(1<<o)-1,u=a>>1,d=-7,s=n?i-1:0,m=n?-1:1,h=t[e+s];for(s+=m,c=h&(1<<-d)-1,h>>=-d,d+=o;d>0;c=256*c+t[e+s],s+=m,d-=8);for(l=c&(1<<-d)-1,c>>=-d,d+=r;d>0;l=256*l+t[e+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===a)return l?NaN:1/0*(h?-1:1);l+=Math.pow(2,r),c-=u}return(h?-1:1)*l*Math.pow(2,c-r)}function SG(t,e,n,r,i,c){var l,o,a,u=8*c-i-1,d=(1<<u)-1,s=d>>1,m=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:c-1,Z=r?1:-1,b=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,l=d):(l=Math.floor(Math.log(e)/Math.LN2),e*(a=Math.pow(2,-l))<1&&(l--,a*=2),(e+=l+s>=1?m/a:m*Math.pow(2,1-s))*a>=2&&(l++,a/=2),l+s>=d?(o=0,l=d):l+s>=1?(o=(e*a-1)*Math.pow(2,i),l+=s):(o=e*Math.pow(2,s-1)*Math.pow(2,i),l=0));i>=8;t[n+h]=255&o,h+=Z,o/=256,i-=8);for(l=l<<i|o,u+=i;u>0;t[n+h]=255&l,h+=Z,l/=256,u-=8);t[n+h-Z]|=128*b}var CG={}.toString,YG=Array.isArray||function(t){return"[object Array]"==CG.call(t)};function RG(){return LG.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function KG(t,e){if(RG()<e)throw new RangeError("Invalid typed array length");return LG.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=LG.prototype:(null===t&&(t=new LG(e)),t.length=e),t}function LG(t,e,n){if(!(LG.TYPED_ARRAY_SUPPORT||this instanceof LG))return new LG(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return HG(this,t)}return JG(this,t,e,n)}function JG(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r);LG.TYPED_ARRAY_SUPPORT?(t=e).__proto__=LG.prototype:t=NG(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!LG.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|wG(e,n),i=(t=KG(t,r)).write(e,n);i!==r&&(t=t.slice(0,i));return t}(t,e,n):function(t,e){if(UG(e)){var n=0|kG(e.length);return 0===(t=KG(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?KG(t,0):NG(t,e);if("Buffer"===e.type&&YG(e.data))return NG(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function xG(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function HG(t,e){if(xG(e),t=KG(t,e<0?0:0|kG(e)),!LG.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function NG(t,e){var n=e.length<0?0:0|kG(e.length);t=KG(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function kG(t){if(t>=RG())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+RG().toString(16)+" bytes");return 0|t}function UG(t){return!(null==t||!t._isBuffer)}function wG(t,e){if(UG(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return dg(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return sg(t).length;default:if(r)return dg(t).length;e=(""+e).toLowerCase(),r=!0}}function TG(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return $G(this,e,n);case"utf8":case"utf-8":return OG(this,e,n);case"ascii":return _G(this,e,n);case"latin1":case"binary":return qG(this,e,n);case"base64":return EG(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return tg(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function FG(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function zG(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=LG.from(e,r)),UG(e))return 0===e.length?-1:BG(t,e,n,r,i);if("number"==typeof e)return e&=255,LG.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):BG(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function BG(t,e,n,r,i){var c,l=1,o=t.length,a=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;l=2,o/=2,a/=2,n/=2}function u(t,e){return 1===l?t[e]:t.readUInt16BE(e*l)}if(i){var d=-1;for(c=n;c<o;c++)if(u(t,c)===u(e,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===a)return d*l}else-1!==d&&(c-=c-d),d=-1}else for(n+a>o&&(n=o-a),c=n;c>=0;c--){for(var s=!0,m=0;m<a;m++)if(u(t,c+m)!==u(e,m)){s=!1;break}if(s)return c}return-1}function jG(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=e.length;if(c%2!=0)throw new TypeError("Invalid hex string");r>c/2&&(r=c/2);for(var l=0;l<r;++l){var o=parseInt(e.substr(2*l,2),16);if(isNaN(o))return l;t[n+l]=o}return l}function MG(t,e,n,r){return mg(dg(e,t.length-n),t,n,r)}function QG(t,e,n,r){return mg(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function PG(t,e,n,r){return QG(t,e,n,r)}function AG(t,e,n,r){return mg(sg(e),t,n,r)}function DG(t,e,n,r){return mg(function(t,e){for(var n,r,i,c=[],l=0;l<t.length&&!((e-=2)<0);++l)r=(n=t.charCodeAt(l))>>8,i=n%256,c.push(i),c.push(r);return c}(e,t.length-n),t,n,r)}function EG(t,e,n){return 0===e&&n===t.length?WG(t):WG(t.slice(e,n))}function OG(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var c,l,o,a,u=t[i],d=null,s=u>239?4:u>223?3:u>191?2:1;if(i+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=t[i+1]))&&(a=(31&u)<<6|63&c)>127&&(d=a);break;case 3:c=t[i+1],l=t[i+2],128==(192&c)&&128==(192&l)&&(a=(15&u)<<12|(63&c)<<6|63&l)>2047&&(a<55296||a>57343)&&(d=a);break;case 4:c=t[i+1],l=t[i+2],o=t[i+3],128==(192&c)&&128==(192&l)&&128==(192&o)&&(a=(15&u)<<18|(63&c)<<12|(63&l)<<6|63&o)>65535&&a<1114112&&(d=a)}null===d?(d=65533,s=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),i+=s}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=4096));return n}(r)}LG.TYPED_ARRAY_SUPPORT=void 0===yG.TYPED_ARRAY_SUPPORT||yG.TYPED_ARRAY_SUPPORT,LG.poolSize=8192,LG._augment=function(t){return t.__proto__=LG.prototype,t},LG.from=function(t,e,n){return JG(null,t,e,n)},LG.TYPED_ARRAY_SUPPORT&&(LG.prototype.__proto__=Uint8Array.prototype,LG.__proto__=Uint8Array),LG.alloc=function(t,e,n){return function(t,e,n,r){return xG(e),e<=0?KG(t,e):void 0!==n?"string"==typeof r?KG(t,e).fill(n,r):KG(t,e).fill(n):KG(t,e)}(null,t,e,n)},LG.allocUnsafe=function(t){return HG(null,t)},LG.allocUnsafeSlow=function(t){return HG(null,t)},LG.isBuffer=function(t){return null!=t&&(!!t._isBuffer||hg(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&hg(t.slice(0,0))}(t))},LG.compare=function(t,e){if(!UG(t)||!UG(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,c=Math.min(n,r);i<c;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},LG.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},LG.concat=function(t,e){if(!YG(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return LG.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=LG.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var c=t[n];if(!UG(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},LG.byteLength=wG,LG.prototype._isBuffer=!0,LG.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)FG(this,e,e+1);return this},LG.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)FG(this,e,e+3),FG(this,e+1,e+2);return this},LG.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)FG(this,e,e+7),FG(this,e+1,e+6),FG(this,e+2,e+5),FG(this,e+3,e+4);return this},LG.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?OG(this,0,t):TG.apply(this,arguments)},LG.prototype.equals=function(t){if(!UG(t))throw new TypeError("Argument must be a Buffer");return this===t||0===LG.compare(this,t)},LG.prototype.inspect=function(){var t="";return this.length>0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),"<Buffer "+t+">"},LG.prototype.compare=function(t,e,n,r,i){if(!UG(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var c=(i>>>=0)-(r>>>=0),l=(n>>>=0)-(e>>>=0),o=Math.min(c,l),a=this.slice(r,i),u=t.slice(e,n),d=0;d<o;++d)if(a[d]!==u[d]){c=a[d],l=u[d];break}return c<l?-1:l<c?1:0},LG.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},LG.prototype.indexOf=function(t,e,n){return zG(this,t,e,n,!0)},LG.prototype.lastIndexOf=function(t,e,n){return zG(this,t,e,n,!1)},LG.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return jG(this,t,e,n);case"utf8":case"utf-8":return MG(this,t,e,n);case"ascii":return QG(this,t,e,n);case"latin1":case"binary":return PG(this,t,e,n);case"base64":return AG(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return DG(this,t,e,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},LG.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function _G(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function qG(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function $G(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=e;c<n;++c)i+=ug(t[c]);return i}function tg(t,e,n){for(var r=t.slice(e,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function eg(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function ng(t,e,n,r,i,c){if(!UG(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<c)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function rg(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,c=Math.min(t.length-n,2);i<c;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function ig(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,c=Math.min(t.length-n,4);i<c;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function cg(t,e,n,r,i,c){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function lg(t,e,n,r,i){return i||cg(t,0,n,4),SG(t,e,n,r,23,4),n+4}function og(t,e,n,r,i){return i||cg(t,0,n,8),SG(t,e,n,r,52,8),n+8}LG.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),LG.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=LG.prototype;else{var i=e-t;n=new LG(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+t]}return n},LG.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||eg(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r},LG.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||eg(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},LG.prototype.readUInt8=function(t,e){return e||eg(t,1,this.length),this[t]},LG.prototype.readUInt16LE=function(t,e){return e||eg(t,2,this.length),this[t]|this[t+1]<<8},LG.prototype.readUInt16BE=function(t,e){return e||eg(t,2,this.length),this[t]<<8|this[t+1]},LG.prototype.readUInt32LE=function(t,e){return e||eg(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},LG.prototype.readUInt32BE=function(t,e){return e||eg(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},LG.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||eg(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*e)),r},LG.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||eg(t,e,this.length);for(var r=e,i=1,c=this[t+--r];r>0&&(i*=256);)c+=this[t+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*e)),c},LG.prototype.readInt8=function(t,e){return e||eg(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},LG.prototype.readInt16LE=function(t,e){e||eg(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},LG.prototype.readInt16BE=function(t,e){e||eg(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},LG.prototype.readInt32LE=function(t,e){return e||eg(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},LG.prototype.readInt32BE=function(t,e){return e||eg(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},LG.prototype.readFloatLE=function(t,e){return e||eg(t,4,this.length),vG(this,t,!0,23,4)},LG.prototype.readFloatBE=function(t,e){return e||eg(t,4,this.length),vG(this,t,!1,23,4)},LG.prototype.readDoubleLE=function(t,e){return e||eg(t,8,this.length),vG(this,t,!0,52,8)},LG.prototype.readDoubleBE=function(t,e){return e||eg(t,8,this.length),vG(this,t,!1,52,8)},LG.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||ng(this,t,e,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[e]=255&t;++c<n&&(i*=256);)this[e+c]=t/i&255;return e+n},LG.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||ng(this,t,e,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[e+i]=255&t;--i>=0&&(c*=256);)this[e+i]=t/c&255;return e+n},LG.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||ng(this,t,e,1,255,0),LG.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},LG.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||ng(this,t,e,2,65535,0),LG.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):rg(this,t,e,!0),e+2},LG.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||ng(this,t,e,2,65535,0),LG.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):rg(this,t,e,!1),e+2},LG.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||ng(this,t,e,4,4294967295,0),LG.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):ig(this,t,e,!0),e+4},LG.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||ng(this,t,e,4,4294967295,0),LG.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):ig(this,t,e,!1),e+4},LG.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);ng(this,t,e,n,i-1,-i)}var c=0,l=1,o=0;for(this[e]=255&t;++c<n&&(l*=256);)t<0&&0===o&&0!==this[e+c-1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},LG.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);ng(this,t,e,n,i-1,-i)}var c=n-1,l=1,o=0;for(this[e+c]=255&t;--c>=0&&(l*=256);)t<0&&0===o&&0!==this[e+c+1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},LG.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||ng(this,t,e,1,127,-128),LG.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},LG.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||ng(this,t,e,2,32767,-32768),LG.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):rg(this,t,e,!0),e+2},LG.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||ng(this,t,e,2,32767,-32768),LG.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):rg(this,t,e,!1),e+2},LG.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||ng(this,t,e,4,2147483647,-2147483648),LG.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):ig(this,t,e,!0),e+4},LG.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||ng(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),LG.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):ig(this,t,e,!1),e+4},LG.prototype.writeFloatLE=function(t,e,n){return lg(this,t,e,!0,n)},LG.prototype.writeFloatBE=function(t,e,n){return lg(this,t,e,!1,n)},LG.prototype.writeDoubleLE=function(t,e,n){return og(this,t,e,!0,n)},LG.prototype.writeDoubleBE=function(t,e,n){return og(this,t,e,!1,n)},LG.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,c=r-n;if(this===t&&n<e&&e<r)for(i=c-1;i>=0;--i)t[i+e]=this[i+n];else if(c<1e3||!LG.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+c),e);return c},LG.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!LG.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var c;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(c=e;c<n;++c)this[c]=t;else{var l=UG(t)?t:dg(new LG(t,r).toString()),o=l.length;for(c=0;c<n-e;++c)this[c+e]=l[c%o]}return this};var ag=/[^+\/0-9A-Za-z-_]/g;function ug(t){return t<16?"0"+t.toString(16):t.toString(16)}function dg(t,e){var n;e=e||1/0;for(var r=t.length,i=null,c=[],l=0;l<r;++l){if((n=t.charCodeAt(l))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&c.push(239,191,189);continue}if(l+1===r){(e-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;c.push(n)}else if(n<2048){if((e-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function sg(t){return function(t){var e,n,r,i,c,l;gG||fG();var o=t.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===t[o-2]?2:"="===t[o-1]?1:0,l=new GG(3*o/4-c),r=c>0?o-4:o;var a=0;for(e=0,n=0;e<r;e+=4,n+=3)i=XG[t.charCodeAt(e)]<<18|XG[t.charCodeAt(e+1)]<<12|XG[t.charCodeAt(e+2)]<<6|XG[t.charCodeAt(e+3)],l[a++]=i>>16&255,l[a++]=i>>8&255,l[a++]=255&i;return 2===c?(i=XG[t.charCodeAt(e)]<<2|XG[t.charCodeAt(e+1)]>>4,l[a++]=255&i):1===c&&(i=XG[t.charCodeAt(e)]<<10|XG[t.charCodeAt(e+1)]<<4|XG[t.charCodeAt(e+2)]>>2,l[a++]=i>>8&255,l[a++]=255&i),l}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(ag,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function mg(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function hg(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var Zg=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return t.apply(e,n)}},bg=Object.prototype.toString;function pg(t){return"[object Array]"===bg.call(t)}function yg(t){return void 0===t}function Ig(t){return null!==t&&"object"===l(t)}function Xg(t){if("[object Object]"!==bg.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function Gg(t){return"[object Function]"===bg.call(t)}function gg(t,e){if(null!=t)if("object"!==l(t)&&(t=[t]),pg(t))for(var n=0,r=t.length;n<r;n++)e.call(null,t[n],n,t);else for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.call(null,t[i],i,t)}var fg={isArray:pg,isArrayBuffer:function(t){return"[object ArrayBuffer]"===bg.call(t)},isBuffer:function(t){return null!==t&&!yg(t)&&null!==t.constructor&&!yg(t.constructor)&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:Ig,isPlainObject:Xg,isUndefined:yg,isDate:function(t){return"[object Date]"===bg.call(t)},isFile:function(t){return"[object File]"===bg.call(t)},isBlob:function(t){return"[object Blob]"===bg.call(t)},isFunction:Gg,isStream:function(t){return Ig(t)&&Gg(t.pipe)},isURLSearchParams:function(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:gg,merge:function t(){var e={};function n(n,r){Xg(e[r])&&Xg(n)?e[r]=t(e[r],n):Xg(n)?e[r]=t({},n):pg(n)?e[r]=n.slice():e[r]=n}for(var r=0,i=arguments.length;r<i;r++)gg(arguments[r],n);return e},extend:function(t,e,n){return gg(e,(function(e,r){t[r]=n&&"function"==typeof e?Zg(e,n):e})),t},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},stripBOM:function(t){return 65279===t.charCodeAt(0)&&(t=t.slice(1)),t}};function Vg(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var Wg=function(t,e,n){if(!e)return t;var r;if(n)r=n(e);else if(fg.isURLSearchParams(e))r=e.toString();else{var i=[];fg.forEach(e,(function(t,e){null!=t&&(fg.isArray(t)?e+="[]":t=[t],fg.forEach(t,(function(t){fg.isDate(t)?t=t.toISOString():fg.isObject(t)&&(t=JSON.stringify(t)),i.push(Vg(e)+"="+Vg(t))})))})),r=i.join("&")}if(r){var c=t.indexOf("#");-1!==c&&(t=t.slice(0,c)),t+=(-1===t.indexOf("?")?"?":"&")+r}return t};function vg(){this.handlers=[]}vg.prototype.use=function(t,e,n){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},vg.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},vg.prototype.forEach=function(t){fg.forEach(this.handlers,(function(e){null!==e&&t(e)}))};var Sg=vg;function Cg(){throw new Error("setTimeout has not been defined")}function Yg(){throw new Error("clearTimeout has not been defined")}var Rg=Cg,Kg=Yg;function Lg(t){if(Rg===setTimeout)return setTimeout(t,0);if((Rg===Cg||!Rg)&&setTimeout)return Rg=setTimeout,setTimeout(t,0);try{return Rg(t,0)}catch(e){try{return Rg.call(null,t,0)}catch(e){return Rg.call(this,t,0)}}}"function"==typeof yG.setTimeout&&(Rg=setTimeout),"function"==typeof yG.clearTimeout&&(Kg=clearTimeout);var Jg,xg=[],Hg=!1,Ng=-1;function kg(){Hg&&Jg&&(Hg=!1,Jg.length?xg=Jg.concat(xg):Ng=-1,xg.length&&Ug())}function Ug(){if(!Hg){var t=Lg(kg);Hg=!0;for(var e=xg.length;e;){for(Jg=xg,xg=[];++Ng<e;)Jg&&Jg[Ng].run();Ng=-1,e=xg.length}Jg=null,Hg=!1,function(t){if(Kg===clearTimeout)return clearTimeout(t);if((Kg===Yg||!Kg)&&clearTimeout)return Kg=clearTimeout,clearTimeout(t);try{Kg(t)}catch(e){try{return Kg.call(null,t)}catch(e){return Kg.call(this,t)}}}(t)}}function wg(t,e){this.fun=t,this.array=e}wg.prototype.run=function(){this.fun.apply(null,this.array)};function Tg(){}var Fg=Tg,zg=Tg,Bg=Tg,jg=Tg,Mg=Tg,Qg=Tg,Pg=Tg;var Ag=yG.performance||{},Dg=Ag.now||Ag.mozNow||Ag.msNow||Ag.oNow||Ag.webkitNow||function(){return(new Date).getTime()};var Eg=new Date;var Og={nextTick:function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];xg.push(new wg(t,e)),1!==xg.length||Hg||Lg(Ug)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:Fg,addListener:zg,once:Bg,off:jg,removeListener:Mg,removeAllListeners:Qg,emit:Pg,binding:function(t){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(t){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(t){var e=.001*Dg.call(Ag),n=Math.floor(e),r=Math.floor(e%1*1e9);return t&&(n-=t[0],(r-=t[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-Eg)/1e3}},_g=Og,qg=function(t,e){fg.forEach(t,(function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])}))},$g=function(t,e,n,r,i){return t.config=e,n&&(t.code=n),t.request=r,t.response=i,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t},tf=function(t,e,n,r,i){var c=new Error(t);return $g(c,e,n,r,i)},ef=fg.isStandardBrowserEnv()?{write:function(t,e,n,r,i,c){var l=[];l.push(t+"="+encodeURIComponent(e)),fg.isNumber(n)&&l.push("expires="+new Date(n).toGMTString()),fg.isString(r)&&l.push("path="+r),fg.isString(i)&&l.push("domain="+i),!0===c&&l.push("secure"),document.cookie=l.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},nf=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],rf=fg.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=r(window.location.href),function(e){var n=fg.isString(e)?r(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0},cf=function(t){return new Promise((function(e,n){var r=t.data,i=t.headers,c=t.responseType;fg.isFormData(r)&&delete i["Content-Type"];var l=new XMLHttpRequest;if(t.auth){var o=t.auth.username||"",a=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";i.Authorization="Basic "+btoa(o+":"+a)}var u,d,s=(u=t.baseURL,d=t.url,u&&!/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(d)?function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}(u,d):d);function m(){if(l){var r="getAllResponseHeaders"in l?function(t){var e,n,r,i={};return t?(fg.forEach(t.split("\n"),(function(t){if(r=t.indexOf(":"),e=fg.trim(t.substr(0,r)).toLowerCase(),n=fg.trim(t.substr(r+1)),e){if(i[e]&&nf.indexOf(e)>=0)return;i[e]="set-cookie"===e?(i[e]?i[e]:[]).concat([n]):i[e]?i[e]+", "+n:n}})),i):i}(l.getAllResponseHeaders()):null,i={data:c&&"text"!==c&&"json"!==c?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:t,request:l};!function(t,e,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?e(tf("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)}(e,n,i),l=null}}if(l.open(t.method.toUpperCase(),Wg(s,t.params,t.paramsSerializer),!0),l.timeout=t.timeout,"onloadend"in l?l.onloadend=m:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(m)},l.onabort=function(){l&&(n(tf("Request aborted",t,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(tf("Network Error",t,null,l)),l=null},l.ontimeout=function(){var e="timeout of "+t.timeout+"ms exceeded";t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(tf(e,t,t.transitional&&t.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},fg.isStandardBrowserEnv()){var h=(t.withCredentials||rf(s))&&t.xsrfCookieName?ef.read(t.xsrfCookieName):void 0;h&&(i[t.xsrfHeaderName]=h)}"setRequestHeader"in l&&fg.forEach(i,(function(t,e){void 0===r&&"content-type"===e.toLowerCase()?delete i[e]:l.setRequestHeader(e,t)})),fg.isUndefined(t.withCredentials)||(l.withCredentials=!!t.withCredentials),c&&"json"!==c&&(l.responseType=t.responseType),"function"==typeof t.onDownloadProgress&&l.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){l&&(l.abort(),n(t),l=null)})),r||(r=null),l.send(r)}))},lf={"Content-Type":"application/x-www-form-urlencoded"};function of(t,e){!fg.isUndefined(t)&&fg.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var af,uf={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==_g&&"[object process]"===Object.prototype.toString.call(_g))&&(af=cf),af),transformRequest:[function(t,e){return qg(e,"Accept"),qg(e,"Content-Type"),fg.isFormData(t)||fg.isArrayBuffer(t)||fg.isBuffer(t)||fg.isStream(t)||fg.isFile(t)||fg.isBlob(t)?t:fg.isArrayBufferView(t)?t.buffer:fg.isURLSearchParams(t)?(of(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):fg.isObject(t)||e&&"application/json"===e["Content-Type"]?(of(e,"application/json"),function(t,e,n){if(fg.isString(t))try{return(e||JSON.parse)(t),fg.trim(t)}catch(t){if("SyntaxError"!==t.name)throw t}return(n||JSON.stringify)(t)}(t)):t}],transformResponse:[function(t){var e=this.transitional,n=e&&e.silentJSONParsing,r=e&&e.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&fg.isString(t)&&t.length)try{return JSON.parse(t)}catch(t){if(i){if("SyntaxError"===t.name)throw $g(t,this,"E_JSON_PARSE");throw t}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(t){return t>=200&&t<300}};uf.headers={common:{Accept:"application/json, text/plain, */*"}},fg.forEach(["delete","get","head"],(function(t){uf.headers[t]={}})),fg.forEach(["post","put","patch"],(function(t){uf.headers[t]=fg.merge(lf)}));var df=uf,sf=function(t,e,n){var r=this||df;return fg.forEach(n,(function(n){t=n.call(r,t,e)})),t},mf=function(t){return!(!t||!t.__CANCEL__)};function hf(t){t.cancelToken&&t.cancelToken.throwIfRequested()}var Zf=function(t){return hf(t),t.headers=t.headers||{},t.data=sf.call(t,t.data,t.headers,t.transformRequest),t.headers=fg.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),fg.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||df.adapter)(t).then((function(e){return hf(t),e.data=sf.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return mf(e)||(hf(t),e&&e.response&&(e.response.data=sf.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))},bf=function(t,e){e=e||{};var n={},r=["url","method","data"],i=["headers","auth","proxy","params"],c=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],l=["validateStatus"];function o(t,e){return fg.isPlainObject(t)&&fg.isPlainObject(e)?fg.merge(t,e):fg.isPlainObject(e)?fg.merge({},e):fg.isArray(e)?e.slice():e}function a(r){fg.isUndefined(e[r])?fg.isUndefined(t[r])||(n[r]=o(void 0,t[r])):n[r]=o(t[r],e[r])}fg.forEach(r,(function(t){fg.isUndefined(e[t])||(n[t]=o(void 0,e[t]))})),fg.forEach(i,a),fg.forEach(c,(function(r){fg.isUndefined(e[r])?fg.isUndefined(t[r])||(n[r]=o(void 0,t[r])):n[r]=o(void 0,e[r])})),fg.forEach(l,(function(r){r in e?n[r]=o(t[r],e[r]):r in t&&(n[r]=o(void 0,t[r]))}));var u=r.concat(i).concat(c).concat(l),d=Object.keys(t).concat(Object.keys(e)).filter((function(t){return-1===u.indexOf(t)}));return fg.forEach(d,a),n},pf={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},yf={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){yf[t]=function(n){return l(n)===t||"a"+(e<1?"n ":" ")+t}}));var If={},Xf=pf.version.split(".");function Gf(t,e){for(var n=e?e.split("."):Xf,r=t.split("."),i=0;i<3;i++){if(n[i]>r[i])return!0;if(n[i]<r[i])return!1}return!1}yf.transitional=function(t,e,n){var r=e&&Gf(e);function i(t,e){return"[Axios v"+pf.version+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,c,l){if(!1===t)throw new Error(i(c," has been removed in "+e));return r&&!If[c]&&(If[c]=!0,console.warn(i(c," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,c,l)}};var gf={isOlderVersion:Gf,assertOptions:function(t,e,n){if("object"!==l(t))throw new TypeError("options must be an object");for(var r=Object.keys(t),i=r.length;i-- >0;){var c=r[i],o=e[c];if(o){var a=t[c],u=void 0===a||o(a,c,t);if(!0!==u)throw new TypeError("option "+c+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+c)}},validators:yf},ff=gf.validators;function Vf(t){this.defaults=t,this.interceptors={request:new Sg,response:new Sg}}Vf.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=bf(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=t.transitional;void 0!==e&&gf.assertOptions(e,{silentJSONParsing:ff.transitional(ff.boolean,"1.0.0"),forcedJSONParsing:ff.transitional(ff.boolean,"1.0.0"),clarifyTimeoutError:ff.transitional(ff.boolean,"1.0.0")},!1);var n=[],r=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(r=r&&e.synchronous,n.unshift(e.fulfilled,e.rejected))}));var i,c=[];if(this.interceptors.response.forEach((function(t){c.push(t.fulfilled,t.rejected)})),!r){var l=[Zf,void 0];for(Array.prototype.unshift.apply(l,n),l=l.concat(c),i=Promise.resolve(t);l.length;)i=i.then(l.shift(),l.shift());return i}for(var o=t;n.length;){var a=n.shift(),u=n.shift();try{o=a(o)}catch(t){u(t);break}}try{i=Zf(o)}catch(t){return Promise.reject(t)}for(;c.length;)i=i.then(c.shift(),c.shift());return i},Vf.prototype.getUri=function(t){return t=bf(this.defaults,t),Wg(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},fg.forEach(["delete","get","head","options"],(function(t){Vf.prototype[t]=function(e,n){return this.request(bf(n||{},{method:t,url:e,data:(n||{}).data}))}})),fg.forEach(["post","put","patch"],(function(t){Vf.prototype[t]=function(e,n,r){return this.request(bf(r||{},{method:t,url:e,data:n}))}}));var Wf=Vf;function vf(t){this.message=t}vf.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},vf.prototype.__CANCEL__=!0;var Sf=vf;function Cf(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new Sf(t),e(n.reason))}))}Cf.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},Cf.source=function(){var t,e=new Cf((function(e){t=e}));return{token:e,cancel:t}};var Yf=Cf;function Rf(t){var e=new Wf(t),n=Zg(Wf.prototype.request,e);return fg.extend(n,Wf.prototype,e),fg.extend(n,e),n}var Kf=Rf(df);Kf.Axios=Wf,Kf.create=function(t){return Rf(bf(Kf.defaults,t))},Kf.Cancel=Sf,Kf.CancelToken=Yf,Kf.isCancel=mf,Kf.all=function(t){return Promise.all(t)},Kf.spread=function(t){return function(e){return t.apply(null,e)}},Kf.isAxiosError=function(t){return"object"===l(t)&&!0===t.isAxiosError};var Lf=Kf,Jf=Kf;Lf.default=Jf;var xf,Hf,Nf=Lf;function kf(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Uf(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Uf(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,l=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return l=t.done,t},e:function(t){o=!0,c=t},f:function(){try{l||null==n.return||n.return()}finally{if(o)throw c}}}}function Uf(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function wf(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Tf(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?wf(Object(n),!0).forEach((function(e){eG(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):wf(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function Ff(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}
1
+ var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function n(t,e,n){return n={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&n.path)}},t(n,n.exports),n.exports}var i,r,c=n((function(t){function e(n){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?(t.exports=e=function(t){return typeof t},t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=e=function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.default=t.exports,t.exports.__esModule=!0),e(n)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),l=e(c),o=function(t){return t&&t.Math==Math&&t},a=o("object"==("undefined"==typeof globalThis?"undefined":l(globalThis))&&globalThis)||o("object"==("undefined"==typeof window?"undefined":l(window))&&window)||o("object"==("undefined"==typeof self?"undefined":l(self))&&self)||o("object"==l(t)&&t)||function(){return this}()||Function("return this")(),u=function(t){try{return!!t()}catch(t){return!0}},d=!u((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),s=Function.prototype.call,m=s.bind?s.bind(s):function(){return s.apply(s,arguments)},h={}.propertyIsEnumerable,b=Object.getOwnPropertyDescriptor,Z=b&&!h.call({1:2},1)?function(t){var e=b(this,t);return!!e&&e.enumerable}:h,p={f:Z},y=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},I=Function.prototype,X=I.bind,g=I.call,G=X&&X.bind(g),f=X?function(t){return t&&G(g,t)}:function(t){return t&&function(){return g.apply(t,arguments)}},V=f({}.toString),W=f("".slice),v=function(t){return W(V(t),8,-1)},S=a.Object,C=f("".split),Y=u((function(){return!S("z").propertyIsEnumerable(0)}))?function(t){return"String"==v(t)?C(t,""):S(t)}:S,R=a.TypeError,K=function(t){if(null==t)throw R("Can't call method on "+t);return t},L=function(t){return Y(K(t))},J=function(t){return"function"==typeof t},x=function(t){return"object"==l(t)?null!==t:J(t)},H=function(t){return J(t)?t:void 0},N=function(t,e){return arguments.length<2?H(a[t]):a[t]&&a[t][e]},k=f({}.isPrototypeOf),U=N("navigator","userAgent")||"",w=a.process,T=a.Deno,F=w&&w.versions||T&&T.version,B=F&&F.v8;B&&(r=(i=B.split("."))[0]>0&&i[0]<4?1:+(i[0]+i[1])),!r&&U&&(!(i=U.match(/Edge\/(\d+)/))||i[1]>=74)&&(i=U.match(/Chrome\/(\d+)/))&&(r=+i[1]);var z=r,j=!!Object.getOwnPropertySymbols&&!u((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&z&&z<41})),A=j&&!Symbol.sham&&"symbol"==l(Symbol.iterator),M=a.Object,P=A?function(t){return"symbol"==l(t)}:function(t){var e=N("Symbol");return J(e)&&k(e.prototype,M(t))},Q=a.String,D=function(t){try{return Q(t)}catch(t){return"Object"}},E=a.TypeError,O=function(t){if(J(t))return t;throw E(D(t)+" is not a function")},_=function(t,e){var n=t[e];return null==n?void 0:O(n)},q=a.TypeError,$=function(t,e){var n,i;if("string"===e&&J(n=t.toString)&&!x(i=m(n,t)))return i;if(J(n=t.valueOf)&&!x(i=m(n,t)))return i;if("string"!==e&&J(n=t.toString)&&!x(i=m(n,t)))return i;throw q("Can't convert object to primitive value")},tt=Object.defineProperty,et=function(t,e){try{tt(a,t,{value:e,configurable:!0,writable:!0})}catch(n){a[t]=e}return e},nt=a["__core-js_shared__"]||et("__core-js_shared__",{}),it=n((function(t){(t.exports=function(t,e){return nt[t]||(nt[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.19.3",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})})),rt=a.Object,ct=function(t){return rt(K(t))},lt=f({}.hasOwnProperty),ot=Object.hasOwn||function(t,e){return lt(ct(t),e)},at=0,ut=Math.random(),dt=f(1..toString),st=function(t){return"Symbol("+(void 0===t?"":t)+")_"+dt(++at+ut,36)},mt=it("wks"),ht=a.Symbol,bt=ht&&ht.for,Zt=A?ht:ht&&ht.withoutSetter||st,pt=function(t){if(!ot(mt,t)||!j&&"string"!=typeof mt[t]){var e="Symbol."+t;j&&ot(ht,t)?mt[t]=ht[t]:mt[t]=A&&bt?bt(e):Zt(e)}return mt[t]},yt=a.TypeError,It=pt("toPrimitive"),Xt=function(t,e){if(!x(t)||P(t))return t;var n,i=_(t,It);if(i){if(void 0===e&&(e="default"),n=m(i,t,e),!x(n)||P(n))return n;throw yt("Can't convert object to primitive value")}return void 0===e&&(e="number"),$(t,e)},gt=function(t){var e=Xt(t,"string");return P(e)?e:e+""},Gt=a.document,ft=x(Gt)&&x(Gt.createElement),Vt=function(t){return ft?Gt.createElement(t):{}},Wt=!d&&!u((function(){return 7!=Object.defineProperty(Vt("div"),"a",{get:function(){return 7}}).a})),vt=Object.getOwnPropertyDescriptor,St=d?vt:function(t,e){if(t=L(t),e=gt(e),Wt)try{return vt(t,e)}catch(t){}if(ot(t,e))return y(!m(p.f,t,e),t[e])},Ct={f:St},Yt=a.String,Rt=a.TypeError,Kt=function(t){if(x(t))return t;throw Rt(Yt(t)+" is not an object")},Lt=a.TypeError,Jt=Object.defineProperty,xt=d?Jt:function(t,e,n){if(Kt(t),e=gt(e),Kt(n),Wt)try{return Jt(t,e,n)}catch(t){}if("get"in n||"set"in n)throw Lt("Accessors not supported");return"value"in n&&(t[e]=n.value),t},Ht={f:xt},Nt=d?function(t,e,n){return Ht.f(t,e,y(1,n))}:function(t,e,n){return t[e]=n,t},kt=f(Function.toString);J(nt.inspectSource)||(nt.inspectSource=function(t){return kt(t)});var Ut,wt,Tt,Ft=nt.inspectSource,Bt=a.WeakMap,zt=J(Bt)&&/native code/.test(Ft(Bt)),jt=it("keys"),At=function(t){return jt[t]||(jt[t]=st(t))},Mt={},Pt=a.TypeError,Qt=a.WeakMap;if(zt||nt.state){var Dt=nt.state||(nt.state=new Qt),Et=f(Dt.get),Ot=f(Dt.has),_t=f(Dt.set);Ut=function(t,e){if(Ot(Dt,t))throw new Pt("Object already initialized");return e.facade=t,_t(Dt,t,e),e},wt=function(t){return Et(Dt,t)||{}},Tt=function(t){return Ot(Dt,t)}}else{var qt=At("state");Mt[qt]=!0,Ut=function(t,e){if(ot(t,qt))throw new Pt("Object already initialized");return e.facade=t,Nt(t,qt,e),e},wt=function(t){return ot(t,qt)?t[qt]:{}},Tt=function(t){return ot(t,qt)}}var $t={set:Ut,get:wt,has:Tt,enforce:function(t){return Tt(t)?wt(t):Ut(t,{})},getterFor:function(t){return function(e){var n;if(!x(e)||(n=wt(e)).type!==t)throw Pt("Incompatible receiver, "+t+" required");return n}}},te=Function.prototype,ee=d&&Object.getOwnPropertyDescriptor,ne=ot(te,"name"),ie={EXISTS:ne,PROPER:ne&&"something"===function(){}.name,CONFIGURABLE:ne&&(!d||d&&ee(te,"name").configurable)},re=n((function(t){var e=ie.CONFIGURABLE,n=$t.get,i=$t.enforce,r=String(String).split("String");(t.exports=function(t,n,c,l){var o,u=!!l&&!!l.unsafe,d=!!l&&!!l.enumerable,s=!!l&&!!l.noTargetGet,m=l&&void 0!==l.name?l.name:n;J(c)&&("Symbol("===String(m).slice(0,7)&&(m="["+String(m).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!ot(c,"name")||e&&c.name!==m)&&Nt(c,"name",m),(o=i(c)).source||(o.source=r.join("string"==typeof m?m:""))),t!==a?(u?!s&&t[n]&&(d=!0):delete t[n],d?t[n]=c:Nt(t,n,c)):d?t[n]=c:et(n,c)})(Function.prototype,"toString",(function(){return J(this)&&n(this).source||Ft(this)}))})),ce=Math.ceil,le=Math.floor,oe=function(t){var e=+t;return e!=e||0===e?0:(e>0?le:ce)(e)},ae=Math.max,ue=Math.min,de=function(t,e){var n=oe(t);return n<0?ae(n+e,0):ue(n,e)},se=Math.min,me=function(t){return t>0?se(oe(t),9007199254740991):0},he=function(t){return me(t.length)},be=function(t){return function(e,n,i){var r,c=L(e),l=he(c),o=de(i,l);if(t&&n!=n){for(;l>o;)if((r=c[o++])!=r)return!0}else for(;l>o;o++)if((t||o in c)&&c[o]===n)return t||o||0;return!t&&-1}},Ze={includes:be(!0),indexOf:be(!1)},pe=Ze.indexOf,ye=f([].push),Ie=function(t,e){var n,i=L(t),r=0,c=[];for(n in i)!ot(Mt,n)&&ot(i,n)&&ye(c,n);for(;e.length>r;)ot(i,n=e[r++])&&(~pe(c,n)||ye(c,n));return c},Xe=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],ge=Xe.concat("length","prototype"),Ge=Object.getOwnPropertyNames||function(t){return Ie(t,ge)},fe={f:Ge},Ve={f:Object.getOwnPropertySymbols},We=f([].concat),ve=N("Reflect","ownKeys")||function(t){var e=fe.f(Kt(t)),n=Ve.f;return n?We(e,n(t)):e},Se=function(t,e){for(var n=ve(e),i=Ht.f,r=Ct.f,c=0;c<n.length;c++){var l=n[c];ot(t,l)||i(t,l,r(e,l))}},Ce=/#|\.prototype\./,Ye=function(t,e){var n=Ke[Re(t)];return n==Je||n!=Le&&(J(e)?u(e):!!e)},Re=Ye.normalize=function(t){return String(t).replace(Ce,".").toLowerCase()},Ke=Ye.data={},Le=Ye.NATIVE="N",Je=Ye.POLYFILL="P",xe=Ye,He=Ct.f,Ne=function(t,e){var n,i,r,c,o,u=t.target,d=t.global,s=t.stat;if(n=d?a:s?a[u]||et(u,{}):(a[u]||{}).prototype)for(i in e){if(c=e[i],r=t.noTargetGet?(o=He(n,i))&&o.value:n[i],!xe(d?i:u+(s?".":"#")+i,t.forced)&&void 0!==r){if(l(c)==l(r))continue;Se(c,r)}(t.sham||r&&r.sham)&&Nt(c,"sham",!0),re(n,i,c,t)}},ke=Function.prototype,Ue=ke.apply,we=ke.bind,Te=ke.call,Fe="object"==("undefined"==typeof Reflect?"undefined":l(Reflect))&&Reflect.apply||(we?Te.bind(Ue):function(){return Te.apply(Ue,arguments)}),Be=Array.isArray||function(t){return"Array"==v(t)},ze={};ze[pt("toStringTag")]="z";var je,Ae="[object z]"===String(ze),Me=pt("toStringTag"),Pe=a.Object,Qe="Arguments"==v(function(){return arguments}()),De=Ae?v:function(t){var e,n,i;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Pe(t),Me))?n:Qe?v(e):"Object"==(i=v(e))&&J(e.callee)?"Arguments":i},Ee=a.String,Oe=function(t){if("Symbol"===De(t))throw TypeError("Cannot convert a Symbol value to a string");return Ee(t)},_e=Object.keys||function(t){return Ie(t,Xe)},qe=d?Object.defineProperties:function(t,e){Kt(t);for(var n,i=L(e),r=_e(e),c=r.length,l=0;c>l;)Ht.f(t,n=r[l++],i[n]);return t},$e=N("document","documentElement"),tn=At("IE_PROTO"),en=function(){},nn=function(t){return"<script>"+t+"<\/script>"},rn=function(t){t.write(nn("")),t.close();var e=t.parentWindow.Object;return t=null,e},cn=function(){try{je=new ActiveXObject("htmlfile")}catch(t){}var t,e;cn="undefined"!=typeof document?document.domain&&je?rn(je):((e=Vt("iframe")).style.display="none",$e.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(nn("document.F=Object")),t.close(),t.F):rn(je);for(var n=Xe.length;n--;)delete cn.prototype[Xe[n]];return cn()};Mt[tn]=!0;var ln=Object.create||function(t,e){var n;return null!==t?(en.prototype=Kt(t),n=new en,en.prototype=null,n[tn]=t):n=cn(),void 0===e?n:qe(n,e)},on=function(t,e,n){var i=gt(e);i in t?Ht.f(t,i,y(0,n)):t[i]=n},an=a.Array,un=Math.max,dn=function(t,e,n){for(var i=he(t),r=de(e,i),c=de(void 0===n?i:n,i),l=an(un(c-r,0)),o=0;r<c;r++,o++)on(l,o,t[r]);return l.length=o,l},sn=fe.f,mn="object"==("undefined"==typeof window?"undefined":l(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],hn={f:function(t){return mn&&"Window"==v(t)?function(t){try{return sn(t)}catch(t){return dn(mn)}}(t):sn(L(t))}},bn=f([].slice),Zn={f:pt},pn=a,yn=Ht.f,In=function(t){var e=pn.Symbol||(pn.Symbol={});ot(e,t)||yn(e,t,{value:Zn.f(t)})},Xn=Ht.f,gn=pt("toStringTag"),Gn=function(t,e,n){t&&!ot(t=n?t:t.prototype,gn)&&Xn(t,gn,{configurable:!0,value:e})},fn=f(f.bind),Vn=function(t,e){return O(t),void 0===e?t:fn?fn(t,e):function(){return t.apply(e,arguments)}},Wn=function(){},vn=[],Sn=N("Reflect","construct"),Cn=/^\s*(?:class|function)\b/,Yn=f(Cn.exec),Rn=!Cn.exec(Wn),Kn=function(t){if(!J(t))return!1;try{return Sn(Wn,vn,t),!0}catch(t){return!1}},Ln=!Sn||u((function(){var t;return Kn(Kn.call)||!Kn(Object)||!Kn((function(){t=!0}))||t}))?function(t){if(!J(t))return!1;switch(De(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}return Rn||!!Yn(Cn,Ft(t))}:Kn,Jn=pt("species"),xn=a.Array,Hn=function(t,e){return new(function(t){var e;return Be(t)&&(e=t.constructor,(Ln(e)&&(e===xn||Be(e.prototype))||x(e)&&null===(e=e[Jn]))&&(e=void 0)),void 0===e?xn:e}(t))(0===e?0:e)},Nn=f([].push),kn=function(t){var e=1==t,n=2==t,i=3==t,r=4==t,c=6==t,l=7==t,o=5==t||c;return function(a,u,d,s){for(var m,h,b=ct(a),Z=Y(b),p=Vn(u,d),y=he(Z),I=0,X=s||Hn,g=e?X(a,y):n||l?X(a,0):void 0;y>I;I++)if((o||I in Z)&&(h=p(m=Z[I],I,b),t))if(e)g[I]=h;else if(h)switch(t){case 3:return!0;case 5:return m;case 6:return I;case 2:Nn(g,m)}else switch(t){case 4:return!1;case 7:Nn(g,m)}return c?-1:i||r?r:g}},Un={forEach:kn(0),map:kn(1),filter:kn(2),some:kn(3),every:kn(4),find:kn(5),findIndex:kn(6),filterReject:kn(7)},wn=Un.forEach,Tn=At("hidden"),Fn=pt("toPrimitive"),Bn=$t.set,zn=$t.getterFor("Symbol"),jn=Object.prototype,An=a.Symbol,Mn=An&&An.prototype,Pn=a.TypeError,Qn=a.QObject,Dn=N("JSON","stringify"),En=Ct.f,On=Ht.f,_n=hn.f,qn=p.f,$n=f([].push),ti=it("symbols"),ei=it("op-symbols"),ni=it("string-to-symbol-registry"),ii=it("symbol-to-string-registry"),ri=it("wks"),ci=!Qn||!Qn.prototype||!Qn.prototype.findChild,li=d&&u((function(){return 7!=ln(On({},"a",{get:function(){return On(this,"a",{value:7}).a}})).a}))?function(t,e,n){var i=En(jn,e);i&&delete jn[e],On(t,e,n),i&&t!==jn&&On(jn,e,i)}:On,oi=function(t,e){var n=ti[t]=ln(Mn);return Bn(n,{type:"Symbol",tag:t,description:e}),d||(n.description=e),n},ai=function(t,e,n){t===jn&&ai(ei,e,n),Kt(t);var i=gt(e);return Kt(n),ot(ti,i)?(n.enumerable?(ot(t,Tn)&&t[Tn][i]&&(t[Tn][i]=!1),n=ln(n,{enumerable:y(0,!1)})):(ot(t,Tn)||On(t,Tn,y(1,{})),t[Tn][i]=!0),li(t,i,n)):On(t,i,n)},ui=function(t,e){Kt(t);var n=L(e),i=_e(n).concat(hi(n));return wn(i,(function(e){d&&!m(di,n,e)||ai(t,e,n[e])})),t},di=function(t){var e=gt(t),n=m(qn,this,e);return!(this===jn&&ot(ti,e)&&!ot(ei,e))&&(!(n||!ot(this,e)||!ot(ti,e)||ot(this,Tn)&&this[Tn][e])||n)},si=function(t,e){var n=L(t),i=gt(e);if(n!==jn||!ot(ti,i)||ot(ei,i)){var r=En(n,i);return!r||!ot(ti,i)||ot(n,Tn)&&n[Tn][i]||(r.enumerable=!0),r}},mi=function(t){var e=_n(L(t)),n=[];return wn(e,(function(t){ot(ti,t)||ot(Mt,t)||$n(n,t)})),n},hi=function(t){var e=t===jn,n=_n(e?ei:L(t)),i=[];return wn(n,(function(t){!ot(ti,t)||e&&!ot(jn,t)||$n(i,ti[t])})),i};if(j||(An=function(){if(k(Mn,this))throw Pn("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?Oe(arguments[0]):void 0,e=st(t),n=function t(n){this===jn&&m(t,ei,n),ot(this,Tn)&&ot(this[Tn],e)&&(this[Tn][e]=!1),li(this,e,y(1,n))};return d&&ci&&li(jn,e,{configurable:!0,set:n}),oi(e,t)},Mn=An.prototype,re(Mn,"toString",(function(){return zn(this).tag})),re(An,"withoutSetter",(function(t){return oi(st(t),t)})),p.f=di,Ht.f=ai,Ct.f=si,fe.f=hn.f=mi,Ve.f=hi,Zn.f=function(t){return oi(pt(t),t)},d&&(On(Mn,"description",{configurable:!0,get:function(){return zn(this).description}}),re(jn,"propertyIsEnumerable",di,{unsafe:!0}))),Ne({global:!0,wrap:!0,forced:!j,sham:!j},{Symbol:An}),wn(_e(ri),(function(t){In(t)})),Ne({target:"Symbol",stat:!0,forced:!j},{for:function(t){var e=Oe(t);if(ot(ni,e))return ni[e];var n=An(e);return ni[e]=n,ii[n]=e,n},keyFor:function(t){if(!P(t))throw Pn(t+" is not a symbol");if(ot(ii,t))return ii[t]},useSetter:function(){ci=!0},useSimple:function(){ci=!1}}),Ne({target:"Object",stat:!0,forced:!j,sham:!d},{create:function(t,e){return void 0===e?ln(t):ui(ln(t),e)},defineProperty:ai,defineProperties:ui,getOwnPropertyDescriptor:si}),Ne({target:"Object",stat:!0,forced:!j},{getOwnPropertyNames:mi,getOwnPropertySymbols:hi}),Ne({target:"Object",stat:!0,forced:u((function(){Ve.f(1)}))},{getOwnPropertySymbols:function(t){return Ve.f(ct(t))}}),Dn){var bi=!j||u((function(){var t=An();return"[null]"!=Dn([t])||"{}"!=Dn({a:t})||"{}"!=Dn(Object(t))}));Ne({target:"JSON",stat:!0,forced:bi},{stringify:function(t,e,n){var i=bn(arguments),r=e;if((x(e)||void 0!==t)&&!P(t))return Be(e)||(e=function(t,e){if(J(r)&&(e=m(r,this,t,e)),!P(e))return e}),i[1]=e,Fe(Dn,null,i)}})}if(!Mn[Fn]){var Zi=Mn.valueOf;re(Mn,Fn,(function(t){return m(Zi,this)}))}Gn(An,"Symbol"),Mt[Tn]=!0;var pi=Ht.f,yi=a.Symbol,Ii=yi&&yi.prototype;if(d&&J(yi)&&(!("description"in Ii)||void 0!==yi().description)){var Xi={},gi=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:Oe(arguments[0]),e=k(Ii,this)?new yi(t):void 0===t?yi():yi(t);return""===t&&(Xi[e]=!0),e};Se(gi,yi),gi.prototype=Ii,Ii.constructor=gi;var Gi="Symbol(test)"==String(yi("test")),fi=f(Ii.toString),Vi=f(Ii.valueOf),Wi=/^Symbol\((.*)\)[^)]+$/,vi=f("".replace),Si=f("".slice);pi(Ii,"description",{configurable:!0,get:function(){var t=Vi(this),e=fi(t);if(ot(Xi,t))return"";var n=Gi?Si(e,7,-1):vi(e,Wi,"$1");return""===n?void 0:n}}),Ne({global:!0,forced:!0},{Symbol:gi})}In("asyncIterator"),In("hasInstance"),In("isConcatSpreadable"),In("iterator"),In("match"),In("matchAll"),In("replace"),In("search"),In("species"),In("split"),In("toPrimitive"),In("toStringTag"),In("unscopables");var Ci=pt("species"),Yi=function(t){return z>=51||!u((function(){var e=[];return(e.constructor={})[Ci]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},Ri=pt("isConcatSpreadable"),Ki=a.TypeError,Li=z>=51||!u((function(){var t=[];return t[Ri]=!1,t.concat()[0]!==t})),Ji=Yi("concat"),xi=function(t){if(!x(t))return!1;var e=t[Ri];return void 0!==e?!!e:Be(t)};Ne({target:"Array",proto:!0,forced:!Li||!Ji},{concat:function(t){var e,n,i,r,c,l=ct(this),o=Hn(l,0),a=0;for(e=-1,i=arguments.length;e<i;e++)if(xi(c=-1===e?l:arguments[e])){if(a+(r=he(c))>9007199254740991)throw Ki("Maximum allowed index exceeded");for(n=0;n<r;n++,a++)n in c&&on(o,a,c[n])}else{if(a>=9007199254740991)throw Ki("Maximum allowed index exceeded");on(o,a++,c)}return o.length=a,o}});var Hi=Math.min,Ni=[].copyWithin||function(t,e){var n=ct(this),i=he(n),r=de(t,i),c=de(e,i),l=arguments.length>2?arguments[2]:void 0,o=Hi((void 0===l?i:de(l,i))-c,i-r),a=1;for(c<r&&r<c+o&&(a=-1,c+=o-1,r+=o-1);o-- >0;)c in n?n[r]=n[c]:delete n[r],r+=a,c+=a;return n},ki=pt("unscopables"),Ui=Array.prototype;null==Ui[ki]&&Ht.f(Ui,ki,{configurable:!0,value:ln(null)});var wi=function(t){Ui[ki][t]=!0};Ne({target:"Array",proto:!0},{copyWithin:Ni}),wi("copyWithin");var Ti=function(t){for(var e=ct(this),n=he(e),i=arguments.length,r=de(i>1?arguments[1]:void 0,n),c=i>2?arguments[2]:void 0,l=void 0===c?n:de(c,n);l>r;)e[r++]=t;return e};Ne({target:"Array",proto:!0},{fill:Ti}),wi("fill");var Fi=Un.filter,Bi=Yi("filter");Ne({target:"Array",proto:!0,forced:!Bi},{filter:function(t){return Fi(this,t,arguments.length>1?arguments[1]:void 0)}});var zi=Un.find,ji=!0;"find"in[]&&Array(1).find((function(){ji=!1})),Ne({target:"Array",proto:!0,forced:ji},{find:function(t){return zi(this,t,arguments.length>1?arguments[1]:void 0)}}),wi("find");var Ai=Un.findIndex,Mi=!0;"findIndex"in[]&&Array(1).findIndex((function(){Mi=!1})),Ne({target:"Array",proto:!0,forced:Mi},{findIndex:function(t){return Ai(this,t,arguments.length>1?arguments[1]:void 0)}}),wi("findIndex");var Pi=a.TypeError,Qi=function t(e,n,i,r,c,l,o,a){for(var u,d=c,s=0,m=!!o&&Vn(o,a);s<r;){if(s in i){if(u=m?m(i[s],s,n):i[s],l>0&&Be(u))d=t(e,n,u,he(u),d,l-1)-1;else{if(d>=9007199254740991)throw Pi("Exceed the acceptable array length");e[d]=u}d++}s++}return d};Ne({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=ct(this),n=he(e),i=Hn(e,0);return i.length=Qi(i,e,e,n,0,void 0===t?1:oe(t)),i}}),Ne({target:"Array",proto:!0},{flatMap:function(t){var e,n=ct(this),i=he(n);return O(t),(e=Hn(n,0)).length=Qi(e,n,n,i,0,1,t,arguments.length>1?arguments[1]:void 0),e}});var Di=function(t,e,n){var i,r;Kt(t);try{if(!(i=_(t,"return"))){if("throw"===e)throw n;return n}i=m(i,t)}catch(t){r=!0,i=t}if("throw"===e)throw n;if(r)throw i;return Kt(i),n},Ei=function(t,e,n,i){try{return i?e(Kt(n)[0],n[1]):e(n)}catch(e){Di(t,"throw",e)}},Oi={},_i=pt("iterator"),qi=Array.prototype,$i=function(t){return void 0!==t&&(Oi.Array===t||qi[_i]===t)},tr=pt("iterator"),er=function(t){if(null!=t)return _(t,tr)||_(t,"@@iterator")||Oi[De(t)]},nr=a.TypeError,ir=function(t,e){var n=arguments.length<2?er(t):e;if(O(n))return Kt(m(n,t));throw nr(D(t)+" is not iterable")},rr=a.Array,cr=function(t){var e=ct(t),n=Ln(this),i=arguments.length,r=i>1?arguments[1]:void 0,c=void 0!==r;c&&(r=Vn(r,i>2?arguments[2]:void 0));var l,o,a,u,d,s,h=er(e),b=0;if(!h||this==rr&&$i(h))for(l=he(e),o=n?new this(l):rr(l);l>b;b++)s=c?r(e[b],b):e[b],on(o,b,s);else for(d=(u=ir(e,h)).next,o=n?new this:[];!(a=m(d,u)).done;b++)s=c?Ei(u,r,[a.value,b],!0):a.value,on(o,b,s);return o.length=b,o},lr=pt("iterator"),or=!1;try{var ar=0,ur={next:function(){return{done:!!ar++}},return:function(){or=!0}};ur[lr]=function(){return this},Array.from(ur,(function(){throw 2}))}catch(t){}var dr=function(t,e){if(!e&&!or)return!1;var n=!1;try{var i={};i[lr]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(t){}return n},sr=!dr((function(t){Array.from(t)}));Ne({target:"Array",stat:!0,forced:sr},{from:cr});var mr=Ze.includes;Ne({target:"Array",proto:!0},{includes:function(t){return mr(this,t,arguments.length>1?arguments[1]:void 0)}}),wi("includes");var hr=function(t,e){var n=[][t];return!!n&&u((function(){n.call(null,e||function(){throw 1},1)}))},br=Ze.indexOf,Zr=f([].indexOf),pr=!!Zr&&1/Zr([1],1,-0)<0,yr=hr("indexOf");Ne({target:"Array",proto:!0,forced:pr||!yr},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return pr?Zr(this,t,e)||0:br(this,t,e)}});var Ir,Xr,gr,Gr=!u((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),fr=At("IE_PROTO"),Vr=a.Object,Wr=Vr.prototype,vr=Gr?Vr.getPrototypeOf:function(t){var e=ct(t);if(ot(e,fr))return e[fr];var n=e.constructor;return J(n)&&e instanceof n?n.prototype:e instanceof Vr?Wr:null},Sr=pt("iterator"),Cr=!1;[].keys&&("next"in(gr=[].keys())?(Xr=vr(vr(gr)))!==Object.prototype&&(Ir=Xr):Cr=!0);var Yr=null==Ir||u((function(){var t={};return Ir[Sr].call(t)!==t}));Yr&&(Ir={}),J(Ir[Sr])||re(Ir,Sr,(function(){return this}));var Rr={IteratorPrototype:Ir,BUGGY_SAFARI_ITERATORS:Cr},Kr=Rr.IteratorPrototype,Lr=function(){return this},Jr=function(t,e,n,i){var r=e+" Iterator";return t.prototype=ln(Kr,{next:y(+!i,n)}),Gn(t,r,!1),Oi[r]=Lr,t},xr=a.String,Hr=a.TypeError,Nr=function(t){if("object"==l(t)||J(t))return t;throw Hr("Can't set "+xr(t)+" as a prototype")},kr=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=f(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),e=n instanceof Array}catch(t){}return function(n,i){return Kt(n),Nr(i),e?t(n,i):n.__proto__=i,n}}():void 0),Ur=ie.PROPER,wr=ie.CONFIGURABLE,Tr=Rr.IteratorPrototype,Fr=Rr.BUGGY_SAFARI_ITERATORS,Br=pt("iterator"),zr=function(){return this},jr=function(t,e,n,i,r,c,l){Jr(n,e,i);var o,a,u,d=function(t){if(t===r&&p)return p;if(!Fr&&t in b)return b[t];switch(t){case"keys":case"values":case"entries":return function(){return new n(this,t)}}return function(){return new n(this)}},s=e+" Iterator",h=!1,b=t.prototype,Z=b[Br]||b["@@iterator"]||r&&b[r],p=!Fr&&Z||d(r),y="Array"==e&&b.entries||Z;if(y&&(o=vr(y.call(new t)))!==Object.prototype&&o.next&&(vr(o)!==Tr&&(kr?kr(o,Tr):J(o[Br])||re(o,Br,zr)),Gn(o,s,!0)),Ur&&"values"==r&&Z&&"values"!==Z.name&&(wr?Nt(b,"name","values"):(h=!0,p=function(){return m(Z,this)})),r)if(a={values:d("values"),keys:c?p:d("keys"),entries:d("entries")},l)for(u in a)(Fr||h||!(u in b))&&re(b,u,a[u]);else Ne({target:e,proto:!0,forced:Fr||h},a);return b[Br]!==p&&re(b,Br,p,{name:r}),Oi[e]=p,a},Ar=$t.set,Mr=$t.getterFor("Array Iterator"),Pr=jr(Array,"Array",(function(t,e){Ar(this,{type:"Array Iterator",target:L(t),index:0,kind:e})}),(function(){var t=Mr(this),e=t.target,n=t.kind,i=t.index++;return!e||i>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:i,done:!1}:"values"==n?{value:e[i],done:!1}:{value:[i,e[i]],done:!1}}),"values");Oi.Arguments=Oi.Array,wi("keys"),wi("values"),wi("entries");var Qr=f([].join),Dr=Y!=Object,Er=hr("join",",");Ne({target:"Array",proto:!0,forced:Dr||!Er},{join:function(t){return Qr(L(this),void 0===t?",":t)}});var Or=Math.min,_r=[].lastIndexOf,qr=!!_r&&1/[1].lastIndexOf(1,-0)<0,$r=hr("lastIndexOf"),tc=qr||!$r?function(t){if(qr)return Fe(_r,this,arguments)||0;var e=L(this),n=he(e),i=n-1;for(arguments.length>1&&(i=Or(i,oe(arguments[1]))),i<0&&(i=n+i);i>=0;i--)if(i in e&&e[i]===t)return i||0;return-1}:_r;Ne({target:"Array",proto:!0,forced:tc!==[].lastIndexOf},{lastIndexOf:tc});var ec=Un.map,nc=Yi("map");Ne({target:"Array",proto:!0,forced:!nc},{map:function(t){return ec(this,t,arguments.length>1?arguments[1]:void 0)}});var ic=a.Array,rc=u((function(){function t(){}return!(ic.of.call(t)instanceof t)}));Ne({target:"Array",stat:!0,forced:rc},{of:function(){for(var t=0,e=arguments.length,n=new(Ln(this)?this:ic)(e);e>t;)on(n,t,arguments[t++]);return n.length=e,n}});var cc=a.TypeError,lc=function(t){return function(e,n,i,r){O(n);var c=ct(e),l=Y(c),o=he(c),a=t?o-1:0,u=t?-1:1;if(i<2)for(;;){if(a in l){r=l[a],a+=u;break}if(a+=u,t?a<0:o<=a)throw cc("Reduce of empty array with no initial value")}for(;t?a>=0:o>a;a+=u)a in l&&(r=n(r,l[a],a,c));return r}},oc={left:lc(!1),right:lc(!0)},ac="process"==v(a.process),uc=oc.left,dc=hr("reduce");Ne({target:"Array",proto:!0,forced:!dc||!ac&&z>79&&z<83},{reduce:function(t){var e=arguments.length;return uc(this,t,e,e>1?arguments[1]:void 0)}});var sc=oc.right,mc=hr("reduceRight");Ne({target:"Array",proto:!0,forced:!mc||!ac&&z>79&&z<83},{reduceRight:function(t){return sc(this,t,arguments.length,arguments.length>1?arguments[1]:void 0)}});var hc=Yi("slice"),bc=pt("species"),Zc=a.Array,pc=Math.max;Ne({target:"Array",proto:!0,forced:!hc},{slice:function(t,e){var n,i,r,c=L(this),l=he(c),o=de(t,l),a=de(void 0===e?l:e,l);if(Be(c)&&(n=c.constructor,(Ln(n)&&(n===Zc||Be(n.prototype))||x(n)&&null===(n=n[bc]))&&(n=void 0),n===Zc||void 0===n))return bn(c,o,a);for(i=new(void 0===n?Zc:n)(pc(a-o,0)),r=0;o<a;o++,r++)o in c&&on(i,r,c[o]);return i.length=r,i}});var yc=Math.floor,Ic=function(t,e){for(var n,i,r=t.length,c=1;c<r;){for(i=c,n=t[c];i&&e(t[i-1],n)>0;)t[i]=t[--i];i!==c++&&(t[i]=n)}return t},Xc=function(t,e,n,i){for(var r=e.length,c=n.length,l=0,o=0;l<r||o<c;)t[l+o]=l<r&&o<c?i(e[l],n[o])<=0?e[l++]:n[o++]:l<r?e[l++]:n[o++];return t},gc=function t(e,n){var i=e.length,r=yc(i/2);return i<8?Ic(e,n):Xc(e,t(dn(e,0,r),n),t(dn(e,r),n),n)},Gc=U.match(/firefox\/(\d+)/i),fc=!!Gc&&+Gc[1],Vc=/MSIE|Trident/.test(U),Wc=U.match(/AppleWebKit\/(\d+)\./),vc=!!Wc&&+Wc[1],Sc=[],Cc=f(Sc.sort),Yc=f(Sc.push),Rc=u((function(){Sc.sort(void 0)})),Kc=u((function(){Sc.sort(null)})),Lc=hr("sort"),Jc=!u((function(){if(z)return z<70;if(!(fc&&fc>3)){if(Vc)return!0;if(vc)return vc<603;var t,e,n,i,r="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(i=0;i<47;i++)Sc.push({k:e+i,v:n})}for(Sc.sort((function(t,e){return e.v-t.v})),i=0;i<Sc.length;i++)e=Sc[i].k.charAt(0),r.charAt(r.length-1)!==e&&(r+=e);return"DGBEFHACIJK"!==r}}));Ne({target:"Array",proto:!0,forced:Rc||!Kc||!Lc||!Jc},{sort:function(t){void 0!==t&&O(t);var e=ct(this);if(Jc)return void 0===t?Cc(e):Cc(e,t);var n,i,r=[],c=he(e);for(i=0;i<c;i++)i in e&&Yc(r,e[i]);for(gc(r,function(t){return function(e,n){return void 0===n?-1:void 0===e?1:void 0!==t?+t(e,n)||0:Oe(e)>Oe(n)?1:-1}}(t)),n=r.length,i=0;i<n;)e[i]=r[i++];for(;i<c;)delete e[i++];return e}});var xc=pt("species"),Hc=function(t){var e=N(t),n=Ht.f;d&&e&&!e[xc]&&n(e,xc,{configurable:!0,get:function(){return this}})};Hc("Array");var Nc=Yi("splice"),kc=a.TypeError,Uc=Math.max,wc=Math.min;Ne({target:"Array",proto:!0,forced:!Nc},{splice:function(t,e){var n,i,r,c,l,o,a=ct(this),u=he(a),d=de(t,u),s=arguments.length;if(0===s?n=i=0:1===s?(n=0,i=u-d):(n=s-2,i=wc(Uc(oe(e),0),u-d)),u+n-i>9007199254740991)throw kc("Maximum allowed length exceeded");for(r=Hn(a,i),c=0;c<i;c++)(l=d+c)in a&&on(r,c,a[l]);if(r.length=i,n<i){for(c=d;c<u-i;c++)o=c+n,(l=c+i)in a?a[o]=a[l]:delete a[o];for(c=u;c>u-i+n;c--)delete a[c-1]}else if(n>i)for(c=u-i;c>d;c--)o=c+n-1,(l=c+i-1)in a?a[o]=a[l]:delete a[o];for(c=0;c<n;c++)a[c+d]=arguments[c+2];return a.length=u-i+n,r}}),wi("flat"),wi("flatMap");var Tc="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Fc=function(t,e,n){for(var i in e)re(t,i,e[i],n);return t},Bc=a.TypeError,zc=function(t,e){if(k(e,t))return t;throw Bc("Incorrect invocation")},jc=a.RangeError,Ac=function(t){if(void 0===t)return 0;var e=oe(t),n=me(e);if(e!==n)throw jc("Wrong length or index");return n},Mc=a.Array,Pc=Math.abs,Qc=Math.pow,Dc=Math.floor,Ec=Math.log,Oc=Math.LN2,_c=function(t,e,n){var i,r,c,l=Mc(n),o=8*n-e-1,a=(1<<o)-1,u=a>>1,d=23===e?Qc(2,-24)-Qc(2,-77):0,s=t<0||0===t&&1/t<0?1:0,m=0;for((t=Pc(t))!=t||t===1/0?(r=t!=t?1:0,i=a):(i=Dc(Ec(t)/Oc),t*(c=Qc(2,-i))<1&&(i--,c*=2),(t+=i+u>=1?d/c:d*Qc(2,1-u))*c>=2&&(i++,c/=2),i+u>=a?(r=0,i=a):i+u>=1?(r=(t*c-1)*Qc(2,e),i+=u):(r=t*Qc(2,u-1)*Qc(2,e),i=0));e>=8;)l[m++]=255&r,r/=256,e-=8;for(i=i<<e|r,o+=e;o>0;)l[m++]=255&i,i/=256,o-=8;return l[--m]|=128*s,l},qc=function(t,e){var n,i=t.length,r=8*i-e-1,c=(1<<r)-1,l=c>>1,o=r-7,a=i-1,u=t[a--],d=127&u;for(u>>=7;o>0;)d=256*d+t[a--],o-=8;for(n=d&(1<<-o)-1,d>>=-o,o+=e;o>0;)n=256*n+t[a--],o-=8;if(0===d)d=1-l;else{if(d===c)return n?NaN:u?-1/0:1/0;n+=Qc(2,e),d-=l}return(u?-1:1)*n*Qc(2,d-e)},$c=fe.f,tl=Ht.f,el=ie.PROPER,nl=ie.CONFIGURABLE,il=$t.get,rl=$t.set,cl=a.ArrayBuffer,ll=cl,ol=ll&&ll.prototype,al=a.DataView,ul=al&&al.prototype,dl=Object.prototype,sl=a.Array,ml=a.RangeError,hl=f(Ti),bl=f([].reverse),Zl=_c,pl=qc,yl=function(t){return[255&t]},Il=function(t){return[255&t,t>>8&255]},Xl=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},gl=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},Gl=function(t){return Zl(t,23,4)},fl=function(t){return Zl(t,52,8)},Vl=function(t,e){tl(t.prototype,e,{get:function(){return il(this)[e]}})},Wl=function(t,e,n,i){var r=Ac(n),c=il(t);if(r+e>c.byteLength)throw ml("Wrong index");var l=il(c.buffer).bytes,o=r+c.byteOffset,a=dn(l,o,o+e);return i?a:bl(a)},vl=function(t,e,n,i,r,c){var l=Ac(n),o=il(t);if(l+e>o.byteLength)throw ml("Wrong index");for(var a=il(o.buffer).bytes,u=l+o.byteOffset,d=i(+r),s=0;s<e;s++)a[u+s]=d[c?s:e-s-1]};if(Tc){var Sl=el&&"ArrayBuffer"!==cl.name;if(u((function(){cl(1)}))&&u((function(){new cl(-1)}))&&!u((function(){return new cl,new cl(1.5),new cl(NaN),Sl&&!nl})))Sl&&nl&&Nt(cl,"name","ArrayBuffer");else{(ll=function(t){return zc(this,ol),new cl(Ac(t))}).prototype=ol;for(var Cl,Yl=$c(cl),Rl=0;Yl.length>Rl;)(Cl=Yl[Rl++])in ll||Nt(ll,Cl,cl[Cl]);ol.constructor=ll}kr&&vr(ul)!==dl&&kr(ul,dl);var Kl=new al(new ll(2)),Ll=f(ul.setInt8);Kl.setInt8(0,2147483648),Kl.setInt8(1,2147483649),!Kl.getInt8(0)&&Kl.getInt8(1)||Fc(ul,{setInt8:function(t,e){Ll(this,t,e<<24>>24)},setUint8:function(t,e){Ll(this,t,e<<24>>24)}},{unsafe:!0})}else ll=function(t){zc(this,ol);var e=Ac(t);rl(this,{bytes:hl(sl(e),0),byteLength:e}),d||(this.byteLength=e)},ol=ll.prototype,al=function(t,e,n){zc(this,ul),zc(t,ol);var i=il(t).byteLength,r=oe(e);if(r<0||r>i)throw ml("Wrong offset");if(r+(n=void 0===n?i-r:me(n))>i)throw ml("Wrong length");rl(this,{buffer:t,byteLength:n,byteOffset:r}),d||(this.buffer=t,this.byteLength=n,this.byteOffset=r)},ul=al.prototype,d&&(Vl(ll,"byteLength"),Vl(al,"buffer"),Vl(al,"byteLength"),Vl(al,"byteOffset")),Fc(ul,{getInt8:function(t){return Wl(this,1,t)[0]<<24>>24},getUint8:function(t){return Wl(this,1,t)[0]},getInt16:function(t){var e=Wl(this,2,t,arguments.length>1?arguments[1]:void 0);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=Wl(this,2,t,arguments.length>1?arguments[1]:void 0);return e[1]<<8|e[0]},getInt32:function(t){return gl(Wl(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return gl(Wl(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return pl(Wl(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return pl(Wl(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,e){vl(this,1,t,yl,e)},setUint8:function(t,e){vl(this,1,t,yl,e)},setInt16:function(t,e){vl(this,2,t,Il,e,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,e){vl(this,2,t,Il,e,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,e){vl(this,4,t,Xl,e,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,e){vl(this,4,t,Xl,e,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,e){vl(this,4,t,Gl,e,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,e){vl(this,8,t,fl,e,arguments.length>2?arguments[2]:void 0)}});Gn(ll,"ArrayBuffer"),Gn(al,"DataView");var Jl={ArrayBuffer:ll,DataView:al},xl=Jl.ArrayBuffer,Hl=a.ArrayBuffer;Ne({global:!0,forced:Hl!==xl},{ArrayBuffer:xl}),Hc("ArrayBuffer");var Nl=a.TypeError,kl=pt("toPrimitive"),Ul=Date.prototype;ot(Ul,kl)||re(Ul,kl,(function(t){if(Kt(this),"string"===t||"default"===t)t="string";else if("number"!==t)throw Nl("Incorrect hint");return $(this,t)}));var wl=pt("hasInstance"),Tl=Function.prototype;wl in Tl||Ht.f(Tl,wl,{value:function(t){if(!J(this)||!x(t))return!1;var e=this.prototype;if(!x(e))return t instanceof this;for(;t=vr(t);)if(e===t)return!0;return!1}});var Fl=ie.EXISTS,Bl=Ht.f,zl=Function.prototype,jl=f(zl.toString),Al=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,Ml=f(Al.exec);d&&!Fl&&Bl(zl,"name",{configurable:!0,get:function(){try{return Ml(Al,jl(this))[1]}catch(t){return""}}}),Ne({global:!0},{globalThis:a});var Pl=a.Array,Ql=N("JSON","stringify"),Dl=f(/./.exec),El=f("".charAt),Ol=f("".charCodeAt),_l=f("".replace),ql=f(1..toString),$l=/[\uD800-\uDFFF]/g,to=/^[\uD800-\uDBFF]$/,eo=/^[\uDC00-\uDFFF]$/,no=function(t,e,n){var i=El(n,e-1),r=El(n,e+1);return Dl(to,t)&&!Dl(eo,r)||Dl(eo,t)&&!Dl(to,i)?"\\u"+ql(Ol(t,0),16):t},io=u((function(){return'"\\udf06\\ud834"'!==Ql("\udf06\ud834")||'"\\udead"'!==Ql("\udead")}));Ql&&Ne({target:"JSON",stat:!0,forced:io},{stringify:function(t,e,n){for(var i=0,r=arguments.length,c=Pl(r);i<r;i++)c[i]=arguments[i];var l=Fe(Ql,null,c);return"string"==typeof l?_l(l,$l,no):l}}),Gn(a.JSON,"JSON",!0);var ro=u((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}})),co=Object.isExtensible,lo=u((function(){co(1)}))||ro?function(t){return!!x(t)&&((!ro||"ArrayBuffer"!=v(t))&&(!co||co(t)))}:co,oo=!u((function(){return Object.isExtensible(Object.preventExtensions({}))})),ao=n((function(t){var e=Ht.f,n=!1,i=st("meta"),r=0,c=function(t){e(t,i,{value:{objectID:"O"+r++,weakData:{}}})},o=t.exports={enable:function(){o.enable=function(){},n=!0;var t=fe.f,e=f([].splice),r={};r[i]=1,t(r).length&&(fe.f=function(n){for(var r=t(n),c=0,l=r.length;c<l;c++)if(r[c]===i){e(r,c,1);break}return r},Ne({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:hn.f}))},fastKey:function(t,e){if(!x(t))return"symbol"==l(t)?t:("string"==typeof t?"S":"P")+t;if(!ot(t,i)){if(!lo(t))return"F";if(!e)return"E";c(t)}return t[i].objectID},getWeakData:function(t,e){if(!ot(t,i)){if(!lo(t))return!0;if(!e)return!1;c(t)}return t[i].weakData},onFreeze:function(t){return oo&&n&&lo(t)&&!ot(t,i)&&c(t),t}};Mt[i]=!0})),uo=a.TypeError,so=function(t,e){this.stopped=t,this.result=e},mo=so.prototype,ho=function(t,e,n){var i,r,c,o,a,u,d,s=n&&n.that,h=!(!n||!n.AS_ENTRIES),b=!(!n||!n.IS_ITERATOR),Z=!(!n||!n.INTERRUPTED),p=Vn(e,s),y=function(t){return i&&Di(i,"normal",t),new so(!0,t)},I=function(t){return h?(Kt(t),Z?p(t[0],t[1],y):p(t[0],t[1])):Z?p(t,y):p(t)};if(b)i=t;else{if(!(r=er(t)))throw uo(D(t)+" is not iterable");if($i(r)){for(c=0,o=he(t);o>c;c++)if((a=I(t[c]))&&k(mo,a))return a;return new so(!1)}i=ir(t,r)}for(u=i.next;!(d=m(u,i)).done;){try{a=I(d.value)}catch(t){Di(i,"throw",t)}if("object"==l(a)&&a&&k(mo,a))return a}return new so(!1)},bo=function(t,e,n){var i,r;return kr&&J(i=e.constructor)&&i!==n&&x(r=i.prototype)&&r!==n.prototype&&kr(t,r),t},Zo=function(t,e,n){var i=-1!==t.indexOf("Map"),r=-1!==t.indexOf("Weak"),c=i?"set":"add",l=a[t],o=l&&l.prototype,d=l,s={},m=function(t){var e=f(o[t]);re(o,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(r&&!x(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return r&&!x(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(r&&!x(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(xe(t,!J(l)||!(r||o.forEach&&!u((function(){(new l).entries().next()})))))d=n.getConstructor(e,t,i,c),ao.enable();else if(xe(t,!0)){var h=new d,b=h[c](r?{}:-0,1)!=h,Z=u((function(){h.has(1)})),p=dr((function(t){new l(t)})),y=!r&&u((function(){for(var t=new l,e=5;e--;)t[c](e,e);return!t.has(-0)}));p||((d=e((function(t,e){zc(t,o);var n=bo(new l,t,d);return null!=e&&ho(e,n[c],{that:n,AS_ENTRIES:i}),n}))).prototype=o,o.constructor=d),(Z||y)&&(m("delete"),m("has"),i&&m("get")),(y||b)&&m(c),r&&o.clear&&delete o.clear}return s[t]=d,Ne({global:!0,forced:d!=l},s),Gn(d,t),r||n.setStrong(d,t,i),d},po=Ht.f,yo=ao.fastKey,Io=$t.set,Xo=$t.getterFor,go={getConstructor:function(t,e,n,i){var r=t((function(t,r){zc(t,c),Io(t,{type:e,index:ln(null),first:void 0,last:void 0,size:0}),d||(t.size=0),null!=r&&ho(r,t[i],{that:t,AS_ENTRIES:n})})),c=r.prototype,l=Xo(e),o=function(t,e,n){var i,r,c=l(t),o=a(t,e);return o?o.value=n:(c.last=o={index:r=yo(e,!0),key:e,value:n,previous:i=c.last,next:void 0,removed:!1},c.first||(c.first=o),i&&(i.next=o),d?c.size++:t.size++,"F"!==r&&(c.index[r]=o)),t},a=function(t,e){var n,i=l(t),r=yo(e);if("F"!==r)return i.index[r];for(n=i.first;n;n=n.next)if(n.key==e)return n};return Fc(c,{clear:function(){for(var t=l(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,d?t.size=0:this.size=0},delete:function(t){var e=this,n=l(e),i=a(e,t);if(i){var r=i.next,c=i.previous;delete n.index[i.index],i.removed=!0,c&&(c.next=r),r&&(r.previous=c),n.first==i&&(n.first=r),n.last==i&&(n.last=c),d?n.size--:e.size--}return!!i},forEach:function(t){for(var e,n=l(this),i=Vn(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:n.first;)for(i(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!a(this,t)}}),Fc(c,n?{get:function(t){var e=a(this,t);return e&&e.value},set:function(t,e){return o(this,0===t?0:t,e)}}:{add:function(t){return o(this,t=0===t?0:t,t)}}),d&&po(c,"size",{get:function(){return l(this).size}}),r},setStrong:function(t,e,n){var i=e+" Iterator",r=Xo(e),c=Xo(i);jr(t,e,(function(t,e){Io(this,{type:i,target:t,state:r(t),kind:e,last:void 0})}),(function(){for(var t=c(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),Hc(e)}};Zo("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),go);var Go=Math.log,fo=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Go(1+t)},Vo=Math.acosh,Wo=Math.log,vo=Math.sqrt,So=Math.LN2,Co=!Vo||710!=Math.floor(Vo(Number.MAX_VALUE))||Vo(1/0)!=1/0;Ne({target:"Math",stat:!0,forced:Co},{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Wo(t)+So:fo(t-1+vo(t-1)*vo(t+1))}});var Yo=Math.asinh,Ro=Math.log,Ko=Math.sqrt;Ne({target:"Math",stat:!0,forced:!(Yo&&1/Yo(0)>0)},{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):Ro(e+Ko(e*e+1)):e}});var Lo=Math.atanh,Jo=Math.log;Ne({target:"Math",stat:!0,forced:!(Lo&&1/Lo(-0)<0)},{atanh:function(t){return 0==(t=+t)?t:Jo((1+t)/(1-t))/2}});var xo=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1},Ho=Math.abs,No=Math.pow;Ne({target:"Math",stat:!0},{cbrt:function(t){return xo(t=+t)*No(Ho(t),1/3)}});var ko=Math.floor,Uo=Math.log,wo=Math.LOG2E;Ne({target:"Math",stat:!0},{clz32:function(t){return(t>>>=0)?31-ko(Uo(t+.5)*wo):32}});var To=Math.expm1,Fo=Math.exp,Bo=!To||To(10)>22025.465794806718||To(10)<22025.465794806718||-2e-17!=To(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Fo(t)-1}:To,zo=Math.cosh,jo=Math.abs,Ao=Math.E;Ne({target:"Math",stat:!0,forced:!zo||zo(710)===1/0},{cosh:function(t){var e=Bo(jo(t)-1)+1;return(e+1/(e*Ao*Ao))*(Ao/2)}}),Ne({target:"Math",stat:!0,forced:Bo!=Math.expm1},{expm1:Bo});var Mo=Math.abs,Po=Math.pow,Qo=Po(2,-52),Do=Po(2,-23),Eo=Po(2,127)*(2-Do),Oo=Po(2,-126),_o=Math.fround||function(t){var e,n,i=Mo(t),r=xo(t);return i<Oo?r*function(t){return t+1/Qo-1/Qo}(i/Oo/Do)*Oo*Do:(n=(e=(1+Do/Qo)*i)-(e-i))>Eo||n!=n?r*(1/0):r*n};Ne({target:"Math",stat:!0},{fround:_o});var qo=Math.hypot,$o=Math.abs,ta=Math.sqrt,ea=!!qo&&qo(1/0,NaN)!==1/0;Ne({target:"Math",stat:!0,forced:ea},{hypot:function(t,e){for(var n,i,r=0,c=0,l=arguments.length,o=0;c<l;)o<(n=$o(arguments[c++]))?(r=r*(i=o/n)*i+1,o=n):r+=n>0?(i=n/o)*i:n;return o===1/0?1/0:o*ta(r)}});var na=Math.imul,ia=u((function(){return-5!=na(4294967295,5)||2!=na.length}));Ne({target:"Math",stat:!0,forced:ia},{imul:function(t,e){var n=65535,i=+t,r=+e,c=n&i,l=n&r;return 0|c*l+((n&i>>>16)*l+c*(n&r>>>16)<<16>>>0)}});var ra=Math.log,ca=Math.LOG10E;Ne({target:"Math",stat:!0},{log10:function(t){return ra(t)*ca}}),Ne({target:"Math",stat:!0},{log1p:fo});var la=Math.log,oa=Math.LN2;Ne({target:"Math",stat:!0},{log2:function(t){return la(t)/oa}}),Ne({target:"Math",stat:!0},{sign:xo});var aa=Math.abs,ua=Math.exp,da=Math.E,sa=u((function(){return-2e-17!=Math.sinh(-2e-17)}));Ne({target:"Math",stat:!0,forced:sa},{sinh:function(t){return aa(t=+t)<1?(Bo(t)-Bo(-t))/2:(ua(t-1)-ua(-t-1))*(da/2)}});var ma=Math.exp;Ne({target:"Math",stat:!0},{tanh:function(t){var e=Bo(t=+t),n=Bo(-t);return e==1/0?1:n==1/0?-1:(e-n)/(ma(t)+ma(-t))}}),Gn(Math,"Math",!0);var ha=Math.ceil,ba=Math.floor;Ne({target:"Math",stat:!0},{trunc:function(t){return(t>0?ba:ha)(t)}});var Za=f(1..valueOf),pa="\t\n\v\f\r                 \u2028\u2029\ufeff",ya=f("".replace),Ia="["+pa+"]",Xa=RegExp("^"+Ia+Ia+"*"),ga=RegExp(Ia+Ia+"*$"),Ga=function(t){return function(e){var n=Oe(K(e));return 1&t&&(n=ya(n,Xa,"")),2&t&&(n=ya(n,ga,"")),n}},fa={start:Ga(1),end:Ga(2),trim:Ga(3)},Va=fe.f,Wa=Ct.f,va=Ht.f,Sa=fa.trim,Ca=a.Number,Ya=Ca.prototype,Ra=a.TypeError,Ka=f("".slice),La=f("".charCodeAt),Ja=function(t){var e=Xt(t,"number");return"bigint"==typeof e?e:xa(e)},xa=function(t){var e,n,i,r,c,l,o,a,u=Xt(t,"number");if(P(u))throw Ra("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=Sa(u),43===(e=La(u,0))||45===e){if(88===(n=La(u,2))||120===n)return NaN}else if(48===e){switch(La(u,1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+u}for(l=(c=Ka(u,2)).length,o=0;o<l;o++)if((a=La(c,o))<48||a>r)return NaN;return parseInt(c,i)}return+u};if(xe("Number",!Ca(" 0o1")||!Ca("0b1")||Ca("+0x1"))){for(var Ha,Na=function(t){var e=arguments.length<1?0:Ca(Ja(t)),n=this;return k(Ya,n)&&u((function(){Za(n)}))?bo(Object(e),n,Na):e},ka=d?Va(Ca):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),Ua=0;ka.length>Ua;Ua++)ot(Ca,Ha=ka[Ua])&&!ot(Na,Ha)&&va(Na,Ha,Wa(Ca,Ha));Na.prototype=Ya,Ya.constructor=Na,re(a,"Number",Na)}Ne({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var wa=a.isFinite,Ta=Number.isFinite||function(t){return"number"==typeof t&&wa(t)};Ne({target:"Number",stat:!0},{isFinite:Ta});var Fa=Math.floor,Ba=Number.isInteger||function(t){return!x(t)&&isFinite(t)&&Fa(t)===t};Ne({target:"Number",stat:!0},{isInteger:Ba}),Ne({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var za=Math.abs;Ne({target:"Number",stat:!0},{isSafeInteger:function(t){return Ba(t)&&za(t)<=9007199254740991}}),Ne({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),Ne({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var ja=fa.trim,Aa=f("".charAt),Ma=a.parseFloat,Pa=a.Symbol,Qa=Pa&&Pa.iterator,Da=1/Ma(pa+"-0")!=-1/0||Qa&&!u((function(){Ma(Object(Qa))}))?function(t){var e=ja(Oe(t)),n=Ma(e);return 0===n&&"-"==Aa(e,0)?-0:n}:Ma;Ne({target:"Number",stat:!0,forced:Number.parseFloat!=Da},{parseFloat:Da});var Ea=fa.trim,Oa=a.parseInt,_a=a.Symbol,qa=_a&&_a.iterator,$a=/^[+-]?0x/i,tu=f($a.exec),eu=8!==Oa(pa+"08")||22!==Oa(pa+"0x16")||qa&&!u((function(){Oa(Object(qa))}))?function(t,e){var n=Ea(Oe(t));return Oa(n,e>>>0||(tu($a,n)?16:10))}:Oa;Ne({target:"Number",stat:!0,forced:Number.parseInt!=eu},{parseInt:eu});var nu=a.RangeError,iu=function(t){var e=Oe(K(this)),n="",i=oe(t);if(i<0||i==1/0)throw nu("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n},ru=a.RangeError,cu=a.String,lu=Math.floor,ou=f(iu),au=f("".slice),uu=f(1..toFixed),du=function t(e,n,i){return 0===n?i:n%2==1?t(e,n-1,i*e):t(e*e,n/2,i)},su=function(t,e,n){for(var i=-1,r=n;++i<6;)r+=e*t[i],t[i]=r%1e7,r=lu(r/1e7)},mu=function(t,e){for(var n=6,i=0;--n>=0;)i+=t[n],t[n]=lu(i/e),i=i%e*1e7},hu=function(t){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==t[e]){var i=cu(t[e]);n=""===n?i:n+ou("0",7-i.length)+i}return n},bu=u((function(){return"0.000"!==uu(8e-5,3)||"1"!==uu(.9,0)||"1.25"!==uu(1.255,2)||"1000000000000000128"!==uu(0xde0b6b3a7640080,0)}))||!u((function(){uu({})}));Ne({target:"Number",proto:!0,forced:bu},{toFixed:function(t){var e,n,i,r,c=Za(this),l=oe(t),o=[0,0,0,0,0,0],a="",u="0";if(l<0||l>20)throw ru("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return cu(c);if(c<0&&(a="-",c=-c),c>1e-21)if(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*du(2,69,1))-69,n=e<0?c*du(2,-e,1):c/du(2,e,1),n*=4503599627370496,(e=52-e)>0){for(su(o,0,n),i=l;i>=7;)su(o,1e7,0),i-=7;for(su(o,du(10,i,1),0),i=e-1;i>=23;)mu(o,1<<23),i-=23;mu(o,1<<i),su(o,1,1),mu(o,2),u=hu(o)}else su(o,0,n),su(o,1<<-e,0),u=hu(o)+ou("0",l);return u=l>0?a+((r=u.length)<=l?"0."+ou("0",l-r)+u:au(u,0,r-l)+"."+au(u,r-l)):a+u}});var Zu=Object.assign,pu=Object.defineProperty,yu=f([].concat),Iu=!Zu||u((function(){if(d&&1!==Zu({b:1},Zu(pu({},"a",{enumerable:!0,get:function(){pu(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),i="abcdefghijklmnopqrst";return t[n]=7,i.split("").forEach((function(t){e[t]=t})),7!=Zu({},t)[n]||_e(Zu({},e)).join("")!=i}))?function(t,e){for(var n=ct(t),i=arguments.length,r=1,c=Ve.f,l=p.f;i>r;)for(var o,a=Y(arguments[r++]),u=c?yu(_e(a),c(a)):_e(a),s=u.length,h=0;s>h;)o=u[h++],d&&!m(l,a,o)||(n[o]=a[o]);return n}:Zu;Ne({target:"Object",stat:!0,forced:Object.assign!==Iu},{assign:Iu});var Xu=!u((function(){if(!(vc&&vc<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete a[t]}}));d&&Ne({target:"Object",proto:!0,forced:Xu},{__defineGetter__:function(t,e){Ht.f(ct(this),t,{get:O(e),enumerable:!0,configurable:!0})}}),d&&Ne({target:"Object",proto:!0,forced:Xu},{__defineSetter__:function(t,e){Ht.f(ct(this),t,{set:O(e),enumerable:!0,configurable:!0})}});var gu=p.f,Gu=f(gu),fu=f([].push),Vu=function(t){return function(e){for(var n,i=L(e),r=_e(i),c=r.length,l=0,o=[];c>l;)n=r[l++],d&&!Gu(i,n)||fu(o,t?[n,i[n]]:i[n]);return o}},Wu={entries:Vu(!0),values:Vu(!1)},vu=Wu.entries;Ne({target:"Object",stat:!0},{entries:function(t){return vu(t)}});var Su=ao.onFreeze,Cu=Object.freeze,Yu=u((function(){Cu(1)}));Ne({target:"Object",stat:!0,forced:Yu,sham:!oo},{freeze:function(t){return Cu&&x(t)?Cu(Su(t)):t}}),Ne({target:"Object",stat:!0},{fromEntries:function(t){var e={};return ho(t,(function(t,n){on(e,t,n)}),{AS_ENTRIES:!0}),e}});var Ru=Ct.f,Ku=u((function(){Ru(1)}));Ne({target:"Object",stat:!0,forced:!d||Ku,sham:!d},{getOwnPropertyDescriptor:function(t,e){return Ru(L(t),e)}}),Ne({target:"Object",stat:!0,sham:!d},{getOwnPropertyDescriptors:function(t){for(var e,n,i=L(t),r=Ct.f,c=ve(i),l={},o=0;c.length>o;)void 0!==(n=r(i,e=c[o++]))&&on(l,e,n);return l}});var Lu=hn.f,Ju=u((function(){return!Object.getOwnPropertyNames(1)}));Ne({target:"Object",stat:!0,forced:Ju},{getOwnPropertyNames:Lu});var xu=u((function(){vr(1)}));Ne({target:"Object",stat:!0,forced:xu,sham:!Gr},{getPrototypeOf:function(t){return vr(ct(t))}});var Hu=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};Ne({target:"Object",stat:!0},{is:Hu}),Ne({target:"Object",stat:!0,forced:Object.isExtensible!==lo},{isExtensible:lo});var Nu=Object.isFrozen,ku=u((function(){Nu(1)}));Ne({target:"Object",stat:!0,forced:ku||ro},{isFrozen:function(t){return!x(t)||(!(!ro||"ArrayBuffer"!=v(t))||!!Nu&&Nu(t))}});var Uu=Object.isSealed,wu=u((function(){Uu(1)}));Ne({target:"Object",stat:!0,forced:wu||ro},{isSealed:function(t){return!x(t)||(!(!ro||"ArrayBuffer"!=v(t))||!!Uu&&Uu(t))}});var Tu=u((function(){_e(1)}));Ne({target:"Object",stat:!0,forced:Tu},{keys:function(t){return _e(ct(t))}});var Fu=Ct.f;d&&Ne({target:"Object",proto:!0,forced:Xu},{__lookupGetter__:function(t){var e,n=ct(this),i=gt(t);do{if(e=Fu(n,i))return e.get}while(n=vr(n))}});var Bu=Ct.f;d&&Ne({target:"Object",proto:!0,forced:Xu},{__lookupSetter__:function(t){var e,n=ct(this),i=gt(t);do{if(e=Bu(n,i))return e.set}while(n=vr(n))}});var zu=ao.onFreeze,ju=Object.preventExtensions,Au=u((function(){ju(1)}));Ne({target:"Object",stat:!0,forced:Au,sham:!oo},{preventExtensions:function(t){return ju&&x(t)?ju(zu(t)):t}});var Mu=ao.onFreeze,Pu=Object.seal,Qu=u((function(){Pu(1)}));Ne({target:"Object",stat:!0,forced:Qu,sham:!oo},{seal:function(t){return Pu&&x(t)?Pu(Mu(t)):t}}),Ne({target:"Object",stat:!0},{setPrototypeOf:kr});var Du=Ae?{}.toString:function(){return"[object "+De(this)+"]"};Ae||re(Object.prototype,"toString",Du,{unsafe:!0});var Eu=Wu.values;Ne({target:"Object",stat:!0},{values:function(t){return Eu(t)}}),Ne({global:!0,forced:parseFloat!=Da},{parseFloat:Da}),Ne({global:!0,forced:parseInt!=eu},{parseInt:eu});var Ou,_u,qu,$u,td=a.Promise,ed=a.TypeError,nd=function(t){if(Ln(t))return t;throw ed(D(t)+" is not a constructor")},id=pt("species"),rd=function(t,e){var n,i=Kt(t).constructor;return void 0===i||null==(n=Kt(i)[id])?e:nd(n)},cd=/(?:ipad|iphone|ipod).*applewebkit/i.test(U),ld=a.setImmediate,od=a.clearImmediate,ad=a.process,ud=a.Dispatch,dd=a.Function,sd=a.MessageChannel,md=a.String,hd=0,bd={};try{Ou=a.location}catch(t){}var Zd=function(t){if(ot(bd,t)){var e=bd[t];delete bd[t],e()}},pd=function(t){return function(){Zd(t)}},yd=function(t){Zd(t.data)},Id=function(t){a.postMessage(md(t),Ou.protocol+"//"+Ou.host)};ld&&od||(ld=function(t){var e=bn(arguments,1);return bd[++hd]=function(){Fe(J(t)?t:dd(t),void 0,e)},_u(hd),hd},od=function(t){delete bd[t]},ac?_u=function(t){ad.nextTick(pd(t))}:ud&&ud.now?_u=function(t){ud.now(pd(t))}:sd&&!cd?($u=(qu=new sd).port2,qu.port1.onmessage=yd,_u=Vn($u.postMessage,$u)):a.addEventListener&&J(a.postMessage)&&!a.importScripts&&Ou&&"file:"!==Ou.protocol&&!u(Id)?(_u=Id,a.addEventListener("message",yd,!1)):_u="onreadystatechange"in Vt("script")?function(t){$e.appendChild(Vt("script")).onreadystatechange=function(){$e.removeChild(this),Zd(t)}}:function(t){setTimeout(pd(t),0)});var Xd,gd,Gd,fd,Vd,Wd,vd,Sd,Cd={set:ld,clear:od},Yd=/ipad|iphone|ipod/i.test(U)&&void 0!==a.Pebble,Rd=/web0s(?!.*chrome)/i.test(U),Kd=Ct.f,Ld=Cd.set,Jd=a.MutationObserver||a.WebKitMutationObserver,xd=a.document,Hd=a.process,Nd=a.Promise,kd=Kd(a,"queueMicrotask"),Ud=kd&&kd.value;Ud||(Xd=function(){var t,e;for(ac&&(t=Hd.domain)&&t.exit();gd;){e=gd.fn,gd=gd.next;try{e()}catch(t){throw gd?fd():Gd=void 0,t}}Gd=void 0,t&&t.enter()},cd||ac||Rd||!Jd||!xd?!Yd&&Nd&&Nd.resolve?((vd=Nd.resolve(void 0)).constructor=Nd,Sd=Vn(vd.then,vd),fd=function(){Sd(Xd)}):ac?fd=function(){Hd.nextTick(Xd)}:(Ld=Vn(Ld,a),fd=function(){Ld(Xd)}):(Vd=!0,Wd=xd.createTextNode(""),new Jd(Xd).observe(Wd,{characterData:!0}),fd=function(){Wd.data=Vd=!Vd}));var wd,Td,Fd,Bd,zd=Ud||function(t){var e={fn:t,next:void 0};Gd&&(Gd.next=e),gd||(gd=e,fd()),Gd=e},jd=function(t){var e,n;this.promise=new t((function(t,i){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=i})),this.resolve=O(e),this.reject=O(n)},Ad={f:function(t){return new jd(t)}},Md=function(t,e){if(Kt(t),x(e)&&e.constructor===t)return e;var n=Ad.f(t);return(0,n.resolve)(e),n.promise},Pd=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},Qd="object"==("undefined"==typeof window?"undefined":l(window)),Dd=Cd.set,Ed=pt("species"),Od="Promise",_d=$t.getterFor(Od),qd=$t.set,$d=$t.getterFor(Od),ts=td&&td.prototype,es=td,ns=ts,is=a.TypeError,rs=a.document,cs=a.process,ls=Ad.f,os=ls,as=!!(rs&&rs.createEvent&&a.dispatchEvent),us=J(a.PromiseRejectionEvent),ds=!1,ss=xe(Od,(function(){var t=Ft(es),e=t!==String(es);if(!e&&66===z)return!0;if(z>=51&&/native code/.test(t))return!1;var n=new es((function(t){t(1)})),i=function(t){t((function(){}),(function(){}))};return(n.constructor={})[Ed]=i,!(ds=n.then((function(){}))instanceof i)||!e&&Qd&&!us})),ms=ss||!dr((function(t){es.all(t).catch((function(){}))})),hs=function(t){var e;return!(!x(t)||!J(e=t.then))&&e},bs=function(t,e){if(!t.notified){t.notified=!0;var n=t.reactions;zd((function(){for(var i=t.value,r=1==t.state,c=0;n.length>c;){var l,o,a,u=n[c++],d=r?u.ok:u.fail,s=u.resolve,h=u.reject,b=u.domain;try{d?(r||(2===t.rejection&&Is(t),t.rejection=1),!0===d?l=i:(b&&b.enter(),l=d(i),b&&(b.exit(),a=!0)),l===u.promise?h(is("Promise-chain cycle")):(o=hs(l))?m(o,l,s,h):s(l)):h(i)}catch(t){b&&!a&&b.exit(),h(t)}}t.reactions=[],t.notified=!1,e&&!t.rejection&&ps(t)}))}},Zs=function(t,e,n){var i,r;as?((i=rs.createEvent("Event")).promise=e,i.reason=n,i.initEvent(t,!1,!0),a.dispatchEvent(i)):i={promise:e,reason:n},!us&&(r=a["on"+t])?r(i):"unhandledrejection"===t&&function(t,e){var n=a.console;n&&n.error&&(1==arguments.length?n.error(t):n.error(t,e))}("Unhandled promise rejection",n)},ps=function(t){m(Dd,a,(function(){var e,n=t.facade,i=t.value;if(ys(t)&&(e=Pd((function(){ac?cs.emit("unhandledRejection",i,n):Zs("unhandledrejection",n,i)})),t.rejection=ac||ys(t)?2:1,e.error))throw e.value}))},ys=function(t){return 1!==t.rejection&&!t.parent},Is=function(t){m(Dd,a,(function(){var e=t.facade;ac?cs.emit("rejectionHandled",e):Zs("rejectionhandled",e,t.value)}))},Xs=function(t,e,n){return function(i){t(e,i,n)}},gs=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,bs(t,!0))},Gs=function t(e,n,i){if(!e.done){e.done=!0,i&&(e=i);try{if(e.facade===n)throw is("Promise can't be resolved itself");var r=hs(n);r?zd((function(){var i={done:!1};try{m(r,n,Xs(t,i,e),Xs(gs,i,e))}catch(t){gs(i,t,e)}})):(e.value=n,e.state=1,bs(e,!1))}catch(t){gs({done:!1},t,e)}}};if(ss&&(ns=(es=function(t){zc(this,ns),O(t),m(wd,this);var e=_d(this);try{t(Xs(Gs,e),Xs(gs,e))}catch(t){gs(e,t)}}).prototype,(wd=function(t){qd(this,{type:Od,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=Fc(ns,{then:function(t,e){var n=$d(this),i=n.reactions,r=ls(rd(this,es));return r.ok=!J(t)||t,r.fail=J(e)&&e,r.domain=ac?cs.domain:void 0,n.parent=!0,i[i.length]=r,0!=n.state&&bs(n,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),Td=function(){var t=new wd,e=_d(t);this.promise=t,this.resolve=Xs(Gs,e),this.reject=Xs(gs,e)},Ad.f=ls=function(t){return t===es||t===Fd?new Td(t):os(t)},J(td)&&ts!==Object.prototype)){Bd=ts.then,ds||(re(ts,"then",(function(t,e){var n=this;return new es((function(t,e){m(Bd,n,t,e)})).then(t,e)}),{unsafe:!0}),re(ts,"catch",ns.catch,{unsafe:!0}));try{delete ts.constructor}catch(t){}kr&&kr(ts,ns)}Ne({global:!0,wrap:!0,forced:ss},{Promise:es}),Gn(es,Od,!1),Hc(Od),Fd=N(Od),Ne({target:Od,stat:!0,forced:ss},{reject:function(t){var e=ls(this);return m(e.reject,void 0,t),e.promise}}),Ne({target:Od,stat:!0,forced:ss},{resolve:function(t){return Md(this,t)}}),Ne({target:Od,stat:!0,forced:ms},{all:function(t){var e=this,n=ls(e),i=n.resolve,r=n.reject,c=Pd((function(){var n=O(e.resolve),c=[],l=0,o=1;ho(t,(function(t){var a=l++,u=!1;o++,m(n,e,t).then((function(t){u||(u=!0,c[a]=t,--o||i(c))}),r)})),--o||i(c)}));return c.error&&r(c.value),n.promise},race:function(t){var e=this,n=ls(e),i=n.reject,r=Pd((function(){var r=O(e.resolve);ho(t,(function(t){m(r,e,t).then(n.resolve,i)}))}));return r.error&&i(r.value),n.promise}}),Ne({target:"Promise",stat:!0},{allSettled:function(t){var e=this,n=Ad.f(e),i=n.resolve,r=n.reject,c=Pd((function(){var n=O(e.resolve),r=[],c=0,l=1;ho(t,(function(t){var o=c++,a=!1;l++,m(n,e,t).then((function(t){a||(a=!0,r[o]={status:"fulfilled",value:t},--l||i(r))}),(function(t){a||(a=!0,r[o]={status:"rejected",reason:t},--l||i(r))}))})),--l||i(r)}));return c.error&&r(c.value),n.promise}});var fs=!!td&&u((function(){td.prototype.finally.call({then:function(){}},(function(){}))}));if(Ne({target:"Promise",proto:!0,real:!0,forced:fs},{finally:function(t){var e=rd(this,N("Promise")),n=J(t);return this.then(n?function(n){return Md(e,t()).then((function(){return n}))}:t,n?function(n){return Md(e,t()).then((function(){throw n}))}:t)}}),J(td)){var Vs=N("Promise").prototype.finally;td.prototype.finally!==Vs&&re(td.prototype,"finally",Vs,{unsafe:!0})}var Ws=!u((function(){Reflect.apply((function(){}))}));Ne({target:"Reflect",stat:!0,forced:Ws},{apply:function(t,e,n){return Fe(O(t),e,Kt(n))}});var vs=a.Function,Ss=f([].concat),Cs=f([].join),Ys={},Rs=function(t,e,n){if(!ot(Ys,e)){for(var i=[],r=0;r<e;r++)i[r]="a["+r+"]";Ys[e]=vs("C,a","return new C("+Cs(i,",")+")")}return Ys[e](t,n)},Ks=vs.bind||function(t){var e=O(this),n=e.prototype,i=bn(arguments,1),r=function(){var n=Ss(i,bn(arguments));return this instanceof r?Rs(e,n.length,n):e.apply(t,n)};return x(n)&&(r.prototype=n),r},Ls=N("Reflect","construct"),Js=Object.prototype,xs=[].push,Hs=u((function(){function t(){}return!(Ls((function(){}),[],t)instanceof t)})),Ns=!u((function(){Ls((function(){}))})),ks=Hs||Ns;Ne({target:"Reflect",stat:!0,forced:ks,sham:ks},{construct:function(t,e){nd(t),Kt(e);var n=arguments.length<3?t:nd(arguments[2]);if(Ns&&!Hs)return Ls(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var i=[null];return Fe(xs,i,e),new(Fe(Ks,t,i))}var r=n.prototype,c=ln(x(r)?r:Js),l=Fe(t,c,e);return x(l)?l:c}});var Us=u((function(){Reflect.defineProperty(Ht.f({},1,{value:1}),1,{value:2})}));Ne({target:"Reflect",stat:!0,forced:Us,sham:!d},{defineProperty:function(t,e,n){Kt(t);var i=gt(e);Kt(n);try{return Ht.f(t,i,n),!0}catch(t){return!1}}});var ws=Ct.f;Ne({target:"Reflect",stat:!0},{deleteProperty:function(t,e){var n=ws(Kt(t),e);return!(n&&!n.configurable)&&delete t[e]}});var Ts=function(t){return void 0!==t&&(ot(t,"value")||ot(t,"writable"))};Ne({target:"Reflect",stat:!0},{get:function t(e,n){var i,r,c=arguments.length<3?e:arguments[2];return Kt(e)===c?e[n]:(i=Ct.f(e,n))?Ts(i)?i.value:void 0===i.get?void 0:m(i.get,c):x(r=vr(e))?t(r,n,c):void 0}}),Ne({target:"Reflect",stat:!0,sham:!d},{getOwnPropertyDescriptor:function(t,e){return Ct.f(Kt(t),e)}}),Ne({target:"Reflect",stat:!0,sham:!Gr},{getPrototypeOf:function(t){return vr(Kt(t))}}),Ne({target:"Reflect",stat:!0},{has:function(t,e){return e in t}}),Ne({target:"Reflect",stat:!0},{isExtensible:function(t){return Kt(t),lo(t)}}),Ne({target:"Reflect",stat:!0},{ownKeys:ve}),Ne({target:"Reflect",stat:!0,sham:!oo},{preventExtensions:function(t){Kt(t);try{var e=N("Object","preventExtensions");return e&&e(t),!0}catch(t){return!1}}});var Fs=u((function(){var t=function(){},e=Ht.f(new t,"a",{configurable:!0});return!1!==Reflect.set(t.prototype,"a",1,e)}));Ne({target:"Reflect",stat:!0,forced:Fs},{set:function t(e,n,i){var r,c,l,o=arguments.length<4?e:arguments[3],a=Ct.f(Kt(e),n);if(!a){if(x(c=vr(e)))return t(c,n,i,o);a=y(0)}if(Ts(a)){if(!1===a.writable||!x(o))return!1;if(r=Ct.f(o,n)){if(r.get||r.set||!1===r.writable)return!1;r.value=i,Ht.f(o,n,r)}else Ht.f(o,n,y(0,i))}else{if(void 0===(l=a.set))return!1;m(l,o,i)}return!0}}),kr&&Ne({target:"Reflect",stat:!0},{setPrototypeOf:function(t,e){Kt(t),Nr(e);try{return kr(t,e),!0}catch(t){return!1}}});var Bs=pt("match"),zs=function(t){var e;return x(t)&&(void 0!==(e=t[Bs])?!!e:"RegExp"==v(t))},js=function(){var t=Kt(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e},As=a.RegExp,Ms=u((function(){var t=As("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),Ps=Ms||u((function(){return!As("a","y").sticky})),Qs=Ms||u((function(){var t=As("^r","gy");return t.lastIndex=2,null!=t.exec("str")})),Ds={BROKEN_CARET:Qs,MISSED_STICKY:Ps,UNSUPPORTED_Y:Ms},Es=a.RegExp,Os=u((function(){var t=Es(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)})),_s=a.RegExp,qs=u((function(){var t=_s("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")})),$s=Ht.f,tm=fe.f,em=$t.enforce,nm=pt("match"),im=a.RegExp,rm=im.prototype,cm=a.SyntaxError,lm=f(js),om=f(rm.exec),am=f("".charAt),um=f("".replace),dm=f("".indexOf),sm=f("".slice),mm=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,hm=/a/g,bm=/a/g,Zm=new im(hm)!==hm,pm=Ds.MISSED_STICKY,ym=Ds.UNSUPPORTED_Y,Im=d&&(!Zm||pm||Os||qs||u((function(){return bm[nm]=!1,im(hm)!=hm||im(bm)==bm||"/a/i"!=im(hm,"i")})));if(xe("RegExp",Im)){for(var Xm=function(t,e){var n,i,r,c,l,o,a=k(rm,this),u=zs(t),d=void 0===e,s=[],m=t;if(!a&&u&&d&&t.constructor===Xm)return t;if((u||k(rm,t))&&(t=t.source,d&&(e="flags"in m?m.flags:lm(m))),t=void 0===t?"":Oe(t),e=void 0===e?"":Oe(e),m=t,Os&&"dotAll"in hm&&(i=!!e&&dm(e,"s")>-1)&&(e=um(e,/s/g,"")),n=e,pm&&"sticky"in hm&&(r=!!e&&dm(e,"y")>-1)&&ym&&(e=um(e,/y/g,"")),qs&&(c=function(t){for(var e,n=t.length,i=0,r="",c=[],l={},o=!1,a=!1,u=0,d="";i<=n;i++){if("\\"===(e=am(t,i)))e+=am(t,++i);else if("]"===e)o=!1;else if(!o)switch(!0){case"["===e:o=!0;break;case"("===e:om(mm,sm(t,i+1))&&(i+=2,a=!0),r+=e,u++;continue;case">"===e&&a:if(""===d||ot(l,d))throw new cm("Invalid capture group name");l[d]=!0,c[c.length]=[d,u],a=!1,d="";continue}a?d+=e:r+=e}return[r,c]}(t),t=c[0],s=c[1]),l=bo(im(t,e),a?this:rm,Xm),(i||r||s.length)&&(o=em(l),i&&(o.dotAll=!0,o.raw=Xm(function(t){for(var e,n=t.length,i=0,r="",c=!1;i<=n;i++)"\\"!==(e=am(t,i))?c||"."!==e?("["===e?c=!0:"]"===e&&(c=!1),r+=e):r+="[\\s\\S]":r+=e+am(t,++i);return r}(t),n)),r&&(o.sticky=!0),s.length&&(o.groups=s)),t!==m)try{Nt(l,"source",""===m?"(?:)":m)}catch(t){}return l},gm=function(t){t in Xm||$s(Xm,t,{configurable:!0,get:function(){return im[t]},set:function(e){im[t]=e}})},Gm=tm(im),fm=0;Gm.length>fm;)gm(Gm[fm++]);rm.constructor=Xm,Xm.prototype=rm,re(a,"RegExp",Xm)}Hc("RegExp");var Vm=$t.get,Wm=it("native-string-replace",String.prototype.replace),vm=RegExp.prototype.exec,Sm=vm,Cm=f("".charAt),Ym=f("".indexOf),Rm=f("".replace),Km=f("".slice),Lm=function(){var t=/a/,e=/b*/g;return m(vm,t,"a"),m(vm,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),Jm=Ds.BROKEN_CARET,xm=void 0!==/()??/.exec("")[1];(Lm||xm||Jm||Os||qs)&&(Sm=function(t){var e,n,i,r,c,l,o,a=this,u=Vm(a),d=Oe(t),s=u.raw;if(s)return s.lastIndex=a.lastIndex,e=m(Sm,s,d),a.lastIndex=s.lastIndex,e;var h=u.groups,b=Jm&&a.sticky,Z=m(js,a),p=a.source,y=0,I=d;if(b&&(Z=Rm(Z,"y",""),-1===Ym(Z,"g")&&(Z+="g"),I=Km(d,a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==Cm(d,a.lastIndex-1))&&(p="(?: "+p+")",I=" "+I,y++),n=new RegExp("^(?:"+p+")",Z)),xm&&(n=new RegExp("^"+p+"$(?!\\s)",Z)),Lm&&(i=a.lastIndex),r=m(vm,b?n:a,I),b?r?(r.input=Km(r.input,y),r[0]=Km(r[0],y),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:Lm&&r&&(a.lastIndex=a.global?r.index+r[0].length:i),xm&&r&&r.length>1&&m(Wm,r[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(r[c]=void 0)})),r&&h)for(r.groups=l=ln(null),c=0;c<h.length;c++)l[(o=h[c])[0]]=r[o[1]];return r});var Hm=Sm;Ne({target:"RegExp",proto:!0,forced:/./.exec!==Hm},{exec:Hm});var Nm=RegExp.prototype;d&&u((function(){return"sy"!==Object.getOwnPropertyDescriptor(Nm,"flags").get.call({dotAll:!0,sticky:!0})}))&&Ht.f(Nm,"flags",{configurable:!0,get:js});var km=Ds.MISSED_STICKY,Um=Ht.f,wm=$t.get,Tm=RegExp.prototype,Fm=a.TypeError;d&&km&&Um(Tm,"sticky",{configurable:!0,get:function(){if(this!==Tm){if("RegExp"===v(this))return!!wm(this).sticky;throw Fm("Incompatible receiver, RegExp required")}}});var Bm=function(){var t=!1,e=/[ac]/;return e.exec=function(){return t=!0,/./.exec.apply(this,arguments)},!0===e.test("abc")&&t}(),zm=a.Error,jm=f(/./.test);Ne({target:"RegExp",proto:!0,forced:!Bm},{test:function(t){var e=this.exec;if(!J(e))return jm(this,t);var n=m(e,this,t);if(null!==n&&!x(n))throw new zm("RegExp exec method returned something other than an Object or null");return!!n}});var Am=ie.PROPER,Mm=RegExp.prototype,Pm=Mm.toString,Qm=f(js),Dm=u((function(){return"/a/b"!=Pm.call({source:"a",flags:"b"})})),Em=Am&&"toString"!=Pm.name;(Dm||Em)&&re(RegExp.prototype,"toString",(function(){var t=Kt(this),e=Oe(t.source),n=t.flags;return"/"+e+"/"+Oe(void 0===n&&k(Mm,t)&&!("flags"in Mm)?Qm(t):n)}),{unsafe:!0}),Zo("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),go);var Om=f("".charAt),_m=f("".charCodeAt),qm=f("".slice),$m=function(t){return function(e,n){var i,r,c=Oe(K(e)),l=oe(n),o=c.length;return l<0||l>=o?t?"":void 0:(i=_m(c,l))<55296||i>56319||l+1===o||(r=_m(c,l+1))<56320||r>57343?t?Om(c,l):i:t?qm(c,l,l+2):r-56320+(i-55296<<10)+65536}},th={codeAt:$m(!1),charAt:$m(!0)},eh=th.codeAt;Ne({target:"String",proto:!0},{codePointAt:function(t){return eh(this,t)}});var nh,ih=a.TypeError,rh=function(t){if(zs(t))throw ih("The method doesn't accept regular expressions");return t},ch=pt("match"),lh=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[ch]=!1,"/./"[t](e)}catch(t){}}return!1},oh=Ct.f,ah=f("".endsWith),uh=f("".slice),dh=Math.min,sh=lh("endsWith"),mh=!(sh||(nh=oh(String.prototype,"endsWith"),!nh||nh.writable));Ne({target:"String",proto:!0,forced:!mh&&!sh},{endsWith:function(t){var e=Oe(K(this));rh(t);var n=arguments.length>1?arguments[1]:void 0,i=e.length,r=void 0===n?i:dh(me(n),i),c=Oe(t);return ah?ah(e,c,r):uh(e,r-c.length,r)===c}});var hh=a.RangeError,bh=String.fromCharCode,Zh=String.fromCodePoint,ph=f([].join),yh=!!Zh&&1!=Zh.length;Ne({target:"String",stat:!0,forced:yh},{fromCodePoint:function(t){for(var e,n=[],i=arguments.length,r=0;i>r;){if(e=+arguments[r++],de(e,1114111)!==e)throw hh(e+" is not a valid code point");n[r]=e<65536?bh(e):bh(55296+((e-=65536)>>10),e%1024+56320)}return ph(n,"")}});var Ih=f("".indexOf);Ne({target:"String",proto:!0,forced:!lh("includes")},{includes:function(t){return!!~Ih(Oe(K(this)),Oe(rh(t)),arguments.length>1?arguments[1]:void 0)}});var Xh=th.charAt,gh=$t.set,Gh=$t.getterFor("String Iterator");jr(String,"String",(function(t){gh(this,{type:"String Iterator",string:Oe(t),index:0})}),(function(){var t,e=Gh(this),n=e.string,i=e.index;return i>=n.length?{value:void 0,done:!0}:(t=Xh(n,i),e.index+=t.length,{value:t,done:!1})}));var fh=pt("species"),Vh=RegExp.prototype,Wh=function(t,e,n,i){var r=pt(t),c=!u((function(){var e={};return e[r]=function(){return 7},7!=""[t](e)})),l=c&&!u((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[fh]=function(){return n},n.flags="",n[r]=/./[r]),n.exec=function(){return e=!0,null},n[r](""),!e}));if(!c||!l||n){var o=f(/./[r]),a=e(r,""[t],(function(t,e,n,i,r){var l=f(t),a=e.exec;return a===Hm||a===Vh.exec?c&&!r?{done:!0,value:o(e,n,i)}:{done:!0,value:l(n,e,i)}:{done:!1}}));re(String.prototype,t,a[0]),re(Vh,r,a[1])}i&&Nt(Vh[r],"sham",!0)},vh=th.charAt,Sh=function(t,e,n){return e+(n?vh(t,e).length:1)},Ch=a.TypeError,Yh=function(t,e){var n=t.exec;if(J(n)){var i=m(n,t,e);return null!==i&&Kt(i),i}if("RegExp"===v(t))return m(Hm,t,e);throw Ch("RegExp#exec called on incompatible receiver")};Wh("match",(function(t,e,n){return[function(e){var n=K(this),i=null==e?void 0:_(e,t);return i?m(i,e,n):new RegExp(e)[t](Oe(n))},function(t){var i=Kt(this),r=Oe(t),c=n(e,i,r);if(c.done)return c.value;if(!i.global)return Yh(i,r);var l=i.unicode;i.lastIndex=0;for(var o,a=[],u=0;null!==(o=Yh(i,r));){var d=Oe(o[0]);a[u]=d,""===d&&(i.lastIndex=Sh(r,me(i.lastIndex),l)),u++}return 0===u?null:a}]}));var Rh=pt("matchAll"),Kh=$t.set,Lh=$t.getterFor("RegExp String Iterator"),Jh=RegExp.prototype,xh=a.TypeError,Hh=f(js),Nh=f("".indexOf),kh=f("".matchAll),Uh=!!kh&&!u((function(){kh("a",/./)})),wh=Jr((function(t,e,n,i){Kh(this,{type:"RegExp String Iterator",regexp:t,string:e,global:n,unicode:i,done:!1})}),"RegExp String",(function(){var t=Lh(this);if(t.done)return{value:void 0,done:!0};var e=t.regexp,n=t.string,i=Yh(e,n);return null===i?{value:void 0,done:t.done=!0}:t.global?(""===Oe(i[0])&&(e.lastIndex=Sh(n,me(e.lastIndex),t.unicode)),{value:i,done:!1}):(t.done=!0,{value:i,done:!1})})),Th=function(t){var e,n,i,r,c,l,o=Kt(this),a=Oe(t);return e=rd(o,RegExp),void 0===(n=o.flags)&&k(Jh,o)&&!("flags"in Jh)&&(n=Hh(o)),i=void 0===n?"":Oe(n),r=new e(e===RegExp?o.source:o,i),c=!!~Nh(i,"g"),l=!!~Nh(i,"u"),r.lastIndex=me(o.lastIndex),new wh(r,a,c,l)};Ne({target:"String",proto:!0,forced:Uh},{matchAll:function(t){var e,n,i,r=K(this);if(null!=t){if(zs(t)&&(e=Oe(K("flags"in Jh?t.flags:Hh(t))),!~Nh(e,"g")))throw xh("`.matchAll` does not allow non-global regexes");if(Uh)return kh(r,t);if(i=_(t,Rh))return m(i,t,r)}else if(Uh)return kh(r,t);return n=Oe(r),new RegExp(t,"g")[Rh](n)}}),Rh in Jh||re(Jh,Rh,Th);var Fh=f(iu),Bh=f("".slice),zh=Math.ceil,jh=function(t){return function(e,n,i){var r,c,l=Oe(K(e)),o=me(n),a=l.length,u=void 0===i?" ":Oe(i);return o<=a||""==u?l:((c=Fh(u,zh((r=o-a)/u.length))).length>r&&(c=Bh(c,0,r)),t?l+c:c+l)}},Ah={start:jh(!1),end:jh(!0)},Mh=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(U),Ph=Ah.end;Ne({target:"String",proto:!0,forced:Mh},{padEnd:function(t){return Ph(this,t,arguments.length>1?arguments[1]:void 0)}});var Qh=Ah.start;Ne({target:"String",proto:!0,forced:Mh},{padStart:function(t){return Qh(this,t,arguments.length>1?arguments[1]:void 0)}});var Dh=f([].push),Eh=f([].join);Ne({target:"String",stat:!0},{raw:function(t){for(var e=L(ct(t).raw),n=he(e),i=arguments.length,r=[],c=0;n>c;){if(Dh(r,Oe(e[c++])),c===n)return Eh(r,"");c<i&&Dh(r,Oe(arguments[c]))}}}),Ne({target:"String",proto:!0},{repeat:iu});var Oh=Math.floor,_h=f("".charAt),qh=f("".replace),$h=f("".slice),tb=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,eb=/\$([$&'`]|\d{1,2})/g,nb=function(t,e,n,i,r,c){var l=n+t.length,o=i.length,a=eb;return void 0!==r&&(r=ct(r),a=tb),qh(c,a,(function(c,a){var u;switch(_h(a,0)){case"$":return"$";case"&":return t;case"`":return $h(e,0,n);case"'":return $h(e,l);case"<":u=r[$h(a,1,-1)];break;default:var d=+a;if(0===d)return c;if(d>o){var s=Oh(d/10);return 0===s?c:s<=o?void 0===i[s-1]?_h(a,1):i[s-1]+_h(a,1):c}u=i[d-1]}return void 0===u?"":u}))},ib=pt("replace"),rb=Math.max,cb=Math.min,lb=f([].concat),ob=f([].push),ab=f("".indexOf),ub=f("".slice),db=function(t){return void 0===t?t:String(t)},sb="$0"==="a".replace(/./,"$0"),mb=!!/./[ib]&&""===/./[ib]("a","$0"),hb=!u((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));Wh("replace",(function(t,e,n){var i=mb?"$":"$0";return[function(t,n){var i=K(this),r=null==t?void 0:_(t,ib);return r?m(r,t,i,n):m(e,Oe(i),t,n)},function(t,r){var c=Kt(this),l=Oe(t);if("string"==typeof r&&-1===ab(r,i)&&-1===ab(r,"$<")){var o=n(e,c,l,r);if(o.done)return o.value}var a=J(r);a||(r=Oe(r));var u=c.global;if(u){var d=c.unicode;c.lastIndex=0}for(var s=[];;){var m=Yh(c,l);if(null===m)break;if(ob(s,m),!u)break;""===Oe(m[0])&&(c.lastIndex=Sh(l,me(c.lastIndex),d))}for(var h="",b=0,Z=0;Z<s.length;Z++){for(var p=Oe((m=s[Z])[0]),y=rb(cb(oe(m.index),l.length),0),I=[],X=1;X<m.length;X++)ob(I,db(m[X]));var g=m.groups;if(a){var G=lb([p],I,y,l);void 0!==g&&ob(G,g);var f=Oe(Fe(r,void 0,G))}else f=nb(p,l,y,I,g,r);y>=b&&(h+=ub(l,b,y)+f,b=y+p.length)}return h+ub(l,b)}]}),!hb||!sb||mb),Wh("search",(function(t,e,n){return[function(e){var n=K(this),i=null==e?void 0:_(e,t);return i?m(i,e,n):new RegExp(e)[t](Oe(n))},function(t){var i=Kt(this),r=Oe(t),c=n(e,i,r);if(c.done)return c.value;var l=i.lastIndex;Hu(l,0)||(i.lastIndex=0);var o=Yh(i,r);return Hu(i.lastIndex,l)||(i.lastIndex=l),null===o?-1:o.index}]}));var bb=Ds.UNSUPPORTED_Y,Zb=Math.min,pb=[].push,yb=f(/./.exec),Ib=f(pb),Xb=f("".slice),gb=!u((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));Wh("split",(function(t,e,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var i=Oe(K(this)),r=void 0===n?4294967295:n>>>0;if(0===r)return[];if(void 0===t)return[i];if(!zs(t))return m(e,i,t,r);for(var c,l,o,a=[],u=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),d=0,s=new RegExp(t.source,u+"g");(c=m(Hm,s,i))&&!((l=s.lastIndex)>d&&(Ib(a,Xb(i,d,c.index)),c.length>1&&c.index<i.length&&Fe(pb,a,dn(c,1)),o=c[0].length,d=l,a.length>=r));)s.lastIndex===c.index&&s.lastIndex++;return d===i.length?!o&&yb(s,"")||Ib(a,""):Ib(a,Xb(i,d)),a.length>r?dn(a,0,r):a}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:m(e,this,t,n)}:e,[function(e,n){var r=K(this),c=null==e?void 0:_(e,t);return c?m(c,e,r,n):m(i,Oe(r),e,n)},function(t,r){var c=Kt(this),l=Oe(t),o=n(i,c,l,r,i!==e);if(o.done)return o.value;var a=rd(c,RegExp),u=c.unicode,d=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(bb?"g":"y"),s=new a(bb?"^(?:"+c.source+")":c,d),m=void 0===r?4294967295:r>>>0;if(0===m)return[];if(0===l.length)return null===Yh(s,l)?[l]:[];for(var h=0,b=0,Z=[];b<l.length;){s.lastIndex=bb?0:b;var p,y=Yh(s,bb?Xb(l,b):l);if(null===y||(p=Zb(me(s.lastIndex+(bb?b:0)),l.length))===h)b=Sh(l,b,u);else{if(Ib(Z,Xb(l,h,b)),Z.length===m)return Z;for(var I=1;I<=y.length-1;I++)if(Ib(Z,y[I]),Z.length===m)return Z;b=h=p}}return Ib(Z,Xb(l,h)),Z}]}),!gb,bb);var Gb=Ct.f,fb=f("".startsWith),Vb=f("".slice),Wb=Math.min,vb=lh("startsWith"),Sb=!vb&&!!function(){var t=Gb(String.prototype,"startsWith");return t&&!t.writable}();Ne({target:"String",proto:!0,forced:!Sb&&!vb},{startsWith:function(t){var e=Oe(K(this));rh(t);var n=me(Wb(arguments.length>1?arguments[1]:void 0,e.length)),i=Oe(t);return fb?fb(e,i,n):Vb(e,n,n+i.length)===i}});var Cb=ie.PROPER,Yb=function(t){return u((function(){return!!pa[t]()||"​…᠎"!=="​…᠎"[t]()||Cb&&pa[t].name!==t}))},Rb=fa.trim;Ne({target:"String",proto:!0,forced:Yb("trim")},{trim:function(){return Rb(this)}});var Kb=fa.end,Lb=Yb("trimEnd"),Jb=Lb?function(){return Kb(this)}:"".trimEnd;Ne({target:"String",proto:!0,name:"trimEnd",forced:Lb},{trimEnd:Jb,trimRight:Jb});var xb=fa.start,Hb=Yb("trimStart"),Nb=Hb?function(){return xb(this)}:"".trimStart;Ne({target:"String",proto:!0,name:"trimStart",forced:Hb},{trimStart:Nb,trimLeft:Nb});var kb=/"/g,Ub=f("".replace),wb=function(t,e,n,i){var r=Oe(K(t)),c="<"+e;return""!==n&&(c+=" "+n+'="'+Ub(Oe(i),kb,"&quot;")+'"'),c+">"+r+"</"+e+">"},Tb=function(t){return u((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))};Ne({target:"String",proto:!0,forced:Tb("anchor")},{anchor:function(t){return wb(this,"a","name",t)}}),Ne({target:"String",proto:!0,forced:Tb("big")},{big:function(){return wb(this,"big","","")}}),Ne({target:"String",proto:!0,forced:Tb("blink")},{blink:function(){return wb(this,"blink","","")}}),Ne({target:"String",proto:!0,forced:Tb("bold")},{bold:function(){return wb(this,"b","","")}}),Ne({target:"String",proto:!0,forced:Tb("fixed")},{fixed:function(){return wb(this,"tt","","")}}),Ne({target:"String",proto:!0,forced:Tb("fontcolor")},{fontcolor:function(t){return wb(this,"font","color",t)}}),Ne({target:"String",proto:!0,forced:Tb("fontsize")},{fontsize:function(t){return wb(this,"font","size",t)}}),Ne({target:"String",proto:!0,forced:Tb("italics")},{italics:function(){return wb(this,"i","","")}}),Ne({target:"String",proto:!0,forced:Tb("link")},{link:function(t){return wb(this,"a","href",t)}}),Ne({target:"String",proto:!0,forced:Tb("small")},{small:function(){return wb(this,"small","","")}}),Ne({target:"String",proto:!0,forced:Tb("strike")},{strike:function(){return wb(this,"strike","","")}}),Ne({target:"String",proto:!0,forced:Tb("sub")},{sub:function(){return wb(this,"sub","","")}}),Ne({target:"String",proto:!0,forced:Tb("sup")},{sup:function(){return wb(this,"sup","","")}});var Fb,Bb,zb,jb=Ht.f,Ab=a.Int8Array,Mb=Ab&&Ab.prototype,Pb=a.Uint8ClampedArray,Qb=Pb&&Pb.prototype,Db=Ab&&vr(Ab),Eb=Mb&&vr(Mb),Ob=Object.prototype,_b=a.TypeError,qb=pt("toStringTag"),$b=st("TYPED_ARRAY_TAG"),tZ=st("TYPED_ARRAY_CONSTRUCTOR"),eZ=Tc&&!!kr&&"Opera"!==De(a.opera),nZ=!1,iZ={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},rZ={BigInt64Array:8,BigUint64Array:8},cZ=function(t){if(!x(t))return!1;var e=De(t);return ot(iZ,e)||ot(rZ,e)};for(Fb in iZ)(zb=(Bb=a[Fb])&&Bb.prototype)?Nt(zb,tZ,Bb):eZ=!1;for(Fb in rZ)(zb=(Bb=a[Fb])&&Bb.prototype)&&Nt(zb,tZ,Bb);if((!eZ||!J(Db)||Db===Function.prototype)&&(Db=function(){throw _b("Incorrect invocation")},eZ))for(Fb in iZ)a[Fb]&&kr(a[Fb],Db);if((!eZ||!Eb||Eb===Ob)&&(Eb=Db.prototype,eZ))for(Fb in iZ)a[Fb]&&kr(a[Fb].prototype,Eb);if(eZ&&vr(Qb)!==Eb&&kr(Qb,Eb),d&&!ot(Eb,qb))for(Fb in nZ=!0,jb(Eb,qb,{get:function(){return x(this)?this[$b]:void 0}}),iZ)a[Fb]&&Nt(a[Fb],$b,Fb);var lZ={NATIVE_ARRAY_BUFFER_VIEWS:eZ,TYPED_ARRAY_CONSTRUCTOR:tZ,TYPED_ARRAY_TAG:nZ&&$b,aTypedArray:function(t){if(cZ(t))return t;throw _b("Target is not a typed array")},aTypedArrayConstructor:function(t){if(J(t)&&(!kr||k(Db,t)))return t;throw _b(D(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n){if(d){if(n)for(var i in iZ){var r=a[i];if(r&&ot(r.prototype,t))try{delete r.prototype[t]}catch(t){}}Eb[t]&&!n||re(Eb,t,n?e:eZ&&Mb[t]||e)}},exportTypedArrayStaticMethod:function(t,e,n){var i,r;if(d){if(kr){if(n)for(i in iZ)if((r=a[i])&&ot(r,t))try{delete r[t]}catch(t){}if(Db[t]&&!n)return;try{return re(Db,t,n?e:eZ&&Db[t]||e)}catch(t){}}for(i in iZ)!(r=a[i])||r[t]&&!n||re(r,t,e)}},isView:function(t){if(!x(t))return!1;var e=De(t);return"DataView"===e||ot(iZ,e)||ot(rZ,e)},isTypedArray:cZ,TypedArray:Db,TypedArrayPrototype:Eb},oZ=lZ.NATIVE_ARRAY_BUFFER_VIEWS,aZ=a.ArrayBuffer,uZ=a.Int8Array,dZ=!oZ||!u((function(){uZ(1)}))||!u((function(){new uZ(-1)}))||!dr((function(t){new uZ,new uZ(null),new uZ(1.5),new uZ(t)}),!0)||u((function(){return 1!==new uZ(new aZ(2),1,void 0).length})),sZ=a.RangeError,mZ=a.RangeError,hZ=function(t,e){var n=function(t){var e=oe(t);if(e<0)throw sZ("The argument can't be less than 0");return e}(t);if(n%e)throw mZ("Wrong offset");return n},bZ=lZ.aTypedArrayConstructor,ZZ=function(t){var e,n,i,r,c,l,o=nd(this),a=ct(t),u=arguments.length,d=u>1?arguments[1]:void 0,s=void 0!==d,h=er(a);if(h&&!$i(h))for(l=(c=ir(a,h)).next,a=[];!(r=m(l,c)).done;)a.push(r.value);for(s&&u>2&&(d=Vn(d,arguments[2])),n=he(a),i=new(bZ(o))(n),e=0;n>e;e++)i[e]=s?d(a[e],e):a[e];return i},pZ=n((function(t){var e=fe.f,n=Un.forEach,i=$t.get,r=$t.set,c=Ht.f,l=Ct.f,o=Math.round,u=a.RangeError,s=Jl.ArrayBuffer,h=s.prototype,b=Jl.DataView,Z=lZ.NATIVE_ARRAY_BUFFER_VIEWS,p=lZ.TYPED_ARRAY_CONSTRUCTOR,I=lZ.TYPED_ARRAY_TAG,X=lZ.TypedArray,g=lZ.TypedArrayPrototype,G=lZ.aTypedArrayConstructor,f=lZ.isTypedArray,V="BYTES_PER_ELEMENT",W="Wrong length",v=function(t,e){G(t);for(var n=0,i=e.length,r=new t(i);i>n;)r[n]=e[n++];return r},S=function(t,e){c(t,e,{get:function(){return i(this)[e]}})},C=function(t){var e;return k(h,t)||"ArrayBuffer"==(e=De(t))||"SharedArrayBuffer"==e},Y=function(t,e){return f(t)&&!P(e)&&e in t&&Ba(+e)&&e>=0},R=function(t,e){return e=gt(e),Y(t,e)?y(2,t[e]):l(t,e)},K=function(t,e,n){return e=gt(e),!(Y(t,e)&&x(n)&&ot(n,"value"))||ot(n,"get")||ot(n,"set")||n.configurable||ot(n,"writable")&&!n.writable||ot(n,"enumerable")&&!n.enumerable?c(t,e,n):(t[e]=n.value,t)};d?(Z||(Ct.f=R,Ht.f=K,S(g,"buffer"),S(g,"byteOffset"),S(g,"byteLength"),S(g,"length")),Ne({target:"Object",stat:!0,forced:!Z},{getOwnPropertyDescriptor:R,defineProperty:K}),t.exports=function(t,l,d){var h=t.match(/\d+$/)[0]/8,y=t+(d?"Clamped":"")+"Array",G="get"+t,S="set"+t,Y=a[y],R=Y,K=R&&R.prototype,L={},J=function(t,e){c(t,e,{get:function(){return function(t,e){var n=i(t);return n.view[G](e*h+n.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,n){var r=i(t);d&&(n=(n=o(n))<0?0:n>255?255:255&n),r.view[S](e*h+r.byteOffset,n,!0)}(this,e,t)},enumerable:!0})};Z?dZ&&(R=l((function(t,e,n,i){return zc(t,K),bo(x(e)?C(e)?void 0!==i?new Y(e,hZ(n,h),i):void 0!==n?new Y(e,hZ(n,h)):new Y(e):f(e)?v(R,e):m(ZZ,R,e):new Y(Ac(e)),t,R)})),kr&&kr(R,X),n(e(Y),(function(t){t in R||Nt(R,t,Y[t])})),R.prototype=K):(R=l((function(t,e,n,i){zc(t,K);var c,l,o,a=0,d=0;if(x(e)){if(!C(e))return f(e)?v(R,e):m(ZZ,R,e);c=e,d=hZ(n,h);var Z=e.byteLength;if(void 0===i){if(Z%h)throw u(W);if((l=Z-d)<0)throw u(W)}else if((l=me(i)*h)+d>Z)throw u(W);o=l/h}else o=Ac(e),c=new s(l=o*h);for(r(t,{buffer:c,byteOffset:d,byteLength:l,length:o,view:new b(c)});a<o;)J(t,a++)})),kr&&kr(R,X),K=R.prototype=ln(g)),K.constructor!==R&&Nt(K,"constructor",R),Nt(K,p,R),I&&Nt(K,I,y),L[y]=R,Ne({global:!0,forced:R!=Y,sham:!Z},L),V in R||Nt(R,V,h),V in K||Nt(K,V,h),Hc(y)}):t.exports=function(){}}));pZ("Float32",(function(t){return function(e,n,i){return t(this,e,n,i)}})),pZ("Float64",(function(t){return function(e,n,i){return t(this,e,n,i)}})),pZ("Int8",(function(t){return function(e,n,i){return t(this,e,n,i)}})),pZ("Int16",(function(t){return function(e,n,i){return t(this,e,n,i)}})),pZ("Int32",(function(t){return function(e,n,i){return t(this,e,n,i)}})),pZ("Uint8",(function(t){return function(e,n,i){return t(this,e,n,i)}})),pZ("Uint8",(function(t){return function(e,n,i){return t(this,e,n,i)}}),!0),pZ("Uint16",(function(t){return function(e,n,i){return t(this,e,n,i)}})),pZ("Uint32",(function(t){return function(e,n,i){return t(this,e,n,i)}}));var yZ=f(Ni),IZ=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("copyWithin",(function(t,e){return yZ(IZ(this),t,e,arguments.length>2?arguments[2]:void 0)}));var XZ=Un.every,gZ=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("every",(function(t){return XZ(gZ(this),t,arguments.length>1?arguments[1]:void 0)}));var GZ=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("fill",(function(t){var e=arguments.length;return m(Ti,GZ(this),t,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}));var fZ=lZ.TYPED_ARRAY_CONSTRUCTOR,VZ=lZ.aTypedArrayConstructor,WZ=function(t){return VZ(rd(t,t[fZ]))},vZ=function(t,e){return function(t,e){for(var n=0,i=e.length,r=new t(i);i>n;)r[n]=e[n++];return r}(WZ(t),e)},SZ=Un.filter,CZ=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("filter",(function(t){var e=SZ(CZ(this),t,arguments.length>1?arguments[1]:void 0);return vZ(this,e)}));var YZ=Un.find,RZ=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("find",(function(t){return YZ(RZ(this),t,arguments.length>1?arguments[1]:void 0)}));var KZ=Un.findIndex,LZ=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("findIndex",(function(t){return KZ(LZ(this),t,arguments.length>1?arguments[1]:void 0)}));var JZ=Un.forEach,xZ=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("forEach",(function(t){JZ(xZ(this),t,arguments.length>1?arguments[1]:void 0)})),(0,lZ.exportTypedArrayStaticMethod)("from",ZZ,dZ);var HZ=Ze.includes,NZ=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("includes",(function(t){return HZ(NZ(this),t,arguments.length>1?arguments[1]:void 0)}));var kZ=Ze.indexOf,UZ=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("indexOf",(function(t){return kZ(UZ(this),t,arguments.length>1?arguments[1]:void 0)}));var wZ=ie.PROPER,TZ=pt("iterator"),FZ=a.Uint8Array,BZ=f(Pr.values),zZ=f(Pr.keys),jZ=f(Pr.entries),AZ=lZ.aTypedArray,MZ=lZ.exportTypedArrayMethod,PZ=FZ&&FZ.prototype[TZ],QZ=!!PZ&&"values"===PZ.name,DZ=function(){return BZ(AZ(this))};MZ("entries",(function(){return jZ(AZ(this))})),MZ("keys",(function(){return zZ(AZ(this))})),MZ("values",DZ,wZ&&!QZ),MZ(TZ,DZ,wZ&&!QZ);var EZ=lZ.aTypedArray,OZ=lZ.exportTypedArrayMethod,_Z=f([].join);OZ("join",(function(t){return _Z(EZ(this),t)}));var qZ=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("lastIndexOf",(function(t){var e=arguments.length;return Fe(tc,qZ(this),e>1?[t,arguments[1]]:[t])}));var $Z=Un.map,tp=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("map",(function(t){return $Z(tp(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(WZ(t))(e)}))}));var ep=lZ.aTypedArrayConstructor;(0,lZ.exportTypedArrayStaticMethod)("of",(function(){for(var t=0,e=arguments.length,n=new(ep(this))(e);e>t;)n[t]=arguments[t++];return n}),dZ);var np=oc.left,ip=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("reduce",(function(t){var e=arguments.length;return np(ip(this),t,e,e>1?arguments[1]:void 0)}));var rp=oc.right,cp=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("reduceRight",(function(t){var e=arguments.length;return rp(cp(this),t,e,e>1?arguments[1]:void 0)}));var lp=lZ.aTypedArray,op=lZ.exportTypedArrayMethod,ap=Math.floor;op("reverse",(function(){for(var t,e=this,n=lp(e).length,i=ap(n/2),r=0;r<i;)t=e[r],e[r++]=e[--n],e[n]=t;return e}));var up=a.RangeError,dp=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("set",(function(t){dp(this);var e=hZ(arguments.length>1?arguments[1]:void 0,1),n=this.length,i=ct(t),r=he(i),c=0;if(r+e>n)throw up("Wrong length");for(;c<r;)this[e+c]=i[c++]}),u((function(){new Int8Array(1).set({})})));var sp=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("slice",(function(t,e){for(var n=bn(sp(this),t,e),i=WZ(this),r=0,c=n.length,l=new i(c);c>r;)l[r]=n[r++];return l}),u((function(){new Int8Array(1).slice()})));var mp=Un.some,hp=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("some",(function(t){return mp(hp(this),t,arguments.length>1?arguments[1]:void 0)}));var bp=a.Array,Zp=lZ.aTypedArray,pp=lZ.exportTypedArrayMethod,yp=a.Uint16Array,Ip=yp&&f(yp.prototype.sort),Xp=!(!Ip||u((function(){Ip(new yp(2),null)}))&&u((function(){Ip(new yp(2),{})}))),gp=!!Ip&&!u((function(){if(z)return z<74;if(fc)return fc<67;if(Vc)return!0;if(vc)return vc<602;var t,e,n=new yp(516),i=bp(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,i[t]=t-2*e+3;for(Ip(n,(function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(n[t]!==i[t])return!0}));pp("sort",(function(t){return void 0!==t&&O(t),gp?Ip(this,t):gc(Zp(this),function(t){return function(e,n){return void 0!==t?+t(e,n)||0:n!=n?-1:e!=e?1:0===e&&0===n?1/e>0&&1/n<0?1:-1:e>n}}(t))}),!gp||Xp);var Gp=lZ.aTypedArray;(0,lZ.exportTypedArrayMethod)("subarray",(function(t,e){var n=Gp(this),i=n.length,r=de(t,i);return new(WZ(n))(n.buffer,n.byteOffset+r*n.BYTES_PER_ELEMENT,me((void 0===e?i:de(e,i))-r))}));var fp=a.Int8Array,Vp=lZ.aTypedArray,Wp=lZ.exportTypedArrayMethod,vp=[].toLocaleString,Sp=!!fp&&u((function(){vp.call(new fp(1))}));Wp("toLocaleString",(function(){return Fe(vp,Sp?bn(Vp(this)):Vp(this),bn(arguments))}),u((function(){return[1,2].toLocaleString()!=new fp([1,2]).toLocaleString()}))||!u((function(){fp.prototype.toLocaleString.call([1,2])})));var Cp=lZ.exportTypedArrayMethod,Yp=a.Uint8Array,Rp=Yp&&Yp.prototype||{},Kp=[].toString,Lp=f([].join);u((function(){Kp.call({})}))&&(Kp=function(){return Lp(this)});var Jp=Rp.toString!=Kp;Cp("toString",Kp,Jp);var xp=ao.getWeakData,Hp=$t.set,Np=$t.getterFor,kp=Un.find,Up=Un.findIndex,wp=f([].splice),Tp=0,Fp=function(t){return t.frozen||(t.frozen=new Bp)},Bp=function(){this.entries=[]},zp=function(t,e){return kp(t.entries,(function(t){return t[0]===e}))};Bp.prototype={get:function(t){var e=zp(this,t);if(e)return e[1]},has:function(t){return!!zp(this,t)},set:function(t,e){var n=zp(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=Up(this.entries,(function(e){return e[0]===t}));return~e&&wp(this.entries,e,1),!!~e}};var jp,Ap={getConstructor:function(t,e,n,i){var r=t((function(t,r){zc(t,c),Hp(t,{type:e,id:Tp++,frozen:void 0}),null!=r&&ho(r,t[i],{that:t,AS_ENTRIES:n})})),c=r.prototype,l=Np(e),o=function(t,e,n){var i=l(t),r=xp(Kt(e),!0);return!0===r?Fp(i).set(e,n):r[i.id]=n,t};return Fc(c,{delete:function(t){var e=l(this);if(!x(t))return!1;var n=xp(t);return!0===n?Fp(e).delete(t):n&&ot(n,e.id)&&delete n[e.id]},has:function(t){var e=l(this);if(!x(t))return!1;var n=xp(t);return!0===n?Fp(e).has(t):n&&ot(n,e.id)}}),Fc(c,n?{get:function(t){var e=l(this);if(x(t)){var n=xp(t);return!0===n?Fp(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return o(this,t,e)}}:{add:function(t){return o(this,t,!0)}}),r}},Mp=$t.enforce,Pp=!a.ActiveXObject&&"ActiveXObject"in a,Qp=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Dp=Zo("WeakMap",Qp,Ap);if(zt&&Pp){jp=Ap.getConstructor(Qp,"WeakMap",!0),ao.enable();var Ep=Dp.prototype,Op=f(Ep.delete),_p=f(Ep.has),qp=f(Ep.get),$p=f(Ep.set);Fc(Ep,{delete:function(t){if(x(t)&&!lo(t)){var e=Mp(this);return e.frozen||(e.frozen=new jp),Op(this,t)||e.frozen.delete(t)}return Op(this,t)},has:function(t){if(x(t)&&!lo(t)){var e=Mp(this);return e.frozen||(e.frozen=new jp),_p(this,t)||e.frozen.has(t)}return _p(this,t)},get:function(t){if(x(t)&&!lo(t)){var e=Mp(this);return e.frozen||(e.frozen=new jp),_p(this,t)?qp(this,t):e.frozen.get(t)}return qp(this,t)},set:function(t,e){if(x(t)&&!lo(t)){var n=Mp(this);n.frozen||(n.frozen=new jp),_p(this,t)?$p(this,t,e):n.frozen.set(t,e)}else $p(this,t,e);return this}})}Zo("WeakSet",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),Ap);var ty={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},ey=Vt("span").classList,ny=ey&&ey.constructor&&ey.constructor.prototype,iy=ny===Object.prototype?void 0:ny,ry=Un.forEach,cy=hr("forEach")?[].forEach:function(t){return ry(this,t,arguments.length>1?arguments[1]:void 0)},ly=function(t){if(t&&t.forEach!==cy)try{Nt(t,"forEach",cy)}catch(e){t.forEach=cy}};for(var oy in ty)ty[oy]&&ly(a[oy]&&a[oy].prototype);ly(iy);var ay=pt("iterator"),uy=pt("toStringTag"),dy=Pr.values,sy=function(t,e){if(t){if(t[ay]!==dy)try{Nt(t,ay,dy)}catch(e){t[ay]=dy}if(t[uy]||Nt(t,uy,e),ty[e])for(var n in Pr)if(t[n]!==Pr[n])try{Nt(t,n,Pr[n])}catch(e){t[n]=Pr[n]}}};for(var my in ty)sy(a[my]&&a[my].prototype,my);sy(iy,"DOMTokenList");var hy=!a.setImmediate||!a.clearImmediate;Ne({global:!0,bind:!0,enumerable:!0,forced:hy},{setImmediate:Cd.set,clearImmediate:Cd.clear});var by=a.process;Ne({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(t){var e=ac&&by.domain;zd(e?e.bind(t):t)}});var Zy=pt("iterator"),py=!u((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),e=t.searchParams,n="";return t.pathname="c%20d",e.forEach((function(t,i){e.delete("b"),n+=i+t})),!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[Zy]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),yy=/[^\0-\u007E]/,Iy=/[.\u3002\uFF0E\uFF61]/g,Xy="Overflow: input needs wider integers to process",gy=a.RangeError,Gy=f(Iy.exec),fy=Math.floor,Vy=String.fromCharCode,Wy=f("".charCodeAt),vy=f([].join),Sy=f([].push),Cy=f("".replace),Yy=f("".split),Ry=f("".toLowerCase),Ky=function(t){return t+22+75*(t<26)},Ly=function(t,e,n){var i=0;for(t=n?fy(t/700):t>>1,t+=fy(t/e);t>455;)t=fy(t/35),i+=36;return fy(i+36*t/(t+38))},Jy=function(t){var e=[];t=function(t){for(var e=[],n=0,i=t.length;n<i;){var r=Wy(t,n++);if(r>=55296&&r<=56319&&n<i){var c=Wy(t,n++);56320==(64512&c)?Sy(e,((1023&r)<<10)+(1023&c)+65536):(Sy(e,r),n--)}else Sy(e,r)}return e}(t);var n,i,r=t.length,c=128,l=0,o=72;for(n=0;n<t.length;n++)(i=t[n])<128&&Sy(e,Vy(i));var a=e.length,u=a;for(a&&Sy(e,"-");u<r;){var d=2147483647;for(n=0;n<t.length;n++)(i=t[n])>=c&&i<d&&(d=i);var s=u+1;if(d-c>fy((2147483647-l)/s))throw gy(Xy);for(l+=(d-c)*s,c=d,n=0;n<t.length;n++){if((i=t[n])<c&&++l>2147483647)throw gy(Xy);if(i==c){for(var m=l,h=36;;){var b=h<=o?1:h>=o+26?26:h-o;if(m<b)break;var Z=m-b,p=36-b;Sy(e,Vy(Ky(b+Z%p))),m=fy(Z/p),h+=36}Sy(e,Vy(Ky(m))),o=Ly(l,s,u==a),l=0,u++}}l++,c++}return vy(e,"")},xy=pt("iterator"),Hy=$t.set,Ny=$t.getterFor("URLSearchParams"),ky=$t.getterFor("URLSearchParamsIterator"),Uy=N("fetch"),wy=N("Request"),Ty=N("Headers"),Fy=wy&&wy.prototype,By=Ty&&Ty.prototype,zy=a.RegExp,jy=a.TypeError,Ay=a.decodeURIComponent,My=a.encodeURIComponent,Py=f("".charAt),Qy=f([].join),Dy=f([].push),Ey=f("".replace),Oy=f([].shift),_y=f([].splice),qy=f("".split),$y=f("".slice),tI=/\+/g,eI=Array(4),nI=function(t){return eI[t-1]||(eI[t-1]=zy("((?:%[\\da-f]{2}){"+t+"})","gi"))},iI=function(t){try{return Ay(t)}catch(e){return t}},rI=function(t){var e=Ey(t,tI," "),n=4;try{return Ay(e)}catch(t){for(;n;)e=Ey(e,nI(n--),iI);return e}},cI=/[!'()~]|%20/g,lI={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},oI=function(t){return lI[t]},aI=function(t){return Ey(My(t),cI,oI)},uI=function(t,e){if(t<e)throw jy("Not enough arguments")},dI=Jr((function(t,e){Hy(this,{type:"URLSearchParamsIterator",iterator:ir(Ny(t).entries),kind:e})}),"Iterator",(function(){var t=ky(this),e=t.kind,n=t.iterator.next(),i=n.value;return n.done||(n.value="keys"===e?i.key:"values"===e?i.value:[i.key,i.value]),n}),!0),sI=function(t){this.entries=[],this.url=null,void 0!==t&&(x(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===Py(t,0)?$y(t,1):t:Oe(t)))};sI.prototype={type:"URLSearchParams",bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,n,i,r,c,l,o,a=er(t);if(a)for(n=(e=ir(t,a)).next;!(i=m(n,e)).done;){if(c=(r=ir(Kt(i.value))).next,(l=m(c,r)).done||(o=m(c,r)).done||!m(c,r).done)throw jy("Expected sequence with length 2");Dy(this.entries,{key:Oe(l.value),value:Oe(o.value)})}else for(var u in t)ot(t,u)&&Dy(this.entries,{key:u,value:Oe(t[u])})},parseQuery:function(t){if(t)for(var e,n,i=qy(t,"&"),r=0;r<i.length;)(e=i[r++]).length&&(n=qy(e,"="),Dy(this.entries,{key:rI(Oy(n)),value:rI(Qy(n,"="))}))},serialize:function(){for(var t,e=this.entries,n=[],i=0;i<e.length;)t=e[i++],Dy(n,aI(t.key)+"="+aI(t.value));return Qy(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var mI=function(){zc(this,hI);var t=arguments.length>0?arguments[0]:void 0;Hy(this,new sI(t))},hI=mI.prototype;if(Fc(hI,{append:function(t,e){uI(arguments.length,2);var n=Ny(this);Dy(n.entries,{key:Oe(t),value:Oe(e)}),n.updateURL()},delete:function(t){uI(arguments.length,1);for(var e=Ny(this),n=e.entries,i=Oe(t),r=0;r<n.length;)n[r].key===i?_y(n,r,1):r++;e.updateURL()},get:function(t){uI(arguments.length,1);for(var e=Ny(this).entries,n=Oe(t),i=0;i<e.length;i++)if(e[i].key===n)return e[i].value;return null},getAll:function(t){uI(arguments.length,1);for(var e=Ny(this).entries,n=Oe(t),i=[],r=0;r<e.length;r++)e[r].key===n&&Dy(i,e[r].value);return i},has:function(t){uI(arguments.length,1);for(var e=Ny(this).entries,n=Oe(t),i=0;i<e.length;)if(e[i++].key===n)return!0;return!1},set:function(t,e){uI(arguments.length,1);for(var n,i=Ny(this),r=i.entries,c=!1,l=Oe(t),o=Oe(e),a=0;a<r.length;a++)(n=r[a]).key===l&&(c?_y(r,a--,1):(c=!0,n.value=o));c||Dy(r,{key:l,value:o}),i.updateURL()},sort:function(){var t=Ny(this);gc(t.entries,(function(t,e){return t.key>e.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,n=Ny(this).entries,i=Vn(t,arguments.length>1?arguments[1]:void 0),r=0;r<n.length;)i((e=n[r++]).value,e.key,this)},keys:function(){return new dI(this,"keys")},values:function(){return new dI(this,"values")},entries:function(){return new dI(this,"entries")}},{enumerable:!0}),re(hI,xy,hI.entries,{name:"entries"}),re(hI,"toString",(function(){return Ny(this).serialize()}),{enumerable:!0}),Gn(mI,"URLSearchParams"),Ne({global:!0,forced:!py},{URLSearchParams:mI}),!py&&J(Ty)){var bI=f(By.has),ZI=f(By.set),pI=function(t){if(x(t)){var e,n=t.body;if("URLSearchParams"===De(n))return e=t.headers?new Ty(t.headers):new Ty,bI(e,"content-type")||ZI(e,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),ln(t,{body:y(0,Oe(n)),headers:y(0,e)})}return t};if(J(Uy)&&Ne({global:!0,enumerable:!0,forced:!0},{fetch:function(t){return Uy(t,arguments.length>1?pI(arguments[1]):{})}}),J(wy)){var yI=function(t){return zc(this,Fy),new wy(t,arguments.length>1?pI(arguments[1]):{})};Fy.constructor=yI,yI.prototype=Fy,Ne({global:!0,forced:!0},{Request:yI})}}var II,XI={URLSearchParams:mI,getState:Ny},gI=th.codeAt,GI=$t.set,fI=$t.getterFor("URL"),VI=XI.URLSearchParams,WI=XI.getState,vI=a.URL,SI=a.TypeError,CI=a.parseInt,YI=Math.floor,RI=Math.pow,KI=f("".charAt),LI=f(/./.exec),JI=f([].join),xI=f(1..toString),HI=f([].pop),NI=f([].push),kI=f("".replace),UI=f([].shift),wI=f("".split),TI=f("".slice),FI=f("".toLowerCase),BI=f([].unshift),zI=/[a-z]/i,jI=/[\d+-.a-z]/i,AI=/\d/,MI=/^0x/i,PI=/^[0-7]+$/,QI=/^\d+$/,DI=/^[\da-f]+$/i,EI=/[\0\t\n\r #%/:<>?@[\\\]^|]/,OI=/[\0\t\n\r #/:<>?@[\\\]^|]/,_I=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,qI=/[\t\n\r]/g,$I=function(t){var e,n,i,r;if("number"==typeof t){for(e=[],n=0;n<4;n++)BI(e,t%256),t=YI(t/256);return JI(e,".")}if("object"==l(t)){for(e="",i=function(t){for(var e=null,n=1,i=null,r=0,c=0;c<8;c++)0!==t[c]?(r>n&&(e=i,n=r),i=null,r=0):(null===i&&(i=c),++r);return r>n&&(e=i,n=r),e}(t),n=0;n<8;n++)r&&0===t[n]||(r&&(r=!1),i===n?(e+=n?":":"::",r=!0):(e+=xI(t[n],16),n<7&&(e+=":")));return"["+e+"]"}return t},tX={},eX=Iu({},tX,{" ":1,'"':1,"<":1,">":1,"`":1}),nX=Iu({},eX,{"#":1,"?":1,"{":1,"}":1}),iX=Iu({},nX,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),rX=function(t,e){var n=gI(t,0);return n>32&&n<127&&!ot(e,t)?t:encodeURIComponent(t)},cX={ftp:21,file:null,http:80,https:443,ws:80,wss:443},lX=function(t,e){var n;return 2==t.length&&LI(zI,KI(t,0))&&(":"==(n=KI(t,1))||!e&&"|"==n)},oX=function(t){var e;return t.length>1&&lX(TI(t,0,2))&&(2==t.length||"/"===(e=KI(t,2))||"\\"===e||"?"===e||"#"===e)},aX=function(t){return"."===t||"%2e"===FI(t)},uX={},dX={},sX={},mX={},hX={},bX={},ZX={},pX={},yX={},IX={},XX={},gX={},GX={},fX={},VX={},WX={},vX={},SX={},CX={},YX={},RX={},KX=function t(e,n,i){var r,c,l,o=Oe(e);if(n){if(c=this.parse(o))throw SI(c);this.searchParams=null}else{if(void 0!==i&&(r=new t(i,!0)),c=this.parse(o,null,r))throw SI(c);(l=WI(new VI)).bindURL(this),this.searchParams=l}};KX.prototype={type:"URL",parse:function(t,e,n){var i,r,c,l,o,a=this,u=e||uX,d=0,s="",m=!1,h=!1,b=!1;for(t=Oe(t),e||(a.scheme="",a.username="",a.password="",a.host=null,a.port=null,a.path=[],a.query=null,a.fragment=null,a.cannotBeABaseURL=!1,t=kI(t,_I,"")),t=kI(t,qI,""),i=cr(t);d<=i.length;){switch(r=i[d],u){case uX:if(!r||!LI(zI,r)){if(e)return"Invalid scheme";u=sX;continue}s+=FI(r),u=dX;break;case dX:if(r&&(LI(jI,r)||"+"==r||"-"==r||"."==r))s+=FI(r);else{if(":"!=r){if(e)return"Invalid scheme";s="",u=sX,d=0;continue}if(e&&(a.isSpecial()!=ot(cX,s)||"file"==s&&(a.includesCredentials()||null!==a.port)||"file"==a.scheme&&!a.host))return;if(a.scheme=s,e)return void(a.isSpecial()&&cX[a.scheme]==a.port&&(a.port=null));s="","file"==a.scheme?u=fX:a.isSpecial()&&n&&n.scheme==a.scheme?u=mX:a.isSpecial()?u=pX:"/"==i[d+1]?(u=hX,d++):(a.cannotBeABaseURL=!0,NI(a.path,""),u=CX)}break;case sX:if(!n||n.cannotBeABaseURL&&"#"!=r)return"Invalid scheme";if(n.cannotBeABaseURL&&"#"==r){a.scheme=n.scheme,a.path=dn(n.path),a.query=n.query,a.fragment="",a.cannotBeABaseURL=!0,u=RX;break}u="file"==n.scheme?fX:bX;continue;case mX:if("/"!=r||"/"!=i[d+1]){u=bX;continue}u=yX,d++;break;case hX:if("/"==r){u=IX;break}u=SX;continue;case bX:if(a.scheme=n.scheme,r==II)a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=dn(n.path),a.query=n.query;else if("/"==r||"\\"==r&&a.isSpecial())u=ZX;else if("?"==r)a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=dn(n.path),a.query="",u=YX;else{if("#"!=r){a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=dn(n.path),a.path.length--,u=SX;continue}a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,a.path=dn(n.path),a.query=n.query,a.fragment="",u=RX}break;case ZX:if(!a.isSpecial()||"/"!=r&&"\\"!=r){if("/"!=r){a.username=n.username,a.password=n.password,a.host=n.host,a.port=n.port,u=SX;continue}u=IX}else u=yX;break;case pX:if(u=yX,"/"!=r||"/"!=KI(s,d+1))continue;d++;break;case yX:if("/"!=r&&"\\"!=r){u=IX;continue}break;case IX:if("@"==r){m&&(s="%40"+s),m=!0,c=cr(s);for(var Z=0;Z<c.length;Z++){var p=c[Z];if(":"!=p||b){var y=rX(p,iX);b?a.password+=y:a.username+=y}else b=!0}s=""}else if(r==II||"/"==r||"?"==r||"#"==r||"\\"==r&&a.isSpecial()){if(m&&""==s)return"Invalid authority";d-=cr(s).length+1,s="",u=XX}else s+=r;break;case XX:case gX:if(e&&"file"==a.scheme){u=WX;continue}if(":"!=r||h){if(r==II||"/"==r||"?"==r||"#"==r||"\\"==r&&a.isSpecial()){if(a.isSpecial()&&""==s)return"Invalid host";if(e&&""==s&&(a.includesCredentials()||null!==a.port))return;if(l=a.parseHost(s))return l;if(s="",u=vX,e)return;continue}"["==r?h=!0:"]"==r&&(h=!1),s+=r}else{if(""==s)return"Invalid host";if(l=a.parseHost(s))return l;if(s="",u=GX,e==gX)return}break;case GX:if(!LI(AI,r)){if(r==II||"/"==r||"?"==r||"#"==r||"\\"==r&&a.isSpecial()||e){if(""!=s){var I=CI(s,10);if(I>65535)return"Invalid port";a.port=a.isSpecial()&&I===cX[a.scheme]?null:I,s=""}if(e)return;u=vX;continue}return"Invalid port"}s+=r;break;case fX:if(a.scheme="file","/"==r||"\\"==r)u=VX;else{if(!n||"file"!=n.scheme){u=SX;continue}if(r==II)a.host=n.host,a.path=dn(n.path),a.query=n.query;else if("?"==r)a.host=n.host,a.path=dn(n.path),a.query="",u=YX;else{if("#"!=r){oX(JI(dn(i,d),""))||(a.host=n.host,a.path=dn(n.path),a.shortenPath()),u=SX;continue}a.host=n.host,a.path=dn(n.path),a.query=n.query,a.fragment="",u=RX}}break;case VX:if("/"==r||"\\"==r){u=WX;break}n&&"file"==n.scheme&&!oX(JI(dn(i,d),""))&&(lX(n.path[0],!0)?NI(a.path,n.path[0]):a.host=n.host),u=SX;continue;case WX:if(r==II||"/"==r||"\\"==r||"?"==r||"#"==r){if(!e&&lX(s))u=SX;else if(""==s){if(a.host="",e)return;u=vX}else{if(l=a.parseHost(s))return l;if("localhost"==a.host&&(a.host=""),e)return;s="",u=vX}continue}s+=r;break;case vX:if(a.isSpecial()){if(u=SX,"/"!=r&&"\\"!=r)continue}else if(e||"?"!=r)if(e||"#"!=r){if(r!=II&&(u=SX,"/"!=r))continue}else a.fragment="",u=RX;else a.query="",u=YX;break;case SX:if(r==II||"/"==r||"\\"==r&&a.isSpecial()||!e&&("?"==r||"#"==r)){if(".."===(o=FI(o=s))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(a.shortenPath(),"/"==r||"\\"==r&&a.isSpecial()||NI(a.path,"")):aX(s)?"/"==r||"\\"==r&&a.isSpecial()||NI(a.path,""):("file"==a.scheme&&!a.path.length&&lX(s)&&(a.host&&(a.host=""),s=KI(s,0)+":"),NI(a.path,s)),s="","file"==a.scheme&&(r==II||"?"==r||"#"==r))for(;a.path.length>1&&""===a.path[0];)UI(a.path);"?"==r?(a.query="",u=YX):"#"==r&&(a.fragment="",u=RX)}else s+=rX(r,nX);break;case CX:"?"==r?(a.query="",u=YX):"#"==r?(a.fragment="",u=RX):r!=II&&(a.path[0]+=rX(r,tX));break;case YX:e||"#"!=r?r!=II&&("'"==r&&a.isSpecial()?a.query+="%27":a.query+="#"==r?"%23":rX(r,tX)):(a.fragment="",u=RX);break;case RX:r!=II&&(a.fragment+=rX(r,eX))}d++}},parseHost:function(t){var e,n,i;if("["==KI(t,0)){if("]"!=KI(t,t.length-1))return"Invalid host";if(e=function(t){var e,n,i,r,c,l,o,a=[0,0,0,0,0,0,0,0],u=0,d=null,s=0,m=function(){return KI(t,s)};if(":"==m()){if(":"!=KI(t,1))return;s+=2,d=++u}for(;m();){if(8==u)return;if(":"!=m()){for(e=n=0;n<4&&LI(DI,m());)e=16*e+CI(m(),16),s++,n++;if("."==m()){if(0==n)return;if(s-=n,u>6)return;for(i=0;m();){if(r=null,i>0){if(!("."==m()&&i<4))return;s++}if(!LI(AI,m()))return;for(;LI(AI,m());){if(c=CI(m(),10),null===r)r=c;else{if(0==r)return;r=10*r+c}if(r>255)return;s++}a[u]=256*a[u]+r,2!=++i&&4!=i||u++}if(4!=i)return;break}if(":"==m()){if(s++,!m())return}else if(m())return;a[u++]=e}else{if(null!==d)return;s++,d=++u}}if(null!==d)for(l=u-d,u=7;0!=u&&l>0;)o=a[u],a[u--]=a[d+l-1],a[d+--l]=o;else if(8!=u)return;return a}(TI(t,1,-1)),!e)return"Invalid host";this.host=e}else if(this.isSpecial()){if(t=function(t){var e,n,i=[],r=Yy(Cy(Ry(t),Iy,"."),".");for(e=0;e<r.length;e++)n=r[e],Sy(i,Gy(yy,n)?"xn--"+Jy(n):n);return vy(i,".")}(t),LI(EI,t))return"Invalid host";if(e=function(t){var e,n,i,r,c,l,o,a=wI(t,".");if(a.length&&""==a[a.length-1]&&a.length--,(e=a.length)>4)return t;for(n=[],i=0;i<e;i++){if(""==(r=a[i]))return t;if(c=10,r.length>1&&"0"==KI(r,0)&&(c=LI(MI,r)?16:8,r=TI(r,8==c?1:2)),""===r)l=0;else{if(!LI(10==c?QI:8==c?PI:DI,r))return t;l=CI(r,c)}NI(n,l)}for(i=0;i<e;i++)if(l=n[i],i==e-1){if(l>=RI(256,5-e))return null}else if(l>255)return null;for(o=HI(n),i=0;i<n.length;i++)o+=n[i]*RI(256,3-i);return o}(t),null===e)return"Invalid host";this.host=e}else{if(LI(OI,t))return"Invalid host";for(e="",n=cr(t),i=0;i<n.length;i++)e+=rX(n[i],tX);this.host=e}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return ot(cX,this.scheme)},shortenPath:function(){var t=this.path,e=t.length;!e||"file"==this.scheme&&1==e&&lX(t[0],!0)||t.length--},serialize:function(){var t=this,e=t.scheme,n=t.username,i=t.password,r=t.host,c=t.port,l=t.path,o=t.query,a=t.fragment,u=e+":";return null!==r?(u+="//",t.includesCredentials()&&(u+=n+(i?":"+i:"")+"@"),u+=$I(r),null!==c&&(u+=":"+c)):"file"==e&&(u+="//"),u+=t.cannotBeABaseURL?l[0]:l.length?"/"+JI(l,"/"):"",null!==o&&(u+="?"+o),null!==a&&(u+="#"+a),u},setHref:function(t){var e=this.parse(t);if(e)throw SI(e);this.searchParams.update()},getOrigin:function(){var t=this.scheme,e=this.port;if("blob"==t)try{return new LX(t.path[0]).origin}catch(t){return"null"}return"file"!=t&&this.isSpecial()?t+"://"+$I(this.host)+(null!==e?":"+e:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(t){this.parse(Oe(t)+":",uX)},getUsername:function(){return this.username},setUsername:function(t){var e=cr(Oe(t));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<e.length;n++)this.username+=rX(e[n],iX)}},getPassword:function(){return this.password},setPassword:function(t){var e=cr(Oe(t));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<e.length;n++)this.password+=rX(e[n],iX)}},getHost:function(){var t=this.host,e=this.port;return null===t?"":null===e?$I(t):$I(t)+":"+e},setHost:function(t){this.cannotBeABaseURL||this.parse(t,XX)},getHostname:function(){var t=this.host;return null===t?"":$I(t)},setHostname:function(t){this.cannotBeABaseURL||this.parse(t,gX)},getPort:function(){var t=this.port;return null===t?"":Oe(t)},setPort:function(t){this.cannotHaveUsernamePasswordPort()||(""==(t=Oe(t))?this.port=null:this.parse(t,GX))},getPathname:function(){var t=this.path;return this.cannotBeABaseURL?t[0]:t.length?"/"+JI(t,"/"):""},setPathname:function(t){this.cannotBeABaseURL||(this.path=[],this.parse(t,vX))},getSearch:function(){var t=this.query;return t?"?"+t:""},setSearch:function(t){""==(t=Oe(t))?this.query=null:("?"==KI(t,0)&&(t=TI(t,1)),this.query="",this.parse(t,YX)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var t=this.fragment;return t?"#"+t:""},setHash:function(t){""!=(t=Oe(t))?("#"==KI(t,0)&&(t=TI(t,1)),this.fragment="",this.parse(t,RX)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var LX=function(t){var e=zc(this,JX),n=arguments.length>1?arguments[1]:void 0,i=GI(e,new KX(t,!1,n));d||(e.href=i.serialize(),e.origin=i.getOrigin(),e.protocol=i.getProtocol(),e.username=i.getUsername(),e.password=i.getPassword(),e.host=i.getHost(),e.hostname=i.getHostname(),e.port=i.getPort(),e.pathname=i.getPathname(),e.search=i.getSearch(),e.searchParams=i.getSearchParams(),e.hash=i.getHash())},JX=LX.prototype,xX=function(t,e){return{get:function(){return fI(this)[t]()},set:e&&function(t){return fI(this)[e](t)},configurable:!0,enumerable:!0}};if(d&&qe(JX,{href:xX("serialize","setHref"),origin:xX("getOrigin"),protocol:xX("getProtocol","setProtocol"),username:xX("getUsername","setUsername"),password:xX("getPassword","setPassword"),host:xX("getHost","setHost"),hostname:xX("getHostname","setHostname"),port:xX("getPort","setPort"),pathname:xX("getPathname","setPathname"),search:xX("getSearch","setSearch"),searchParams:xX("getSearchParams"),hash:xX("getHash","setHash")}),re(JX,"toJSON",(function(){return fI(this).serialize()}),{enumerable:!0}),re(JX,"toString",(function(){return fI(this).serialize()}),{enumerable:!0}),vI){var HX=vI.createObjectURL,NX=vI.revokeObjectURL;HX&&re(LX,"createObjectURL",Vn(HX,vI)),NX&&re(LX,"revokeObjectURL",Vn(NX,vI))}Gn(LX,"URL"),Ne({global:!0,forced:!py,sham:!d},{URL:LX}),Ne({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return m(URL.prototype.toString,this)}});var kX=n((function(t){var e=function(t){var e,n=Object.prototype,i=n.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},c=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,c=Object.create(r.prototype),l=new R(i||[]);return c._invoke=function(t,e,n){var i=m;return function(r,c){if(i===b)throw new Error("Generator is already running");if(i===Z){if("throw"===r)throw c;return L()}for(n.method=r,n.arg=c;;){var l=n.delegate;if(l){var o=S(l,n);if(o){if(o===p)continue;return o}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===m)throw i=Z,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=b;var a=s(t,e,n);if("normal"===a.type){if(i=n.done?Z:h,a.arg===p)continue;return{value:a.arg,done:n.done}}"throw"===a.type&&(i=Z,n.method="throw",n.arg=a.arg)}}}(t,n,l),c}function s(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=d;var m="suspendedStart",h="suspendedYield",b="executing",Z="completed",p={};function y(){}function I(){}function X(){}var g={};u(g,c,(function(){return this}));var G=Object.getPrototypeOf,f=G&&G(G(K([])));f&&f!==n&&i.call(f,c)&&(g=f);var V=X.prototype=y.prototype=Object.create(g);function W(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function v(t,e){function n(r,c,o,a){var u=s(t[r],t,c);if("throw"!==u.type){var d=u.arg,m=d.value;return m&&"object"===l(m)&&i.call(m,"__await")?e.resolve(m.__await).then((function(t){n("next",t,o,a)}),(function(t){n("throw",t,o,a)})):e.resolve(m).then((function(t){d.value=t,o(d)}),(function(t){return n("throw",t,o,a)}))}a(u.arg)}var r;this._invoke=function(t,i){function c(){return new e((function(e,r){n(t,i,e,r)}))}return r=r?r.then(c,c):c()}}function S(t,n){var i=t.iterator[n.method];if(i===e){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=e,S(t,n),"throw"===n.method))return p;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var r=s(i,t.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,p;var c=r.arg;return c?c.done?(n[t.resultName]=c.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,p):c:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function C(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function Y(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function R(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(C,this),this.reset(!0)}function K(t){if(t){var n=t[c];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,l=function n(){for(;++r<t.length;)if(i.call(t,r))return n.value=t[r],n.done=!1,n;return n.value=e,n.done=!0,n};return l.next=l}}return{next:L}}function L(){return{value:e,done:!0}}return I.prototype=X,u(V,"constructor",X),u(X,"constructor",I),I.displayName=u(X,a,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===I||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,X):(t.__proto__=X,u(t,a,"GeneratorFunction")),t.prototype=Object.create(V),t},t.awrap=function(t){return{__await:t}},W(v.prototype),u(v.prototype,o,(function(){return this})),t.AsyncIterator=v,t.async=function(e,n,i,r,c){void 0===c&&(c=Promise);var l=new v(d(e,n,i,r),c);return t.isGeneratorFunction(n)?l:l.next().then((function(t){return t.done?t.value:l.next()}))},W(V),u(V,a,"Generator"),u(V,c,(function(){return this})),u(V,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var i=e.pop();if(i in t)return n.value=i,n.done=!1,n}return n.done=!0,n}},t.values=K,R.prototype={constructor:R,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(Y),!t)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function r(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var c=this.tryEntries.length-1;c>=0;--c){var l=this.tryEntries[c],o=l.completion;if("root"===l.tryLoc)return r("end");if(l.tryLoc<=this.prev){var a=i.call(l,"catchLoc"),u=i.call(l,"finallyLoc");if(a&&u){if(this.prev<l.catchLoc)return r(l.catchLoc,!0);if(this.prev<l.finallyLoc)return r(l.finallyLoc)}else if(a){if(this.prev<l.catchLoc)return r(l.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<l.finallyLoc)return r(l.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var c=r;break}}c&&("break"===t||"continue"===t)&&c.tryLoc<=e&&e<=c.finallyLoc&&(c=null);var l=c?c.completion:{};return l.type=t,l.arg=e,c?(this.method="next",this.next=c.finallyLoc,p):this.complete(l)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),p},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),Y(n),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;Y(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:K(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),p}},t}(t.exports);try{regeneratorRuntime=e}catch(t){"object"===("undefined"==typeof globalThis?"undefined":l(globalThis))?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}})),UX=n((function(t){t.exports=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.exports.default=t.exports,t.exports.__esModule=!0})),wX=e(UX),TX=n((function(t){function e(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}t.exports=function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t},t.exports.default=t.exports,t.exports.__esModule=!0})),FX=e(TX),BX=kX;function zX(t,e,n,i){return new(n||(n=Promise))((function(r,c){function l(t){try{a(i.next(t))}catch(t){c(t)}}function o(t){try{a(i.throw(t))}catch(t){c(t)}}function a(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(l,o)}a((i=i.apply(t,e||[])).next())}))}var jX=n((function(t){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i},t.exports.default=t.exports,t.exports.__esModule=!0})),AX=n((function(t){t.exports=function(t){if(Array.isArray(t))return jX(t)},t.exports.default=t.exports,t.exports.__esModule=!0})),MX=n((function(t){t.exports=function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)},t.exports.default=t.exports,t.exports.__esModule=!0})),PX=n((function(t){t.exports=function(t,e){if(t){if("string"==typeof t)return jX(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?jX(t,e):void 0}},t.exports.default=t.exports,t.exports.__esModule=!0})),QX=n((function(t){t.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0})),DX=e(n((function(t){t.exports=function(t){return AX(t)||MX(t)||PX(t)||QX()},t.exports.default=t.exports,t.exports.__esModule=!0}))),EX=n((function(t){t.exports=function(t){if(Array.isArray(t))return t},t.exports.default=t.exports,t.exports.__esModule=!0})),OX=n((function(t){t.exports=function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,c=[],l=!0,o=!1;try{for(n=n.call(t);!(l=(i=n.next()).done)&&(c.push(i.value),!e||c.length!==e);l=!0);}catch(t){o=!0,r=t}finally{try{l||null==n.return||n.return()}finally{if(o)throw r}}return c}},t.exports.default=t.exports,t.exports.__esModule=!0})),_X=n((function(t){t.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},t.exports.default=t.exports,t.exports.__esModule=!0})),qX=n((function(t){t.exports=function(t,e){return EX(t)||OX(t,e)||PX(t,e)||_X()},t.exports.default=t.exports,t.exports.__esModule=!0})),$X=e(qX),tg=n((function(t){t.exports=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},t.exports.default=t.exports,t.exports.__esModule=!0})),eg=e(tg),ng=n((function(t){function e(t,e,n,i,r,c,l){try{var o=t[c](l),a=o.value}catch(t){return void n(t)}o.done?e(a):Promise.resolve(a).then(i,r)}t.exports=function(t){return function(){var n=this,i=arguments;return new Promise((function(r,c){var l=t.apply(n,i);function o(t){e(l,r,c,o,a,"next",t)}function a(t){e(l,r,c,o,a,"throw",t)}o(void 0)}))}},t.exports.default=t.exports,t.exports.__esModule=!0})),ig=e(ng),rg=n((function(t){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.default=t.exports,t.exports.__esModule=!0})),cg=e(rg),lg=n((function(t){function e(n,i){return t.exports=e=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},t.exports.default=t.exports,t.exports.__esModule=!0,e(n,i)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),og=e(n((function(t){t.exports=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&lg(t,e)},t.exports.default=t.exports,t.exports.__esModule=!0}))),ag=n((function(t){var e=c.default;t.exports=function(t,n){if(n&&("object"===e(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return rg(t)},t.exports.default=t.exports,t.exports.__esModule=!0})),ug=e(ag),dg=n((function(t){function e(n){return t.exports=e=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},t.exports.default=t.exports,t.exports.__esModule=!0,e(n)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),sg=e(dg),mg=n((function(t){t.exports=function(t){return-1!==Function.toString.call(t).indexOf("[native code]")},t.exports.default=t.exports,t.exports.__esModule=!0})),hg=n((function(t){t.exports=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}},t.exports.default=t.exports,t.exports.__esModule=!0})),bg=n((function(t){function e(n,i,r){return hg()?(t.exports=e=Reflect.construct,t.exports.default=t.exports,t.exports.__esModule=!0):(t.exports=e=function(t,e,n){var i=[null];i.push.apply(i,e);var r=new(Function.bind.apply(t,i));return n&&lg(r,n.prototype),r},t.exports.default=t.exports,t.exports.__esModule=!0),e.apply(null,arguments)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),Zg=n((function(t){function e(n){var i="function"==typeof Map?new Map:void 0;return t.exports=e=function(t){if(null===t||!mg(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==i){if(i.has(t))return i.get(t);i.set(t,e)}function e(){return bg(t,arguments,dg(this).constructor)}return e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),lg(e,t)},t.exports.default=t.exports,t.exports.__esModule=!0,e(n)}t.exports=e,t.exports.default=t.exports,t.exports.__esModule=!0})),pg=e(Zg),yg="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},Ig=[],Xg=[],gg="undefined"!=typeof Uint8Array?Uint8Array:Array,Gg=!1;function fg(){Gg=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,n=t.length;e<n;++e)Ig[e]=t[e],Xg[t.charCodeAt(e)]=e;Xg["-".charCodeAt(0)]=62,Xg["_".charCodeAt(0)]=63}function Vg(t,e,n){for(var i,r,c=[],l=e;l<n;l+=3)i=(t[l]<<16)+(t[l+1]<<8)+t[l+2],c.push(Ig[(r=i)>>18&63]+Ig[r>>12&63]+Ig[r>>6&63]+Ig[63&r]);return c.join("")}function Wg(t){var e;Gg||fg();for(var n=t.length,i=n%3,r="",c=[],l=16383,o=0,a=n-i;o<a;o+=l)c.push(Vg(t,o,o+l>a?a:o+l));return 1===i?(e=t[n-1],r+=Ig[e>>2],r+=Ig[e<<4&63],r+="=="):2===i&&(e=(t[n-2]<<8)+t[n-1],r+=Ig[e>>10],r+=Ig[e>>4&63],r+=Ig[e<<2&63],r+="="),c.push(r),c.join("")}function vg(t,e,n,i,r){var c,l,o=8*r-i-1,a=(1<<o)-1,u=a>>1,d=-7,s=n?r-1:0,m=n?-1:1,h=t[e+s];for(s+=m,c=h&(1<<-d)-1,h>>=-d,d+=o;d>0;c=256*c+t[e+s],s+=m,d-=8);for(l=c&(1<<-d)-1,c>>=-d,d+=i;d>0;l=256*l+t[e+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===a)return l?NaN:1/0*(h?-1:1);l+=Math.pow(2,i),c-=u}return(h?-1:1)*l*Math.pow(2,c-i)}function Sg(t,e,n,i,r,c){var l,o,a,u=8*c-r-1,d=(1<<u)-1,s=d>>1,m=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,h=i?0:c-1,b=i?1:-1,Z=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,l=d):(l=Math.floor(Math.log(e)/Math.LN2),e*(a=Math.pow(2,-l))<1&&(l--,a*=2),(e+=l+s>=1?m/a:m*Math.pow(2,1-s))*a>=2&&(l++,a/=2),l+s>=d?(o=0,l=d):l+s>=1?(o=(e*a-1)*Math.pow(2,r),l+=s):(o=e*Math.pow(2,s-1)*Math.pow(2,r),l=0));r>=8;t[n+h]=255&o,h+=b,o/=256,r-=8);for(l=l<<r|o,u+=r;u>0;t[n+h]=255&l,h+=b,l/=256,u-=8);t[n+h-b]|=128*Z}var Cg={}.toString,Yg=Array.isArray||function(t){return"[object Array]"==Cg.call(t)};function Rg(){return Lg.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function Kg(t,e){if(Rg()<e)throw new RangeError("Invalid typed array length");return Lg.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=Lg.prototype:(null===t&&(t=new Lg(e)),t.length=e),t}function Lg(t,e,n){if(!(Lg.TYPED_ARRAY_SUPPORT||this instanceof Lg))return new Lg(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return Hg(this,t)}return Jg(this,t,e,n)}function Jg(t,e,n,i){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,i){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(i||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===i?new Uint8Array(e):void 0===i?new Uint8Array(e,n):new Uint8Array(e,n,i);Lg.TYPED_ARRAY_SUPPORT?(t=e).__proto__=Lg.prototype:t=Ng(t,e);return t}(t,e,n,i):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!Lg.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var i=0|wg(e,n),r=(t=Kg(t,i)).write(e,n);r!==i&&(t=t.slice(0,r));return t}(t,e,n):function(t,e){if(Ug(e)){var n=0|kg(e.length);return 0===(t=Kg(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(i=e.length)!=i?Kg(t,0):Ng(t,e);if("Buffer"===e.type&&Yg(e.data))return Ng(t,e.data)}var i;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function xg(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function Hg(t,e){if(xg(e),t=Kg(t,e<0?0:0|kg(e)),!Lg.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function Ng(t,e){var n=e.length<0?0:0|kg(e.length);t=Kg(t,n);for(var i=0;i<n;i+=1)t[i]=255&e[i];return t}function kg(t){if(t>=Rg())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Rg().toString(16)+" bytes");return 0|t}function Ug(t){return!(null==t||!t._isBuffer)}function wg(t,e){if(Ug(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return dG(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return sG(t).length;default:if(i)return dG(t).length;e=(""+e).toLowerCase(),i=!0}}function Tg(t,e,n){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return $g(this,e,n);case"utf8":case"utf-8":return Og(this,e,n);case"ascii":return _g(this,e,n);case"latin1":case"binary":return qg(this,e,n);case"base64":return Eg(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return tG(this,e,n);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function Fg(t,e,n){var i=t[e];t[e]=t[n],t[n]=i}function Bg(t,e,n,i,r){if(0===t.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(r)return-1;n=t.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof e&&(e=Lg.from(e,i)),Ug(e))return 0===e.length?-1:zg(t,e,n,i,r);if("number"==typeof e)return e&=255,Lg.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):zg(t,[e],n,i,r);throw new TypeError("val must be string, number or Buffer")}function zg(t,e,n,i,r){var c,l=1,o=t.length,a=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;l=2,o/=2,a/=2,n/=2}function u(t,e){return 1===l?t[e]:t.readUInt16BE(e*l)}if(r){var d=-1;for(c=n;c<o;c++)if(u(t,c)===u(e,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===a)return d*l}else-1!==d&&(c-=c-d),d=-1}else for(n+a>o&&(n=o-a),c=n;c>=0;c--){for(var s=!0,m=0;m<a;m++)if(u(t,c+m)!==u(e,m)){s=!1;break}if(s)return c}return-1}function jg(t,e,n,i){n=Number(n)||0;var r=t.length-n;i?(i=Number(i))>r&&(i=r):i=r;var c=e.length;if(c%2!=0)throw new TypeError("Invalid hex string");i>c/2&&(i=c/2);for(var l=0;l<i;++l){var o=parseInt(e.substr(2*l,2),16);if(isNaN(o))return l;t[n+l]=o}return l}function Ag(t,e,n,i){return mG(dG(e,t.length-n),t,n,i)}function Mg(t,e,n,i){return mG(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,i)}function Pg(t,e,n,i){return Mg(t,e,n,i)}function Qg(t,e,n,i){return mG(sG(e),t,n,i)}function Dg(t,e,n,i){return mG(function(t,e){for(var n,i,r,c=[],l=0;l<t.length&&!((e-=2)<0);++l)i=(n=t.charCodeAt(l))>>8,r=n%256,c.push(r),c.push(i);return c}(e,t.length-n),t,n,i)}function Eg(t,e,n){return 0===e&&n===t.length?Wg(t):Wg(t.slice(e,n))}function Og(t,e,n){n=Math.min(t.length,n);for(var i=[],r=e;r<n;){var c,l,o,a,u=t[r],d=null,s=u>239?4:u>223?3:u>191?2:1;if(r+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=t[r+1]))&&(a=(31&u)<<6|63&c)>127&&(d=a);break;case 3:c=t[r+1],l=t[r+2],128==(192&c)&&128==(192&l)&&(a=(15&u)<<12|(63&c)<<6|63&l)>2047&&(a<55296||a>57343)&&(d=a);break;case 4:c=t[r+1],l=t[r+2],o=t[r+3],128==(192&c)&&128==(192&l)&&128==(192&o)&&(a=(15&u)<<18|(63&c)<<12|(63&l)<<6|63&o)>65535&&a<1114112&&(d=a)}null===d?(d=65533,s=1):d>65535&&(d-=65536,i.push(d>>>10&1023|55296),d=56320|1023&d),i.push(d),r+=s}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var n="",i=0;for(;i<e;)n+=String.fromCharCode.apply(String,t.slice(i,i+=4096));return n}(i)}Lg.TYPED_ARRAY_SUPPORT=void 0===yg.TYPED_ARRAY_SUPPORT||yg.TYPED_ARRAY_SUPPORT,Lg.poolSize=8192,Lg._augment=function(t){return t.__proto__=Lg.prototype,t},Lg.from=function(t,e,n){return Jg(null,t,e,n)},Lg.TYPED_ARRAY_SUPPORT&&(Lg.prototype.__proto__=Uint8Array.prototype,Lg.__proto__=Uint8Array),Lg.alloc=function(t,e,n){return function(t,e,n,i){return xg(e),e<=0?Kg(t,e):void 0!==n?"string"==typeof i?Kg(t,e).fill(n,i):Kg(t,e).fill(n):Kg(t,e)}(null,t,e,n)},Lg.allocUnsafe=function(t){return Hg(null,t)},Lg.allocUnsafeSlow=function(t){return Hg(null,t)},Lg.isBuffer=function(t){return null!=t&&(!!t._isBuffer||hG(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&hG(t.slice(0,0))}(t))},Lg.compare=function(t,e){if(!Ug(t)||!Ug(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,i=e.length,r=0,c=Math.min(n,i);r<c;++r)if(t[r]!==e[r]){n=t[r],i=e[r];break}return n<i?-1:i<n?1:0},Lg.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Lg.concat=function(t,e){if(!Yg(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return Lg.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var i=Lg.allocUnsafe(e),r=0;for(n=0;n<t.length;++n){var c=t[n];if(!Ug(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(i,r),r+=c.length}return i},Lg.byteLength=wg,Lg.prototype._isBuffer=!0,Lg.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)Fg(this,e,e+1);return this},Lg.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)Fg(this,e,e+3),Fg(this,e+1,e+2);return this},Lg.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)Fg(this,e,e+7),Fg(this,e+1,e+6),Fg(this,e+2,e+5),Fg(this,e+3,e+4);return this},Lg.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?Og(this,0,t):Tg.apply(this,arguments)},Lg.prototype.equals=function(t){if(!Ug(t))throw new TypeError("Argument must be a Buffer");return this===t||0===Lg.compare(this,t)},Lg.prototype.inspect=function(){var t="";return this.length>0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),"<Buffer "+t+">"},Lg.prototype.compare=function(t,e,n,i,r){if(!Ug(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),e<0||n>t.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&e>=n)return 0;if(i>=r)return-1;if(e>=n)return 1;if(this===t)return 0;for(var c=(r>>>=0)-(i>>>=0),l=(n>>>=0)-(e>>>=0),o=Math.min(c,l),a=this.slice(i,r),u=t.slice(e,n),d=0;d<o;++d)if(a[d]!==u[d]){c=a[d],l=u[d];break}return c<l?-1:l<c?1:0},Lg.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},Lg.prototype.indexOf=function(t,e,n){return Bg(this,t,e,n,!0)},Lg.prototype.lastIndexOf=function(t,e,n){return Bg(this,t,e,n,!1)},Lg.prototype.write=function(t,e,n,i){if(void 0===e)i="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)i=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===i&&(i="utf8")):(i=n,n=void 0)}var r=this.length-e;if((void 0===n||n>r)&&(n=r),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var c=!1;;)switch(i){case"hex":return jg(this,t,e,n);case"utf8":case"utf-8":return Ag(this,t,e,n);case"ascii":return Mg(this,t,e,n);case"latin1":case"binary":return Pg(this,t,e,n);case"base64":return Qg(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Dg(this,t,e,n);default:if(c)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),c=!0}},Lg.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function _g(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(127&t[r]);return i}function qg(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(t[r]);return i}function $g(t,e,n){var i=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>i)&&(n=i);for(var r="",c=e;c<n;++c)r+=uG(t[c]);return r}function tG(t,e,n){for(var i=t.slice(e,n),r="",c=0;c<i.length;c+=2)r+=String.fromCharCode(i[c]+256*i[c+1]);return r}function eG(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function nG(t,e,n,i,r,c){if(!Ug(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>r||e<c)throw new RangeError('"value" argument is out of bounds');if(n+i>t.length)throw new RangeError("Index out of range")}function iG(t,e,n,i){e<0&&(e=65535+e+1);for(var r=0,c=Math.min(t.length-n,2);r<c;++r)t[n+r]=(e&255<<8*(i?r:1-r))>>>8*(i?r:1-r)}function rG(t,e,n,i){e<0&&(e=4294967295+e+1);for(var r=0,c=Math.min(t.length-n,4);r<c;++r)t[n+r]=e>>>8*(i?r:3-r)&255}function cG(t,e,n,i,r,c){if(n+i>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function lG(t,e,n,i,r){return r||cG(t,0,n,4),Sg(t,e,n,i,23,4),n+4}function oG(t,e,n,i,r){return r||cG(t,0,n,8),Sg(t,e,n,i,52,8),n+8}Lg.prototype.slice=function(t,e){var n,i=this.length;if((t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e<t&&(e=t),Lg.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=Lg.prototype;else{var r=e-t;n=new Lg(r,void 0);for(var c=0;c<r;++c)n[c]=this[c+t]}return n},Lg.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||eG(t,e,this.length);for(var i=this[t],r=1,c=0;++c<e&&(r*=256);)i+=this[t+c]*r;return i},Lg.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||eG(t,e,this.length);for(var i=this[t+--e],r=1;e>0&&(r*=256);)i+=this[t+--e]*r;return i},Lg.prototype.readUInt8=function(t,e){return e||eG(t,1,this.length),this[t]},Lg.prototype.readUInt16LE=function(t,e){return e||eG(t,2,this.length),this[t]|this[t+1]<<8},Lg.prototype.readUInt16BE=function(t,e){return e||eG(t,2,this.length),this[t]<<8|this[t+1]},Lg.prototype.readUInt32LE=function(t,e){return e||eG(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},Lg.prototype.readUInt32BE=function(t,e){return e||eG(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},Lg.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||eG(t,e,this.length);for(var i=this[t],r=1,c=0;++c<e&&(r*=256);)i+=this[t+c]*r;return i>=(r*=128)&&(i-=Math.pow(2,8*e)),i},Lg.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||eG(t,e,this.length);for(var i=e,r=1,c=this[t+--i];i>0&&(r*=256);)c+=this[t+--i]*r;return c>=(r*=128)&&(c-=Math.pow(2,8*e)),c},Lg.prototype.readInt8=function(t,e){return e||eG(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},Lg.prototype.readInt16LE=function(t,e){e||eG(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},Lg.prototype.readInt16BE=function(t,e){e||eG(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},Lg.prototype.readInt32LE=function(t,e){return e||eG(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},Lg.prototype.readInt32BE=function(t,e){return e||eG(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},Lg.prototype.readFloatLE=function(t,e){return e||eG(t,4,this.length),vg(this,t,!0,23,4)},Lg.prototype.readFloatBE=function(t,e){return e||eG(t,4,this.length),vg(this,t,!1,23,4)},Lg.prototype.readDoubleLE=function(t,e){return e||eG(t,8,this.length),vg(this,t,!0,52,8)},Lg.prototype.readDoubleBE=function(t,e){return e||eG(t,8,this.length),vg(this,t,!1,52,8)},Lg.prototype.writeUIntLE=function(t,e,n,i){(t=+t,e|=0,n|=0,i)||nG(this,t,e,n,Math.pow(2,8*n)-1,0);var r=1,c=0;for(this[e]=255&t;++c<n&&(r*=256);)this[e+c]=t/r&255;return e+n},Lg.prototype.writeUIntBE=function(t,e,n,i){(t=+t,e|=0,n|=0,i)||nG(this,t,e,n,Math.pow(2,8*n)-1,0);var r=n-1,c=1;for(this[e+r]=255&t;--r>=0&&(c*=256);)this[e+r]=t/c&255;return e+n},Lg.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||nG(this,t,e,1,255,0),Lg.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},Lg.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||nG(this,t,e,2,65535,0),Lg.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):iG(this,t,e,!0),e+2},Lg.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||nG(this,t,e,2,65535,0),Lg.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):iG(this,t,e,!1),e+2},Lg.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||nG(this,t,e,4,4294967295,0),Lg.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):rG(this,t,e,!0),e+4},Lg.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||nG(this,t,e,4,4294967295,0),Lg.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):rG(this,t,e,!1),e+4},Lg.prototype.writeIntLE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);nG(this,t,e,n,r-1,-r)}var c=0,l=1,o=0;for(this[e]=255&t;++c<n&&(l*=256);)t<0&&0===o&&0!==this[e+c-1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},Lg.prototype.writeIntBE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);nG(this,t,e,n,r-1,-r)}var c=n-1,l=1,o=0;for(this[e+c]=255&t;--c>=0&&(l*=256);)t<0&&0===o&&0!==this[e+c+1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},Lg.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||nG(this,t,e,1,127,-128),Lg.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},Lg.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||nG(this,t,e,2,32767,-32768),Lg.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):iG(this,t,e,!0),e+2},Lg.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||nG(this,t,e,2,32767,-32768),Lg.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):iG(this,t,e,!1),e+2},Lg.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||nG(this,t,e,4,2147483647,-2147483648),Lg.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):rG(this,t,e,!0),e+4},Lg.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||nG(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),Lg.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):rG(this,t,e,!1),e+4},Lg.prototype.writeFloatLE=function(t,e,n){return lG(this,t,e,!0,n)},Lg.prototype.writeFloatBE=function(t,e,n){return lG(this,t,e,!1,n)},Lg.prototype.writeDoubleLE=function(t,e,n){return oG(this,t,e,!0,n)},Lg.prototype.writeDoubleBE=function(t,e,n){return oG(this,t,e,!1,n)},Lg.prototype.copy=function(t,e,n,i){if(n||(n=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e<i-n&&(i=t.length-e+n);var r,c=i-n;if(this===t&&n<e&&e<i)for(r=c-1;r>=0;--r)t[r+e]=this[r+n];else if(c<1e3||!Lg.TYPED_ARRAY_SUPPORT)for(r=0;r<c;++r)t[r+e]=this[r+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+c),e);return c},Lg.prototype.fill=function(t,e,n,i){if("string"==typeof t){if("string"==typeof e?(i=e,e=0,n=this.length):"string"==typeof n&&(i=n,n=this.length),1===t.length){var r=t.charCodeAt(0);r<256&&(t=r)}if(void 0!==i&&"string"!=typeof i)throw new TypeError("encoding must be a string");if("string"==typeof i&&!Lg.isEncoding(i))throw new TypeError("Unknown encoding: "+i)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var c;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(c=e;c<n;++c)this[c]=t;else{var l=Ug(t)?t:dG(new Lg(t,i).toString()),o=l.length;for(c=0;c<n-e;++c)this[c+e]=l[c%o]}return this};var aG=/[^+\/0-9A-Za-z-_]/g;function uG(t){return t<16?"0"+t.toString(16):t.toString(16)}function dG(t,e){var n;e=e||1/0;for(var i=t.length,r=null,c=[],l=0;l<i;++l){if((n=t.charCodeAt(l))>55295&&n<57344){if(!r){if(n>56319){(e-=3)>-1&&c.push(239,191,189);continue}if(l+1===i){(e-=3)>-1&&c.push(239,191,189);continue}r=n;continue}if(n<56320){(e-=3)>-1&&c.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(e-=3)>-1&&c.push(239,191,189);if(r=null,n<128){if((e-=1)<0)break;c.push(n)}else if(n<2048){if((e-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function sG(t){return function(t){var e,n,i,r,c,l;Gg||fg();var o=t.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===t[o-2]?2:"="===t[o-1]?1:0,l=new gg(3*o/4-c),i=c>0?o-4:o;var a=0;for(e=0,n=0;e<i;e+=4,n+=3)r=Xg[t.charCodeAt(e)]<<18|Xg[t.charCodeAt(e+1)]<<12|Xg[t.charCodeAt(e+2)]<<6|Xg[t.charCodeAt(e+3)],l[a++]=r>>16&255,l[a++]=r>>8&255,l[a++]=255&r;return 2===c?(r=Xg[t.charCodeAt(e)]<<2|Xg[t.charCodeAt(e+1)]>>4,l[a++]=255&r):1===c&&(r=Xg[t.charCodeAt(e)]<<10|Xg[t.charCodeAt(e+1)]<<4|Xg[t.charCodeAt(e+2)]>>2,l[a++]=r>>8&255,l[a++]=255&r),l}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(aG,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function mG(t,e,n,i){for(var r=0;r<i&&!(r+n>=e.length||r>=t.length);++r)e[r+n]=t[r];return r}function hG(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var bG=function(t,e){return function(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];return t.apply(e,n)}},ZG=Object.prototype.toString;function pG(t){return"[object Array]"===ZG.call(t)}function yG(t){return void 0===t}function IG(t){return null!==t&&"object"===l(t)}function XG(t){if("[object Object]"!==ZG.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function gG(t){return"[object Function]"===ZG.call(t)}function GG(t,e){if(null!=t)if("object"!==l(t)&&(t=[t]),pG(t))for(var n=0,i=t.length;n<i;n++)e.call(null,t[n],n,t);else for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.call(null,t[r],r,t)}var fG={isArray:pG,isArrayBuffer:function(t){return"[object ArrayBuffer]"===ZG.call(t)},isBuffer:function(t){return null!==t&&!yG(t)&&null!==t.constructor&&!yG(t.constructor)&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&t.buffer instanceof ArrayBuffer},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:IG,isPlainObject:XG,isUndefined:yG,isDate:function(t){return"[object Date]"===ZG.call(t)},isFile:function(t){return"[object File]"===ZG.call(t)},isBlob:function(t){return"[object Blob]"===ZG.call(t)},isFunction:gG,isStream:function(t){return IG(t)&&gG(t.pipe)},isURLSearchParams:function(t){return"undefined"!=typeof URLSearchParams&&t instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:GG,merge:function t(){var e={};function n(n,i){XG(e[i])&&XG(n)?e[i]=t(e[i],n):XG(n)?e[i]=t({},n):pG(n)?e[i]=n.slice():e[i]=n}for(var i=0,r=arguments.length;i<r;i++)GG(arguments[i],n);return e},extend:function(t,e,n){return GG(e,(function(e,i){t[i]=n&&"function"==typeof e?bG(e,n):e})),t},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},stripBOM:function(t){return 65279===t.charCodeAt(0)&&(t=t.slice(1)),t}};function VG(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var WG=function(t,e,n){if(!e)return t;var i;if(n)i=n(e);else if(fG.isURLSearchParams(e))i=e.toString();else{var r=[];fG.forEach(e,(function(t,e){null!=t&&(fG.isArray(t)?e+="[]":t=[t],fG.forEach(t,(function(t){fG.isDate(t)?t=t.toISOString():fG.isObject(t)&&(t=JSON.stringify(t)),r.push(VG(e)+"="+VG(t))})))})),i=r.join("&")}if(i){var c=t.indexOf("#");-1!==c&&(t=t.slice(0,c)),t+=(-1===t.indexOf("?")?"?":"&")+i}return t};function vG(){this.handlers=[]}vG.prototype.use=function(t,e,n){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},vG.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},vG.prototype.forEach=function(t){fG.forEach(this.handlers,(function(e){null!==e&&t(e)}))};var SG=vG;function CG(){throw new Error("setTimeout has not been defined")}function YG(){throw new Error("clearTimeout has not been defined")}var RG=CG,KG=YG;function LG(t){if(RG===setTimeout)return setTimeout(t,0);if((RG===CG||!RG)&&setTimeout)return RG=setTimeout,setTimeout(t,0);try{return RG(t,0)}catch(e){try{return RG.call(null,t,0)}catch(e){return RG.call(this,t,0)}}}"function"==typeof yg.setTimeout&&(RG=setTimeout),"function"==typeof yg.clearTimeout&&(KG=clearTimeout);var JG,xG=[],HG=!1,NG=-1;function kG(){HG&&JG&&(HG=!1,JG.length?xG=JG.concat(xG):NG=-1,xG.length&&UG())}function UG(){if(!HG){var t=LG(kG);HG=!0;for(var e=xG.length;e;){for(JG=xG,xG=[];++NG<e;)JG&&JG[NG].run();NG=-1,e=xG.length}JG=null,HG=!1,function(t){if(KG===clearTimeout)return clearTimeout(t);if((KG===YG||!KG)&&clearTimeout)return KG=clearTimeout,clearTimeout(t);try{KG(t)}catch(e){try{return KG.call(null,t)}catch(e){return KG.call(this,t)}}}(t)}}function wG(t,e){this.fun=t,this.array=e}wG.prototype.run=function(){this.fun.apply(null,this.array)};function TG(){}var FG=TG,BG=TG,zG=TG,jG=TG,AG=TG,MG=TG,PG=TG;var QG=yg.performance||{},DG=QG.now||QG.mozNow||QG.msNow||QG.oNow||QG.webkitNow||function(){return(new Date).getTime()};var EG=new Date;var OG={nextTick:function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];xG.push(new wG(t,e)),1!==xG.length||HG||LG(UG)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:FG,addListener:BG,once:zG,off:jG,removeListener:AG,removeAllListeners:MG,emit:PG,binding:function(t){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(t){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(t){var e=.001*DG.call(QG),n=Math.floor(e),i=Math.floor(e%1*1e9);return t&&(n-=t[0],(i-=t[1])<0&&(n--,i+=1e9)),[n,i]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-EG)/1e3}},_G=OG,qG=function(t,e){fG.forEach(t,(function(n,i){i!==e&&i.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[i])}))},$G=function(t,e,n,i,r){return t.config=e,n&&(t.code=n),t.request=i,t.response=r,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},t},tf=function(t,e,n,i,r){var c=new Error(t);return $G(c,e,n,i,r)},ef=fG.isStandardBrowserEnv()?{write:function(t,e,n,i,r,c){var l=[];l.push(t+"="+encodeURIComponent(e)),fG.isNumber(n)&&l.push("expires="+new Date(n).toGMTString()),fG.isString(i)&&l.push("path="+i),fG.isString(r)&&l.push("domain="+r),!0===c&&l.push("secure"),document.cookie=l.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},nf=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],rf=fG.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(t){var i=t;return e&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=i(window.location.href),function(e){var n=fG.isString(e)?i(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0},cf=function(t){return new Promise((function(e,n){var i=t.data,r=t.headers,c=t.responseType;fG.isFormData(i)&&delete r["Content-Type"];var l=new XMLHttpRequest;if(t.auth){var o=t.auth.username||"",a=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";r.Authorization="Basic "+btoa(o+":"+a)}var u,d,s=(u=t.baseURL,d=t.url,u&&!/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(d)?function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}(u,d):d);function m(){if(l){var i="getAllResponseHeaders"in l?function(t){var e,n,i,r={};return t?(fG.forEach(t.split("\n"),(function(t){if(i=t.indexOf(":"),e=fG.trim(t.substr(0,i)).toLowerCase(),n=fG.trim(t.substr(i+1)),e){if(r[e]&&nf.indexOf(e)>=0)return;r[e]="set-cookie"===e?(r[e]?r[e]:[]).concat([n]):r[e]?r[e]+", "+n:n}})),r):r}(l.getAllResponseHeaders()):null,r={data:c&&"text"!==c&&"json"!==c?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:i,config:t,request:l};!function(t,e,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?e(tf("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)}(e,n,r),l=null}}if(l.open(t.method.toUpperCase(),WG(s,t.params,t.paramsSerializer),!0),l.timeout=t.timeout,"onloadend"in l?l.onloadend=m:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(m)},l.onabort=function(){l&&(n(tf("Request aborted",t,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(tf("Network Error",t,null,l)),l=null},l.ontimeout=function(){var e="timeout of "+t.timeout+"ms exceeded";t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(tf(e,t,t.transitional&&t.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},fG.isStandardBrowserEnv()){var h=(t.withCredentials||rf(s))&&t.xsrfCookieName?ef.read(t.xsrfCookieName):void 0;h&&(r[t.xsrfHeaderName]=h)}"setRequestHeader"in l&&fG.forEach(r,(function(t,e){void 0===i&&"content-type"===e.toLowerCase()?delete r[e]:l.setRequestHeader(e,t)})),fG.isUndefined(t.withCredentials)||(l.withCredentials=!!t.withCredentials),c&&"json"!==c&&(l.responseType=t.responseType),"function"==typeof t.onDownloadProgress&&l.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",t.onUploadProgress),t.cancelToken&&t.cancelToken.promise.then((function(t){l&&(l.abort(),n(t),l=null)})),i||(i=null),l.send(i)}))},lf={"Content-Type":"application/x-www-form-urlencoded"};function of(t,e){!fG.isUndefined(t)&&fG.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var af,uf={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==_G&&"[object process]"===Object.prototype.toString.call(_G))&&(af=cf),af),transformRequest:[function(t,e){return qG(e,"Accept"),qG(e,"Content-Type"),fG.isFormData(t)||fG.isArrayBuffer(t)||fG.isBuffer(t)||fG.isStream(t)||fG.isFile(t)||fG.isBlob(t)?t:fG.isArrayBufferView(t)?t.buffer:fG.isURLSearchParams(t)?(of(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):fG.isObject(t)||e&&"application/json"===e["Content-Type"]?(of(e,"application/json"),function(t,e,n){if(fG.isString(t))try{return(e||JSON.parse)(t),fG.trim(t)}catch(t){if("SyntaxError"!==t.name)throw t}return(n||JSON.stringify)(t)}(t)):t}],transformResponse:[function(t){var e=this.transitional,n=e&&e.silentJSONParsing,i=e&&e.forcedJSONParsing,r=!n&&"json"===this.responseType;if(r||i&&fG.isString(t)&&t.length)try{return JSON.parse(t)}catch(t){if(r){if("SyntaxError"===t.name)throw $G(t,this,"E_JSON_PARSE");throw t}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(t){return t>=200&&t<300}};uf.headers={common:{Accept:"application/json, text/plain, */*"}},fG.forEach(["delete","get","head"],(function(t){uf.headers[t]={}})),fG.forEach(["post","put","patch"],(function(t){uf.headers[t]=fG.merge(lf)}));var df=uf,sf=function(t,e,n){var i=this||df;return fG.forEach(n,(function(n){t=n.call(i,t,e)})),t},mf=function(t){return!(!t||!t.__CANCEL__)};function hf(t){t.cancelToken&&t.cancelToken.throwIfRequested()}var bf=function(t){return hf(t),t.headers=t.headers||{},t.data=sf.call(t,t.data,t.headers,t.transformRequest),t.headers=fG.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),fG.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||df.adapter)(t).then((function(e){return hf(t),e.data=sf.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return mf(e)||(hf(t),e&&e.response&&(e.response.data=sf.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))},Zf=function(t,e){e=e||{};var n={},i=["url","method","data"],r=["headers","auth","proxy","params"],c=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],l=["validateStatus"];function o(t,e){return fG.isPlainObject(t)&&fG.isPlainObject(e)?fG.merge(t,e):fG.isPlainObject(e)?fG.merge({},e):fG.isArray(e)?e.slice():e}function a(i){fG.isUndefined(e[i])?fG.isUndefined(t[i])||(n[i]=o(void 0,t[i])):n[i]=o(t[i],e[i])}fG.forEach(i,(function(t){fG.isUndefined(e[t])||(n[t]=o(void 0,e[t]))})),fG.forEach(r,a),fG.forEach(c,(function(i){fG.isUndefined(e[i])?fG.isUndefined(t[i])||(n[i]=o(void 0,t[i])):n[i]=o(void 0,e[i])})),fG.forEach(l,(function(i){i in e?n[i]=o(t[i],e[i]):i in t&&(n[i]=o(void 0,t[i]))}));var u=i.concat(r).concat(c).concat(l),d=Object.keys(t).concat(Object.keys(e)).filter((function(t){return-1===u.indexOf(t)}));return fG.forEach(d,a),n},pf={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},yf={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){yf[t]=function(n){return l(n)===t||"a"+(e<1?"n ":" ")+t}}));var If={},Xf=pf.version.split(".");function gf(t,e){for(var n=e?e.split("."):Xf,i=t.split("."),r=0;r<3;r++){if(n[r]>i[r])return!0;if(n[r]<i[r])return!1}return!1}yf.transitional=function(t,e,n){var i=e&&gf(e);function r(t,e){return"[Axios v"+pf.version+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,c,l){if(!1===t)throw new Error(r(c," has been removed in "+e));return i&&!If[c]&&(If[c]=!0,console.warn(r(c," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,c,l)}};var Gf={isOlderVersion:gf,assertOptions:function(t,e,n){if("object"!==l(t))throw new TypeError("options must be an object");for(var i=Object.keys(t),r=i.length;r-- >0;){var c=i[r],o=e[c];if(o){var a=t[c],u=void 0===a||o(a,c,t);if(!0!==u)throw new TypeError("option "+c+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+c)}},validators:yf},ff=Gf.validators;function Vf(t){this.defaults=t,this.interceptors={request:new SG,response:new SG}}Vf.prototype.request=function(t){"string"==typeof t?(t=arguments[1]||{}).url=arguments[0]:t=t||{},(t=Zf(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var e=t.transitional;void 0!==e&&Gf.assertOptions(e,{silentJSONParsing:ff.transitional(ff.boolean,"1.0.0"),forcedJSONParsing:ff.transitional(ff.boolean,"1.0.0"),clarifyTimeoutError:ff.transitional(ff.boolean,"1.0.0")},!1);var n=[],i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,n.unshift(e.fulfilled,e.rejected))}));var r,c=[];if(this.interceptors.response.forEach((function(t){c.push(t.fulfilled,t.rejected)})),!i){var l=[bf,void 0];for(Array.prototype.unshift.apply(l,n),l=l.concat(c),r=Promise.resolve(t);l.length;)r=r.then(l.shift(),l.shift());return r}for(var o=t;n.length;){var a=n.shift(),u=n.shift();try{o=a(o)}catch(t){u(t);break}}try{r=bf(o)}catch(t){return Promise.reject(t)}for(;c.length;)r=r.then(c.shift(),c.shift());return r},Vf.prototype.getUri=function(t){return t=Zf(this.defaults,t),WG(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},fG.forEach(["delete","get","head","options"],(function(t){Vf.prototype[t]=function(e,n){return this.request(Zf(n||{},{method:t,url:e,data:(n||{}).data}))}})),fG.forEach(["post","put","patch"],(function(t){Vf.prototype[t]=function(e,n,i){return this.request(Zf(i||{},{method:t,url:e,data:n}))}}));var Wf=Vf;function vf(t){this.message=t}vf.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},vf.prototype.__CANCEL__=!0;var Sf=vf;function Cf(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new Sf(t),e(n.reason))}))}Cf.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},Cf.source=function(){var t,e=new Cf((function(e){t=e}));return{token:e,cancel:t}};var Yf=Cf;function Rf(t){var e=new Wf(t),n=bG(Wf.prototype.request,e);return fG.extend(n,Wf.prototype,e),fG.extend(n,e),n}var Kf=Rf(df);Kf.Axios=Wf,Kf.create=function(t){return Rf(Zf(Kf.defaults,t))},Kf.Cancel=Sf,Kf.CancelToken=Yf,Kf.isCancel=mf,Kf.all=function(t){return Promise.all(t)},Kf.spread=function(t){return function(e){return t.apply(null,e)}},Kf.isAxiosError=function(t){return"object"===l(t)&&!0===t.isAxiosError};var Lf=Kf,Jf=Kf;Lf.default=Jf;var xf,Hf,Nf=Lf;function kf(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Uf(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Uf(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,l=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return l=t.done,t},e:function(t){o=!0,c=t},f:function(){try{l||null==n.return||n.return()}finally{if(o)throw c}}}}function Uf(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function wf(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function Tf(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?wf(Object(n),!0).forEach((function(e){eg(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):wf(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function Ff(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}
2
2
  /*! *****************************************************************************
3
3
  Copyright (c) Microsoft Corporation.
4
4
 
@@ -12,7 +12,7 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */();return function(){var n,r=sG(t);if(e){var i=sG(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return uG(this,n)}}function zf(t,e,n,r){return new(n||(n=Promise))((function(i,c){function l(t){try{a(r.next(t))}catch(t){c(t)}}function o(t){try{a(r.throw(t))}catch(t){c(t)}}function a(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(l,o)}a((r=r.apply(t,e||[])).next())}))}(Hf=xf||(xf={})).formPost="form_post",Hf.query="query";var Bf,jf="{{token}}",Mf="{{username}}",Qf="{{scope}}",Pf="{{clientID}}",Af="{{clientSecret}}";!function(t){t.ConfigData="config_data",t.OIDCProviderMetaData="oidc_provider_meta_data",t.SessionData="session_data",t.TemporaryData="temporary_data"}(Bf||(Bf={}));var Df,Ef="refresh_token_timer",Of="pkce_code_verifier",_f="code",qf="session_state",$f="sign_out_url",tV="sign_out_success",eV="openid";!function(t){t.ReactNative="REACT_NATIVE",t.Browser="BROWSER",t.Node="NODE"}(Df||(Df={}));var nV=function(t){oG(n,t);var e=Ff(n);function n(t,r,i,c,l,o){var a;return wX(this,n),(a=e.call(this,null!=c?c:null==o?void 0:o.message)).name=a.constructor.name,a.code=t,a.file=r,a.method=i,a.description=l,a.error=o,Object.setPrototypeOf(cG(a),(this instanceof n?this.constructor:void 0).prototype),a}return n}(pG(Error)),rV=function(t){oG(n,nV);var e=Ff(n);function n(t,r,i,c,l,o,a,u,d){var s;return wX(this,n),(s=e.call(this,t,r,i,c,l)).name=s.constructor.name,s.code=t,s.file=r,s.method=i,s.description=l,s.networkErrorCode=o,s.networkErrorMessage=a,s.status=u,s.networkErrorData=d,s}return n}(),iV="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==yG?yG:"undefined"!=typeof self?self:{};function cV(t,e,n){return t(n={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&n.path)}},n.exports),n.exports}var lV=void 0!==yG?yG:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},oV=[],aV=[],uV="undefined"!=typeof Uint8Array?Uint8Array:Array,dV=!1;function sV(){dV=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,n=t.length;e<n;++e)oV[e]=t[e],aV[t.charCodeAt(e)]=e;aV["-".charCodeAt(0)]=62,aV["_".charCodeAt(0)]=63}function mV(t,e,n){for(var r,i,c=[],l=e;l<n;l+=3)r=(t[l]<<16)+(t[l+1]<<8)+t[l+2],c.push(oV[(i=r)>>18&63]+oV[i>>12&63]+oV[i>>6&63]+oV[63&i]);return c.join("")}function hV(t){var e;dV||sV();for(var n=t.length,r=n%3,i="",c=[],l=16383,o=0,a=n-r;o<a;o+=l)c.push(mV(t,o,o+l>a?a:o+l));return 1===r?(e=t[n-1],i+=oV[e>>2],i+=oV[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=oV[e>>10],i+=oV[e>>4&63],i+=oV[e<<2&63],i+="="),c.push(i),c.join("")}function ZV(t,e,n,r,i){var c,l,o=8*i-r-1,a=(1<<o)-1,u=a>>1,d=-7,s=n?i-1:0,m=n?-1:1,h=t[e+s];for(s+=m,c=h&(1<<-d)-1,h>>=-d,d+=o;d>0;c=256*c+t[e+s],s+=m,d-=8);for(l=c&(1<<-d)-1,c>>=-d,d+=r;d>0;l=256*l+t[e+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===a)return l?NaN:1/0*(h?-1:1);l+=Math.pow(2,r),c-=u}return(h?-1:1)*l*Math.pow(2,c-r)}function bV(t,e,n,r,i,c){var l,o,a,u=8*c-i-1,d=(1<<u)-1,s=d>>1,m=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:c-1,Z=r?1:-1,b=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,l=d):(l=Math.floor(Math.log(e)/Math.LN2),e*(a=Math.pow(2,-l))<1&&(l--,a*=2),(e+=l+s>=1?m/a:m*Math.pow(2,1-s))*a>=2&&(l++,a/=2),l+s>=d?(o=0,l=d):l+s>=1?(o=(e*a-1)*Math.pow(2,i),l+=s):(o=e*Math.pow(2,s-1)*Math.pow(2,i),l=0));i>=8;t[n+h]=255&o,h+=Z,o/=256,i-=8);for(l=l<<i|o,u+=i;u>0;t[n+h]=255&l,h+=Z,l/=256,u-=8);t[n+h-Z]|=128*b}var pV={}.toString,yV=Array.isArray||function(t){return"[object Array]"==pV.call(t)};gV.TYPED_ARRAY_SUPPORT=void 0===lV.TYPED_ARRAY_SUPPORT||lV.TYPED_ARRAY_SUPPORT;var IV=XV();function XV(){return gV.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function GV(t,e){if(XV()<e)throw new RangeError("Invalid typed array length");return gV.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=gV.prototype:(null===t&&(t=new gV(e)),t.length=e),t}function gV(t,e,n){if(!(gV.TYPED_ARRAY_SUPPORT||this instanceof gV))return new gV(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return WV(this,t)}return fV(this,t,e,n)}function fV(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");return e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r),gV.TYPED_ARRAY_SUPPORT?(t=e).__proto__=gV.prototype:t=vV(t,e),t}(t,e,n,r):"string"==typeof e?function(t,e,n){if("string"==typeof n&&""!==n||(n="utf8"),!gV.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|YV(e,n),i=(t=GV(t,r)).write(e,n);return i!==r&&(t=t.slice(0,i)),t}(t,e,n):function(t,e){if(CV(e)){var n=0|SV(e.length);return 0===(t=GV(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?GV(t,0):vV(t,e);if("Buffer"===e.type&&yV(e.data))return vV(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function VV(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function WV(t,e){if(VV(e),t=GV(t,e<0?0:0|SV(e)),!gV.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function vV(t,e){var n=e.length<0?0:0|SV(e.length);t=GV(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function SV(t){if(t>=XV())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+XV().toString(16)+" bytes");return 0|t}function CV(t){return!(null==t||!t._isBuffer)}function YV(t,e){if(CV(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return tW(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return eW(t).length;default:if(r)return tW(t).length;e=(""+e).toLowerCase(),r=!0}}function RV(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return jV(this,e,n);case"utf8":case"utf-8":return FV(this,e,n);case"ascii":return zV(this,e,n);case"latin1":case"binary":return BV(this,e,n);case"base64":return TV(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return MV(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function KV(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function LV(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=gV.from(e,r)),CV(e))return 0===e.length?-1:JV(t,e,n,r,i);if("number"==typeof e)return e&=255,gV.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):JV(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function JV(t,e,n,r,i){var c,l=1,o=t.length,a=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;l=2,o/=2,a/=2,n/=2}function u(t,e){return 1===l?t[e]:t.readUInt16BE(e*l)}if(i){var d=-1;for(c=n;c<o;c++)if(u(t,c)===u(e,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===a)return d*l}else-1!==d&&(c-=c-d),d=-1}else for(n+a>o&&(n=o-a),c=n;c>=0;c--){for(var s=!0,m=0;m<a;m++)if(u(t,c+m)!==u(e,m)){s=!1;break}if(s)return c}return-1}function xV(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=e.length;if(c%2!=0)throw new TypeError("Invalid hex string");r>c/2&&(r=c/2);for(var l=0;l<r;++l){var o=parseInt(e.substr(2*l,2),16);if(isNaN(o))return l;t[n+l]=o}return l}function HV(t,e,n,r){return nW(tW(e,t.length-n),t,n,r)}function NV(t,e,n,r){return nW(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function kV(t,e,n,r){return NV(t,e,n,r)}function UV(t,e,n,r){return nW(eW(e),t,n,r)}function wV(t,e,n,r){return nW(function(t,e){for(var n,r,i,c=[],l=0;l<t.length&&!((e-=2)<0);++l)r=(n=t.charCodeAt(l))>>8,i=n%256,c.push(i),c.push(r);return c}(e,t.length-n),t,n,r)}function TV(t,e,n){return 0===e&&n===t.length?hV(t):hV(t.slice(e,n))}function FV(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var c,l,o,a,u=t[i],d=null,s=u>239?4:u>223?3:u>191?2:1;if(i+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=t[i+1]))&&(a=(31&u)<<6|63&c)>127&&(d=a);break;case 3:c=t[i+1],l=t[i+2],128==(192&c)&&128==(192&l)&&(a=(15&u)<<12|(63&c)<<6|63&l)>2047&&(a<55296||a>57343)&&(d=a);break;case 4:c=t[i+1],l=t[i+2],o=t[i+3],128==(192&c)&&128==(192&l)&&128==(192&o)&&(a=(15&u)<<18|(63&c)<<12|(63&l)<<6|63&o)>65535&&a<1114112&&(d=a)}null===d?(d=65533,s=1):d>65535&&(d-=65536,r.push(d>>>10&1023|55296),d=56320|1023&d),r.push(d),i+=s}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);for(var n="",r=0;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=4096));return n}(r)}function zV(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function BV(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function jV(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=e;c<n;++c)i+=$V(t[c]);return i}function MV(t,e,n){for(var r=t.slice(e,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function QV(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function PV(t,e,n,r,i,c){if(!CV(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<c)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function AV(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,c=Math.min(t.length-n,2);i<c;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function DV(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,c=Math.min(t.length-n,4);i<c;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function EV(t,e,n,r,i,c){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function OV(t,e,n,r,i){return i||EV(t,0,n,4),bV(t,e,n,r,23,4),n+4}function _V(t,e,n,r,i){return i||EV(t,0,n,8),bV(t,e,n,r,52,8),n+8}gV.poolSize=8192,gV._augment=function(t){return t.__proto__=gV.prototype,t},gV.from=function(t,e,n){return fV(null,t,e,n)},gV.TYPED_ARRAY_SUPPORT&&(gV.prototype.__proto__=Uint8Array.prototype,gV.__proto__=Uint8Array),gV.alloc=function(t,e,n){return function(t,e,n,r){return VV(e),e<=0?GV(t,e):void 0!==n?"string"==typeof r?GV(t,e).fill(n,r):GV(t,e).fill(n):GV(t,e)}(null,t,e,n)},gV.allocUnsafe=function(t){return WV(null,t)},gV.allocUnsafeSlow=function(t){return WV(null,t)},gV.isBuffer=rW,gV.compare=function(t,e){if(!CV(t)||!CV(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,c=Math.min(n,r);i<c;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},gV.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},gV.concat=function(t,e){if(!yV(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return gV.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=gV.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var c=t[n];if(!CV(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},gV.byteLength=YV,gV.prototype._isBuffer=!0,gV.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)KV(this,e,e+1);return this},gV.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)KV(this,e,e+3),KV(this,e+1,e+2);return this},gV.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)KV(this,e,e+7),KV(this,e+1,e+6),KV(this,e+2,e+5),KV(this,e+3,e+4);return this},gV.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?FV(this,0,t):RV.apply(this,arguments)},gV.prototype.equals=function(t){if(!CV(t))throw new TypeError("Argument must be a Buffer");return this===t||0===gV.compare(this,t)},gV.prototype.inspect=function(){var t="";return this.length>0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),"<Buffer "+t+">"},gV.prototype.compare=function(t,e,n,r,i){if(!CV(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var c=(i>>>=0)-(r>>>=0),l=(n>>>=0)-(e>>>=0),o=Math.min(c,l),a=this.slice(r,i),u=t.slice(e,n),d=0;d<o;++d)if(a[d]!==u[d]){c=a[d],l=u[d];break}return c<l?-1:l<c?1:0},gV.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},gV.prototype.indexOf=function(t,e,n){return LV(this,t,e,n,!0)},gV.prototype.lastIndexOf=function(t,e,n){return LV(this,t,e,n,!1)},gV.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return xV(this,t,e,n);case"utf8":case"utf-8":return HV(this,t,e,n);case"ascii":return NV(this,t,e,n);case"latin1":case"binary":return kV(this,t,e,n);case"base64":return UV(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return wV(this,t,e,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},gV.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},gV.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),gV.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=gV.prototype;else{var i=e-t;n=new gV(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+t]}return n},gV.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||QV(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r},gV.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||QV(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},gV.prototype.readUInt8=function(t,e){return e||QV(t,1,this.length),this[t]},gV.prototype.readUInt16LE=function(t,e){return e||QV(t,2,this.length),this[t]|this[t+1]<<8},gV.prototype.readUInt16BE=function(t,e){return e||QV(t,2,this.length),this[t]<<8|this[t+1]},gV.prototype.readUInt32LE=function(t,e){return e||QV(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},gV.prototype.readUInt32BE=function(t,e){return e||QV(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},gV.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||QV(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*e)),r},gV.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||QV(t,e,this.length);for(var r=e,i=1,c=this[t+--r];r>0&&(i*=256);)c+=this[t+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*e)),c},gV.prototype.readInt8=function(t,e){return e||QV(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},gV.prototype.readInt16LE=function(t,e){e||QV(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},gV.prototype.readInt16BE=function(t,e){e||QV(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},gV.prototype.readInt32LE=function(t,e){return e||QV(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},gV.prototype.readInt32BE=function(t,e){return e||QV(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},gV.prototype.readFloatLE=function(t,e){return e||QV(t,4,this.length),ZV(this,t,!0,23,4)},gV.prototype.readFloatBE=function(t,e){return e||QV(t,4,this.length),ZV(this,t,!1,23,4)},gV.prototype.readDoubleLE=function(t,e){return e||QV(t,8,this.length),ZV(this,t,!0,52,8)},gV.prototype.readDoubleBE=function(t,e){return e||QV(t,8,this.length),ZV(this,t,!1,52,8)},gV.prototype.writeUIntLE=function(t,e,n,r){t=+t,e|=0,n|=0,r||PV(this,t,e,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[e]=255&t;++c<n&&(i*=256);)this[e+c]=t/i&255;return e+n},gV.prototype.writeUIntBE=function(t,e,n,r){t=+t,e|=0,n|=0,r||PV(this,t,e,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[e+i]=255&t;--i>=0&&(c*=256);)this[e+i]=t/c&255;return e+n},gV.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||PV(this,t,e,1,255,0),gV.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},gV.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||PV(this,t,e,2,65535,0),gV.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):AV(this,t,e,!0),e+2},gV.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||PV(this,t,e,2,65535,0),gV.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):AV(this,t,e,!1),e+2},gV.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||PV(this,t,e,4,4294967295,0),gV.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):DV(this,t,e,!0),e+4},gV.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||PV(this,t,e,4,4294967295,0),gV.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):DV(this,t,e,!1),e+4},gV.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);PV(this,t,e,n,i-1,-i)}var c=0,l=1,o=0;for(this[e]=255&t;++c<n&&(l*=256);)t<0&&0===o&&0!==this[e+c-1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},gV.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);PV(this,t,e,n,i-1,-i)}var c=n-1,l=1,o=0;for(this[e+c]=255&t;--c>=0&&(l*=256);)t<0&&0===o&&0!==this[e+c+1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},gV.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||PV(this,t,e,1,127,-128),gV.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},gV.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||PV(this,t,e,2,32767,-32768),gV.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):AV(this,t,e,!0),e+2},gV.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||PV(this,t,e,2,32767,-32768),gV.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):AV(this,t,e,!1),e+2},gV.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||PV(this,t,e,4,2147483647,-2147483648),gV.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):DV(this,t,e,!0),e+4},gV.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||PV(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),gV.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):DV(this,t,e,!1),e+4},gV.prototype.writeFloatLE=function(t,e,n){return OV(this,t,e,!0,n)},gV.prototype.writeFloatBE=function(t,e,n){return OV(this,t,e,!1,n)},gV.prototype.writeDoubleLE=function(t,e,n){return _V(this,t,e,!0,n)},gV.prototype.writeDoubleBE=function(t,e,n){return _V(this,t,e,!1,n)},gV.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,c=r-n;if(this===t&&n<e&&e<r)for(i=c-1;i>=0;--i)t[i+e]=this[i+n];else if(c<1e3||!gV.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+c),e);return c},gV.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!gV.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var c;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(c=e;c<n;++c)this[c]=t;else{var l=CV(t)?t:tW(new gV(t,r).toString()),o=l.length;for(c=0;c<n-e;++c)this[c+e]=l[c%o]}return this};var qV=/[^+\/0-9A-Za-z-_]/g;function $V(t){return t<16?"0"+t.toString(16):t.toString(16)}function tW(t,e){var n;e=e||1/0;for(var r=t.length,i=null,c=[],l=0;l<r;++l){if((n=t.charCodeAt(l))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&c.push(239,191,189);continue}if(l+1===r){(e-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;c.push(n)}else if(n<2048){if((e-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function eW(t){return function(t){var e,n,r,i,c,l;dV||sV();var o=t.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===t[o-2]?2:"="===t[o-1]?1:0,l=new uV(3*o/4-c),r=c>0?o-4:o;var a=0;for(e=0,n=0;e<r;e+=4,n+=3)i=aV[t.charCodeAt(e)]<<18|aV[t.charCodeAt(e+1)]<<12|aV[t.charCodeAt(e+2)]<<6|aV[t.charCodeAt(e+3)],l[a++]=i>>16&255,l[a++]=i>>8&255,l[a++]=255&i;return 2===c?(i=aV[t.charCodeAt(e)]<<2|aV[t.charCodeAt(e+1)]>>4,l[a++]=255&i):1===c&&(i=aV[t.charCodeAt(e)]<<10|aV[t.charCodeAt(e+1)]<<4|aV[t.charCodeAt(e+2)]>>2,l[a++]=i>>8&255,l[a++]=255&i),l}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(qV,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function nW(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function rW(t){return null!=t&&(!!t._isBuffer||iW(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&iW(t.slice(0,0))}(t))}function iW(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var cW=Object.freeze({__proto__:null,Buffer:gV,INSPECT_MAX_BYTES:50,SlowBuffer:function(t){return+t!=t&&(t=0),gV.alloc(+t)},isBuffer:rW,kMaxLength:IV}),lW=cV((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.length,n=e%4;if(!n)return t;var r=e,i=4-n,c=e+i,l=gV.alloc(c);for(l.write(t);i--;)l.write("=",r++);return l.toString()}})),oW=cV((function(t,e){function n(t,e){return void 0===e&&(e="utf8"),gV.isBuffer(t)?i(t.toString("base64")):i(gV.from(t,e).toString("base64"))}function r(t){return t=t.toString(),lW.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function i(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}Object.defineProperty(e,"__esModule",{value:!0});var c=n;c.encode=n,c.decode=function(t,e){return void 0===e&&(e="utf8"),gV.from(r(t),"base64").toString(e)},c.toBase64=r,c.fromBase64=i,c.toBuffer=function(t){return gV.from(r(t),"base64")},e.default=c})),aW=cV((function(t){t.exports=oW.default,t.exports.default=t.exports})),uW=cV((function(t,e){var n;t.exports=(n=n||function(t,e){var n=Object.create||function(){function t(){}return function(e){var n;return t.prototype=e,n=new t,t.prototype=null,n}}(),r={},i=r.lib={},c=i.Base={extend:function(t){var e=n(this);return t&&e.mixIn(t),e.hasOwnProperty("init")&&this.init!==e.init||(e.init=function(){e.$super.init.apply(this,arguments)}),e.init.prototype=e,e.$super=this,e},create:function(){var t=this.extend();return t.init.apply(t,arguments),t},init:function(){},mixIn:function(t){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e]);t.hasOwnProperty("toString")&&(this.toString=t.toString)},clone:function(){return this.init.prototype.extend(this)}},l=i.WordArray=c.extend({init:function(t,e){t=this.words=t||[],this.sigBytes=null!=e?e:4*t.length},toString:function(t){return(t||a).stringify(this)},concat:function(t){var e=this.words,n=t.words,r=this.sigBytes,i=t.sigBytes;if(this.clamp(),r%4)for(var c=0;c<i;c++){var l=n[c>>>2]>>>24-c%4*8&255;e[r+c>>>2]|=l<<24-(r+c)%4*8}else for(c=0;c<i;c+=4)e[r+c>>>2]=n[c>>>2];return this.sigBytes+=i,this},clamp:function(){var e=this.words,n=this.sigBytes;e[n>>>2]&=4294967295<<32-n%4*8,e.length=t.ceil(n/4)},clone:function(){var t=c.clone.call(this);return t.words=this.words.slice(0),t},random:function(e){for(var n,r=[],i=function(e){e=e;var n=987654321,r=4294967295;return function(){var i=((n=36969*(65535&n)+(n>>16)&r)<<16)+(e=18e3*(65535&e)+(e>>16)&r)&r;return i/=4294967296,(i+=.5)*(t.random()>.5?1:-1)}},c=0;c<e;c+=4){var o=i(4294967296*(n||t.random()));n=987654071*o(),r.push(4294967296*o()|0)}return new l.init(r,e)}}),o=r.enc={},a=o.Hex={stringify:function(t){for(var e=t.words,n=t.sigBytes,r=[],i=0;i<n;i++){var c=e[i>>>2]>>>24-i%4*8&255;r.push((c>>>4).toString(16)),r.push((15&c).toString(16))}return r.join("")},parse:function(t){for(var e=t.length,n=[],r=0;r<e;r+=2)n[r>>>3]|=parseInt(t.substr(r,2),16)<<24-r%8*4;return new l.init(n,e/2)}},u=o.Latin1={stringify:function(t){for(var e=t.words,n=t.sigBytes,r=[],i=0;i<n;i++){var c=e[i>>>2]>>>24-i%4*8&255;r.push(String.fromCharCode(c))}return r.join("")},parse:function(t){for(var e=t.length,n=[],r=0;r<e;r++)n[r>>>2]|=(255&t.charCodeAt(r))<<24-r%4*8;return new l.init(n,e)}},d=o.Utf8={stringify:function(t){try{return decodeURIComponent(escape(u.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return u.parse(unescape(encodeURIComponent(t)))}},s=i.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new l.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(e){var n=this._data,r=n.words,i=n.sigBytes,c=this.blockSize,o=i/(4*c),a=(o=e?t.ceil(o):t.max((0|o)-this._minBufferSize,0))*c,u=t.min(4*a,i);if(a){for(var d=0;d<a;d+=c)this._doProcessBlock(r,d);var s=r.splice(0,a);n.sigBytes-=u}return new l.init(s,u)},clone:function(){var t=c.clone.call(this);return t._data=this._data.clone(),t},_minBufferSize:0}),m=(i.Hasher=s.extend({cfg:c.extend(),init:function(t){this.cfg=this.cfg.extend(t),this.reset()},reset:function(){s.reset.call(this),this._doReset()},update:function(t){return this._append(t),this._process(),this},finalize:function(t){return t&&this._append(t),this._doFinalize()},blockSize:16,_createHelper:function(t){return function(e,n){return new t.init(n).finalize(e)}},_createHmacHelper:function(t){return function(e,n){return new m.HMAC.init(t,n).finalize(e)}}}),r.algo={});return r}(Math),n)})),dW=cV((function(t,e){var n;t.exports=(n=uW,function(){if("function"==typeof ArrayBuffer){var t=n.lib.WordArray,e=t.init;(t.init=function(t){if(t instanceof ArrayBuffer&&(t=new Uint8Array(t)),(t instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array)&&(t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),t instanceof Uint8Array){for(var n=t.byteLength,r=[],i=0;i<n;i++)r[i>>>2]|=t[i]<<24-i%4*8;e.call(this,r,n)}else e.apply(this,arguments)}).prototype=t}}(),n.lib.WordArray)})),sW=function(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}(cV((function(t){!function(e,n){var r={};!function(t){t.__esModule=!0,t.digestLength=32,t.blockSize=64;var e=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(t,n,r,i,c){for(var l,o,a,u,d,s,m,h,Z,b,p,y,I;c>=64;){for(l=n[0],o=n[1],a=n[2],u=n[3],d=n[4],s=n[5],m=n[6],h=n[7],b=0;b<16;b++)p=i+4*b,t[b]=(255&r[p])<<24|(255&r[p+1])<<16|(255&r[p+2])<<8|255&r[p+3];for(b=16;b<64;b++)y=((Z=t[b-2])>>>17|Z<<15)^(Z>>>19|Z<<13)^Z>>>10,I=((Z=t[b-15])>>>7|Z<<25)^(Z>>>18|Z<<14)^Z>>>3,t[b]=(y+t[b-7]|0)+(I+t[b-16]|0);for(b=0;b<64;b++)y=(((d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&s^~d&m)|0)+(h+(e[b]+t[b]|0)|0)|0,I=((l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10))+(l&o^l&a^o&a)|0,h=m,m=s,s=d,d=u+y|0,u=a,a=o,o=l,l=y+I|0;n[0]+=l,n[1]+=o,n[2]+=a,n[3]+=u,n[4]+=d,n[5]+=s,n[6]+=m,n[7]+=h,i+=64,c-=64}return i}var r=function(){function e(){this.digestLength=t.digestLength,this.blockSize=t.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return e.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},e.prototype.clean=function(){for(var t=0;t<this.buffer.length;t++)this.buffer[t]=0;for(t=0;t<this.temp.length;t++)this.temp[t]=0;this.reset()},e.prototype.update=function(t,e){if(void 0===e&&(e=t.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var r=0;if(this.bytesHashed+=e,this.bufferLength>0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[r++],e--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(r=n(this.temp,this.state,t,r,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[r++],e--;return this},e.prototype.finish=function(t){if(!this.finished){var e=this.bytesHashed,r=this.bufferLength,i=e/536870912|0,c=e<<3,l=e%64<56?64:128;this.buffer[r]=128;for(var o=r+1;o<l-8;o++)this.buffer[o]=0;this.buffer[l-8]=i>>>24&255,this.buffer[l-7]=i>>>16&255,this.buffer[l-6]=i>>>8&255,this.buffer[l-5]=i>>>0&255,this.buffer[l-4]=c>>>24&255,this.buffer[l-3]=c>>>16&255,this.buffer[l-2]=c>>>8&255,this.buffer[l-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,l),this.finished=!0}for(o=0;o<8;o++)t[4*o+0]=this.state[o]>>>24&255,t[4*o+1]=this.state[o]>>>16&255,t[4*o+2]=this.state[o]>>>8&255,t[4*o+3]=this.state[o]>>>0&255;return this},e.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},e.prototype._saveState=function(t){for(var e=0;e<this.state.length;e++)t[e]=this.state[e]},e.prototype._restoreState=function(t,e){for(var n=0;n<this.state.length;n++)this.state[n]=t[n];this.bytesHashed=e,this.finished=!1,this.bufferLength=0},e}();t.Hash=r;var i=function(){function t(t){this.inner=new r,this.outer=new r,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var e=new Uint8Array(this.blockSize);if(t.length>this.blockSize)(new r).update(t).finish(e).clean();else for(var n=0;n<t.length;n++)e[n]=t[n];for(n=0;n<e.length;n++)e[n]^=54;for(this.inner.update(e),n=0;n<e.length;n++)e[n]^=106;for(this.outer.update(e),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate),n=0;n<e.length;n++)e[n]=0}return t.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},t.prototype.clean=function(){for(var t=0;t<this.istate.length;t++)this.ostate[t]=this.istate[t]=0;this.inner.clean(),this.outer.clean()},t.prototype.update=function(t){return this.inner.update(t),this},t.prototype.finish=function(t){return this.outer.finished?this.outer.finish(t):(this.inner.finish(t),this.outer.update(t,this.digestLength).finish(t)),this},t.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},t}();function c(t){var e=(new r).update(t),n=e.digest();return e.clean(),n}function l(t,e){var n=new i(t).update(e),r=n.digest();return n.clean(),r}function o(t,e,n,r){var i=r[0];if(0===i)throw new Error("hkdf: cannot expand more");e.reset(),i>1&&e.update(t),n&&e.update(n),e.update(r),e.finish(t),r[0]++}t.HMAC=i,t.hash=c,t.default=c,t.hmac=l;var a=new Uint8Array(t.digestLength);t.hkdf=function(t,e,n,r){void 0===e&&(e=a),void 0===r&&(r=32);for(var c=new Uint8Array([1]),u=l(e,t),d=new i(u),s=new Uint8Array(d.digestLength),m=s.length,h=new Uint8Array(r),Z=0;Z<r;Z++)m===s.length&&(o(s,d,n,c),m=0),h[Z]=s[m++];return d.clean(),s.fill(0),c.fill(0),h},t.pbkdf2=function(t,e,n,r){for(var c=new i(t),l=c.digestLength,o=new Uint8Array(4),a=new Uint8Array(l),u=new Uint8Array(l),d=new Uint8Array(r),s=0;s*l<r;s++){var m=s+1;o[0]=m>>>24&255,o[1]=m>>>16&255,o[2]=m>>>8&255,o[3]=m>>>0&255,c.reset(),c.update(e),c.update(o),c.finish(u);for(var h=0;h<l;h++)a[h]=u[h];for(h=2;h<=n;h++){c.reset(),c.update(u).finish(u);for(var Z=0;Z<l;Z++)a[Z]^=u[Z]}for(h=0;h<l&&s*l+h<r;h++)d[s*l+h]=a[h]}for(s=0;s<l;s++)a[s]=u[s]=0;for(s=0;s<4;s++)o[s]=0;return c.clean(),d}}(r);var i=r.default;for(var c in r)i[c]=r[c];t.exports=i}()})));function mW(){throw new Error("setTimeout has not been defined")}function hW(){throw new Error("clearTimeout has not been defined")}var ZW=mW,bW=hW;function pW(t){if(ZW===setTimeout)return setTimeout(t,0);if((ZW===mW||!ZW)&&setTimeout)return ZW=setTimeout,setTimeout(t,0);try{return ZW(t,0)}catch(e){try{return ZW.call(null,t,0)}catch(e){return ZW.call(this,t,0)}}}"function"==typeof lV.setTimeout&&(ZW=setTimeout),"function"==typeof lV.clearTimeout&&(bW=clearTimeout);var yW,IW=[],XW=!1,GW=-1;function gW(){XW&&yW&&(XW=!1,yW.length?IW=yW.concat(IW):GW=-1,IW.length&&fW())}function fW(){if(!XW){var t=pW(gW);XW=!0;for(var e=IW.length;e;){for(yW=IW,IW=[];++GW<e;)yW&&yW[GW].run();GW=-1,e=IW.length}yW=null,XW=!1,function(t){if(bW===clearTimeout)return clearTimeout(t);if((bW===hW||!bW)&&clearTimeout)return bW=clearTimeout,clearTimeout(t);try{bW(t)}catch(e){try{return bW.call(null,t)}catch(e){return bW.call(this,t)}}}(t)}}function VW(t,e){this.fun=t,this.array=e}VW.prototype.run=function(){this.fun.apply(null,this.array)};var WW=lV.performance||{},vW=(WW.now||WW.mozNow||WW.msNow||WW.oNow||WW.webkitNow,new Date,function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];IW.push(new VW(t,e)),1!==IW.length||XW||pW(fW)}),SW=function(t){if(t.__esModule)return t;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(t).forEach((function(n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})})),e}(cW),CW=cV((function(t,e){var n=SW.Buffer;function r(t,e){for(var n in t)e[n]=t[n]}function i(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=SW:(r(SW,e),e.Buffer=i),r(n,i),i.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},i.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},i.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},i.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return SW.SlowBuffer(t)}})),YW=cV((function(t){var e=65536,n=CW.Buffer,r=iV.crypto||iV.msCrypto;r&&r.getRandomValues?t.exports=function(t,i){if(t>4294967295)throw new RangeError("requested too many random bytes");var c=n.allocUnsafe(t);if(t>0)if(t>e)for(var l=0;l<t;l+=e)r.getRandomValues(c.slice(l,l+e));else r.getRandomValues(c);return"function"==typeof i?vW((function(){i(null,c)})):c}:t.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}})),RW=new TextEncoder,KW=new TextDecoder,LW=function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;throw new Error("unable to locate global object")}(),JW=function(t){var e=t;return e instanceof Uint8Array&&(e=KW.decode(e)),e=e.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,""),new Uint8Array(LW.atob(e).split("").map((function(t){return t.charCodeAt(0)})))},xW=function(t){oG(n,t);var e=Ff(n);function n(t){var r;return wX(this,n),(r=e.call(this,t)).code="ERR_JOSE_GENERIC",r.name=r.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(cG(r),r.constructor),r}return n}(pG(Error)),HW=function(t){oG(n,xW);var e=Ff(n);function n(t){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return wX(this,n),(r=e.call(this,t)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",r.claim=i,r.reason=c,r}return n}(),NW=function(t){oG(n,xW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",t}return n}(),kW=function(t){oG(n,xW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",t}return n}(),UW=function(t){oG(n,xW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_INVALID",t}return n}(),wW=function(t){oG(n,xW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JWT_INVALID",t}return n}(),TW=function(t){oG(n,xW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",t.message="signature verification failed",t}return n}(),FW=function(t){oG(n,HW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JWT_EXPIRED",t}return n}(),zW=LW.crypto;function BW(){if(!LW.isSecureContext&&!LW.crypto.subtle)throw new xW("Web Cryptography API is available only in Secure Contexts. See: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts")}var jW=function(){var t=rG(zX.mark((function t(e){var n,r,i,c,l,o,a;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=function(t){var e,n;switch(t.kty){case"oct":switch(t.alg){case"HS256":case"HS384":case"HS512":e={name:"HMAC",hash:"SHA-".concat(t.alg.substr(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new kW("".concat(t.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":e={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":e={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":e={name:"PBKDF2"},n=["deriveBits"];break;default:throw new kW('unsupported or invalid JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(t.alg){case"PS256":case"PS384":case"PS512":e={name:"RSA-PSS",hash:"SHA-".concat(t.alg.substr(-3))},n=t.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":e={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(t.alg.substr(-3))},n=t.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":e={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(t.alg.substr(-3),10)||1)},n=t.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new kW('unsupported or invalid JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(t.alg){case"ES256":case"ES384":case"ES512":e={name:"ECDSA",namedCurve:t.crv},n=t.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":e={name:"ECDH",namedCurve:t.crv},n=t.d?["deriveBits"]:[];break;default:throw new kW('unsupported or invalid JWK "alg" (Algorithm) Parameter value')}break;default:throw new kW('unsupported or invalid JWK "kty" (Key Type) Parameter value')}return{algorithm:e,keyUsages:n}}(e),c=i.algorithm,l=i.keyUsages,o="jwk",a=Tf({},e),t.abrupt("return",(delete a.alg,"PBKDF2"===c.name&&(o="raw",a=JW(e.k)),BW(),zW.subtle.importKey(o,a,c,null!==(n=e.ext)&&void 0!==n&&n,null!==(r=e.key_ops)&&void 0!==r?r:l)));case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();function MW(t){return!!t&&t.constructor===Object}function QW(t,e,n){return PW.apply(this,arguments)}function PW(){return PW=rG(zX.mark((function t(e,n,r){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(MW(e)){t.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=e.alg),"string"==typeof n&&n){t.next=4;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 4:t.t0=e.kty,t.next="oct"===t.t0?7:"RSA"===t.t0?10:"EC"===t.t0||"OKP"===t.t0?12:13;break;case 7:if("string"==typeof e.k&&e.k){t.next=9;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 9:return t.abrupt("return",(null!=r||(r=!0!==e.ext),r?jW(Tf(Tf({},e),{},{alg:n,ext:!1})):JW(e.k)));case 10:if(void 0===e.oth){t.next=12;break}throw new kW('RSA JWK "oth" (Other Primes Info) Parameter value is unsupported');case 12:return t.abrupt("return",jW(Tf(Tf({},e),{},{alg:n})));case 13:throw new kW('unsupported "kty" (Key Type) Parameter value');case 14:case"end":return t.stop()}}),t)}))),PW.apply(this,arguments)}var AW=function(){var t=rG(zX.mark((function t(e,n,r,i){var c;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(BW(),!(n instanceof Uint8Array)){t.next=8;break}if(e.startsWith("HS")){t.next=3;break}throw new TypeError("symmetric keys are only applicable for HMAC-based algorithms");case 3:return t.next=5,zW.subtle.importKey("raw",n,{hash:"SHA-".concat(e.substr(-3)),name:"HMAC"},!1,["verify"]);case 5:c=t.sent,t.next=9;break;case 8:c=n;case 9:return t.abrupt("return",(function(t,e){if(t.startsWith("HS")){var n=parseInt(t.substr(-3),10),r=e.algorithm.length;if("number"!=typeof r||r<n)throw new TypeError("".concat(t," requires symmetric keys to be ").concat(n," bits or larger"))}if(t.startsWith("RS")||t.startsWith("PS")){var i=e.algorithm.modulusLength;if("number"!=typeof i||i<2048)throw new TypeError("".concat(t," requires key modulusLength to be 2048 bits or larger"))}}(e,c),zW.subtle.verify(function(t){switch(t){case"HS256":return{hash:"SHA-256",name:"HMAC"};case"HS384":return{hash:"SHA-384",name:"HMAC"};case"HS512":return{hash:"SHA-512",name:"HMAC"};case"PS256":return{hash:"SHA-256",name:"RSA-PSS",saltLength:32};case"PS384":return{hash:"SHA-384",name:"RSA-PSS",saltLength:48};case"PS512":return{hash:"SHA-512",name:"RSA-PSS",saltLength:64};case"RS256":return{hash:"SHA-256",name:"RSASSA-PKCS1-v1_5"};case"RS384":return{hash:"SHA-384",name:"RSASSA-PKCS1-v1_5"};case"RS512":return{hash:"SHA-512",name:"RSASSA-PKCS1-v1_5"};case"ES256":return{hash:"SHA-256",name:"ECDSA",namedCurve:"P-256"};case"ES384":return{hash:"SHA-384",name:"ECDSA",namedCurve:"P-384"};case"ES512":return{hash:"SHA-512",name:"ECDSA",namedCurve:"P-521"};default:throw new kW("alg ".concat(t," is unsupported either by JOSE or your javascript runtime"))}}(e),c,r,i)));case 10:case"end":return t.stop()}}),t)})));return function(e,n,r,i){return t.apply(this,arguments)}}(),DW=function(t,e,n,r){if(void 0!==r.crit&&void 0===n.crit)throw new t('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||void 0===n.crit)return new Set;if(!Array.isArray(n.crit)||0===n.crit.length||n.crit.some((function(t){return"string"!=typeof t||0===t.length})))throw new t('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');var i,c=kf(n.crit);try{for(c.s();!(i=c.n()).done;){var l=i.value;if(!e.has(l))throw new kW('Extension Header Parameter "'.concat(l,'" is not supported by this implementation'));if(void 0===r[l])throw new t('Extension Header Parameter "'.concat(l,'" is missing'));if(e.get(l)&&void 0===n[l])throw new t('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(t){c.e(t)}finally{c.f()}return new Set(n.crit)}.bind(void 0,UW,new Map([["b64",!0]])),EW=function(t,e){if(void 0!==e&&(!Array.isArray(e)||e.some((function(t){return"string"!=typeof t}))))throw new TypeError('"'.concat(t,'" option must be an array of strings'));if(e)return new Set(e)}.bind(void 0,"algorithms");function OW(t,e,n){return _W.apply(this,arguments)}function _W(){return _W=rG(zX.mark((function t(e,n,r){var i,c,l,o,a,u,d,s,m,h;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(MW(e)){t.next=2;break}throw new UW("Flattened JWS must be an object");case 2:if(void 0!==e.protected||void 0!==e.header){t.next=4;break}throw new UW('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===e.protected||"string"==typeof e.protected){t.next=6;break}throw new UW("JWS Protected Header incorrect type");case 6:if(void 0!==e.payload){t.next=8;break}throw new UW("JWS Payload missing");case 8:if("string"==typeof e.signature){t.next=10;break}throw new UW("JWS Signature missing or incorrect type");case 10:if(void 0===e.header||MW(e.header)){t.next=12;break}throw new UW("JWS Unprotected Header incorrect type");case 12:if(i={},e.protected&&(c=JW(e.protected),i=JSON.parse(KW.decode(c))),function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r,i=e.filter(Boolean);if(0===i.length||1===i.length)return!0;var c,l=kf(i);try{for(l.s();!(c=l.n()).done;){var o=c.value,a=Object.keys(o);if(r&&0!==r.size){var u,d=kf(a);try{for(d.s();!(u=d.n()).done;){var s=u.value;if(r.has(s))return!1;r.add(s)}}catch(t){d.e(t)}finally{d.f()}}else r=new Set(a)}}catch(t){l.e(t)}finally{l.f()}return!0}(i,e.header)){t.next=16;break}throw new UW("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 16:if(l=Tf(Tf({},i),e.header),o=!0,!DW(i,l).has("b64")||"boolean"==typeof(o=i.b64)){t.next=20;break}throw new UW('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 20:if("string"==typeof(a=l.alg)&&a){t.next=23;break}throw new UW('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 23:if(!(u=r&&EW(r.algorithms))||u.has(a)){t.next=26;break}throw new NW('"alg" (Algorithm) Header Parameter not allowed');case 26:if(!o){t.next=31;break}if("string"==typeof e.payload){t.next=29;break}throw new UW("JWS Payload must be a string");case 29:t.next=33;break;case 31:if("string"==typeof e.payload||e.payload instanceof Uint8Array){t.next=33;break}throw new UW("JWS Payload must be a string or an Uint8Array instance");case 33:if(t.t0="function"==typeof n,!t.t0){t.next=38;break}return t.next=37,n(i,e);case 37:n=t.sent;case 38:return function(t,e){if(t.startsWith("HS")||"dir"===t||t.startsWith("PBES2")||t.match(/^A\d{3}(?:GCM)KW$/)){if(e instanceof Uint8Array||"secret"===e.type)return;throw new TypeError('CryptoKey or KeyObject instances for symmetric algorithms must be of type "secret"')}if(e instanceof Uint8Array)throw new TypeError("CryptoKey or KeyObject instances must be used for asymmetric algorithms");if("secret"===e.type)throw new TypeError('CryptoKey or KeyObject instances for asymmetric algorithms must not be of type "secret"')}(a,n),d=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=e.reduce((function(t,e){return t+e.length}),0),i=new Uint8Array(r),c=0;return e.forEach((function(t){i.set(t,c),c+=t.length})),i}(RW.encode(e.protected||""),RW.encode("."),"string"==typeof e.payload?RW.encode(e.payload):e.payload),s=JW(e.signature),t.next=42,AW(a,n,s,d);case 42:if(t.sent){t.next=44;break}throw new TW;case 44:return m=o?JW(e.payload):"string"==typeof e.payload?RW.encode(e.payload):e.payload,h={payload:m},t.abrupt("return",(void 0!==e.protected&&(h.protectedHeader=i),void 0!==e.header&&(h.unprotectedHeader=e.header),h));case 47:case"end":return t.stop()}}),t)}))),_W.apply(this,arguments)}var qW=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,$W=function(t){var e=qW.exec(t);if(!e)throw new TypeError("invalid time period format");var n=parseFloat(e[1]);switch(e[2].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":return Math.round(n);case"minute":case"minutes":case"min":case"mins":case"m":return Math.round(60*n);case"hour":case"hours":case"hr":case"hrs":case"h":return Math.round(3600*n);case"day":case"days":case"d":return Math.round(86400*n);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},tv=function(t){return t.toLowerCase().replace(/^application\//,"")},ev=function(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof t.typ||tv(t.typ)!==tv(i)))throw new HW('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(KW.decode(e))}catch(t){}if("object"!=l(n)||!n||Array.isArray(n))throw new wW("JWT Claims Set must be a top-level JSON object");var c=r.issuer;if(c&&!("string"==typeof c?[c]:c).includes(n.iss))throw new HW('unexpected "iss" claim value',"iss","check_failed");var o=r.subject;if(o&&n.sub!==o)throw new HW('unexpected "sub" claim value',"sub","check_failed");var a,u,d,s=r.audience;if(s&&(u="string"==typeof s?[s]:s,!("string"==typeof(a=n.aud)?u.includes(a):u.some(Set.prototype.has.bind(new Set(a))))))throw new HW('unexpected "aud" claim value',"aud","check_failed");switch(l(r.clockTolerance)){case"string":d=$W(r.clockTolerance);break;case"number":d=r.clockTolerance;break;case"undefined":d=0;break;default:throw new TypeError("invalid clockTolerance option type")}var m,h=r.currentDate,Z=(m=h||new Date,Math.floor(m.getTime()/1e3));if(void 0!==n.iat||r.maxTokenAge){if("number"!=typeof n.iat)throw new HW('"iat" claim must be a number',"iat","invalid");if(void 0===n.exp&&n.iat>Z+d)throw new HW('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new HW('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>Z+d)throw new HW('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new HW('"exp" claim must be a number',"exp","invalid");if(n.exp<=Z-d)throw new FW('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var b=Z-n.iat;if(b-d>("number"==typeof r.maxTokenAge?r.maxTokenAge:$W(r.maxTokenAge)))throw new FW('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(b<0-d)throw new HW('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function nv(){return nv=rG(zX.mark((function t(e,n,r){var i;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,function(){var t=rG(zX.mark((function t(e,n,r){var i,c,l,o,a;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e instanceof Uint8Array&&(e=KW.decode(e)),"string"==typeof e){t.next=2;break}throw new UW("Compact JWS must be a string or Uint8Array");case 2:if(i=e.split("."),c=i[0],l=i[1],o=i[2],3===i.length){t.next=5;break}throw new UW("Invalid Compact JWS");case 5:return t.next=7,OW({payload:l||void 0,protected:c||void 0,signature:o||void 0},n,r);case 7:return a=t.sent,t.abrupt("return",{payload:a.payload,protectedHeader:a.protectedHeader});case 9:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}()(e,n,r);case 2:return i=t.sent,t.abrupt("return",{payload:ev(i.protectedHeader,i.payload,r),protectedHeader:i.protectedHeader});case 4:case"end":return t.stop()}}),t)}))),nv.apply(this,arguments)}var rv=require("secure-random-bytes"),iv=function(){function t(){wX(this,t)}return FX(t,null,[{key:"base64URLEncode",value:function(t){return aW.encode(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"getCodeVerifier",value:function(t){switch(t){case Df.Node:return this.base64URLEncode(rv(32));case Df.Browser:return this.base64URLEncode(YW(32));case Df.ReactNative:return this.base64URLEncode(dW.random(32).toString());default:return this.base64URLEncode(YW(32))}}},{key:"getCodeChallenge",value:function(t){return this.base64URLEncode(new LG(sW((new TextEncoder).encode(t))))}},{key:"getSupportedSignatureAlgorithms",value:function(){return["RS256","RS512","RS384","PS256"]}},{key:"getJWKForTheIdToken",value:function(t,e){var n,r=JSON.parse(aW.decode(t,"utf8")),i=kf(e);try{for(i.s();!(n=i.n()).done;){var c=n.value;if(r.kid===c.kid)return QW({alg:c.alg,e:c.e,kty:c.kty,n:c.n})}}catch(t){i.e(t)}finally{i.f()}return Promise.reject(new nV("CRYPTO_UTIL-GTFTIT-IV01","crypto-utils","getJWKForTheIdToken","kid not found.","Failed to find the 'kid' specified in the id_token. 'kid' found in the header : "+r.kid+", Expected values: "+e.map((function(t){return t.kid})).join(", ")))}},{key:"isValidIdToken",value:function(t,e,n,r,i,c){return function(t,e,n){return nv.apply(this,arguments)}(t,e,{algorithms:this.getSupportedSignatureAlgorithms(),audience:n,clockTolerance:c,issuer:r,subject:i}).then((function(){return Promise.resolve(!0)})).catch((function(t){return Promise.reject(new nV("CRYPTO_UTIL-IVIT-IV02","crypto-utils","isValidIdToken","Validating ID token failed",t))}))}},{key:"decodeIDToken",value:function(t){try{var e=aW.decode(t.split(".")[1],"utf8");return JSON.parse(e)}catch(t){throw new nV("CRYPTO_UTIL-DIT-IV01","crypto-utils","decodeIDToken","Decoding ID token failed.",t)}}}]),t}(),cv=function(){function t(){wX(this,t)}return FX(t,null,[{key:"getAuthenticatedUserInfo",value:function(t){var e,n,r,i,c=iv.decodeIDToken(t),l=this.getTenantDomainFromIdTokenPayload(c),o=null!==(e=null==c?void 0:c.username)&&void 0!==e?e:"",a=null!==(n=c.given_name)&&void 0!==n?n:"",u=null!==(r=c.family_name)&&void 0!==r?r:"",d=a&&u?"".concat(a," ").concat(u):a||u||"",s=null!==(i=c.preferred_username)&&void 0!==i?i:d;return Object.assign({displayName:s,tenantDomain:l,username:o},this.filterClaimsFromIDTokenPayload(c))}},{key:"filterClaimsFromIDTokenPayload",value:function(t){var e=Object.assign({},t);null==e||delete e.iss,null==e||delete e.aud,null==e||delete e.exp,null==e||delete e.iat,null==e||delete e.acr,null==e||delete e.amr,null==e||delete e.azp,null==e||delete e.auth_time,null==e||delete e.nonce,null==e||delete e.c_hash,null==e||delete e.at_hash,null==e||delete e.nbf,null==e||delete e.isk,null==e||delete e.sid;var n={};return Object.entries(e).forEach((function(t){var e=$X(t,2),r=e[0],i=e[1],c=r.split("_").map((function(t,e){return 0===e?t:[t[0].toUpperCase()].concat(DX(t.slice(1))).join("")})).join("");n[c]=i})),n}},{key:"getTokenRequestHeaders",value:function(){return{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"}}}]),t}();cv.getTenantDomainFromIdTokenPayload=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@",n=t.sub.split(e);return n.length>2?n[n.length-1]:""};var lv,ov,av=function(){function t(e){var n=this;wX(this,t),this._dataLayer=e,this._config=function(){return zf(n,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getConfigData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._oidcProviderMetaData=function(){return zf(n,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}}return FX(t,[{key:"resolveWellKnownEndpoint",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){var e;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._config();case 2:return e=t.sent,t.abrupt("return",e.wellKnownEndpoint?e.serverOrigin+e.wellKnownEndpoint:e.serverOrigin+"/oauth2/token/.well-known/openid-configuration");case 4:case"end":return t.stop()}}),t,this)})))}},{key:"resolveEndpoints",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){var n,r;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n={},e.next=3,this._config();case 3:return r=e.sent,e.abrupt("return",(r.overrideWellEndpointConfig&&r.endpoints&&Object.keys(r.endpoints).forEach((function(t){var e=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));n[e]=(null==r?void 0:r.endpoints)?r.endpoints[t]:""})),Object.assign(Object.assign({},t),n)));case 5:case"end":return e.stop()}}),e,this)})))}},{key:"resolveFallbackEndpoints",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){var e,n,r;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={},t.next=3,this._config();case 3:return(n=t.sent).endpoints&&Object.keys(n.endpoints).forEach((function(t){var r=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));e[r]=(null==n?void 0:n.endpoints)?n.endpoints[t]:""})),r={authorization_endpoint:n.serverOrigin+"/oauth2/authorize",end_session_endpoint:n.serverOrigin+"/oidc/logout",jwks_uri:n.serverOrigin+"/oauth2/jwks",check_session_iframe:n.serverOrigin+"/oidc/checksession",revocation_endpoint:n.serverOrigin+"/oauth2/revoke",token_endpoint:n.serverOrigin+"/oauth2/token"},t.abrupt("return",Object.assign(Object.assign({},e),r));case 7:case"end":return t.stop()}}),t,this)})))}},{key:"validateIdToken",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){var n,r,i=this;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return n=e.sent.jwks_uri,e.next=5,this._config();case 5:return r=e.sent,e.abrupt("return",n&&0!==n.trim().length?Nf.get(n,{withCredentials:null==r?void 0:r.sendCookiesInRequests}).then((function(e){return zf(i,void 0,void 0,zX.mark((function n(){var r,i,c=this;return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===e.status){n.next=2;break}return n.abrupt("return",Promise.reject(new nV("AUTH_HELPER-VIT-NR02","authentication-helper","validateIdToken","Invalid response status received for jwks request.","The request sent to get the jwks returned "+e.status+" , which is invalid.")));case 2:return n.next=4,this._oidcProviderMetaData();case 4:return r=n.sent.issuer,n.next=7,this.resolveWellKnownEndpoint();case 7:return i=n.sent.split("/.well-known")[0],n.abrupt("return",r&&r===i?iv.getJWKForTheIdToken(t.split(".")[0],e.data.keys).then((function(e){return zf(c,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=iv,n.t1=t,n.t2=e,n.next=5,this._config();case 5:return n.t3=n.sent.clientID,n.t4=r,n.t5=iv.decodeIDToken(t).sub,n.next=10,this._config();case 10:return n.t6=n.sent.clockTolerance,n.abrupt("return",n.t0.isValidIdToken.call(n.t0,n.t1,n.t2,n.t3,n.t4,n.t5,n.t6).then((function(t){return t})).catch((function(t){return Promise.reject(new nV("AUTH_HELPER-VIT-ES03","authentication-helper","validateIdToken",void 0,void 0,t))})));case 12:case"end":return n.stop()}}),n,this)})))})).catch((function(t){return Promise.reject(new nV("AUTH_HELPER-VIT-ES04","authentication-helper","validateIdToken",void 0,void 0,t))})):Promise.resolve(!1));case 9:case"end":return n.stop()}}),n,this)})))})).catch((function(t){var e,n,r;return Promise.reject(new rV("AUTH_HELPER-VIT-NR05","authentication-helper","validateIdToken","Request to jwks endpoint failed.","The request sent to get the jwks from the server failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.data))})):Promise.reject(new nV("AUTH_HELPER-VIT-NF01","authentication-helper","validateIdToken","JWKS endpoint not found.","No JWKS endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the JWKS endpoint passed to the SDK is empty.")));case 7:case"end":return e.stop()}}),e,this)})))}},{key:"replaceCustomGrantTemplateTags",value:function(t){var e;return zf(this,void 0,void 0,zX.mark((function n(){var r,i,c;return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r="openid",n.next=3,this._config();case 3:return i=n.sent,n.next=6,this._dataLayer.getSessionData();case 6:return c=n.sent,n.abrupt("return",(i.scope&&i.scope.length>0&&(i.scope.includes("openid")||i.scope.push("openid"),r=i.scope.join(" ")),t.replace("{{token}}",c.access_token).replace("{{username}}",cv.getAuthenticatedUserInfo(c.id_token).username).replace("{{scope}}",r).replace("{{clientID}}",i.clientID).replace("{{clientSecret}}",null!==(e=i.clientSecret)&&void 0!==e?e:"")));case 8:case"end":return n.stop()}}),n,this)})))}},{key:"clearUserSessionData",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.removeOIDCProviderMetaData();case 2:return t.next=4,this._dataLayer.removeTemporaryData();case 4:return t.next=6,this._dataLayer.removeSessionData();case 6:case"end":return t.stop()}}),t,this)})))}},{key:"handleTokenResponse",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){var n,r=this;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(200===t.status){e.next=2;break}return e.abrupt("return",Promise.reject(new nV("AUTH_HELPER-HTR-NR01","authentication-helper","handleTokenResponse","Invalid response status received for token request.","The request sent to get the token returned "+t.status+" , which is invalid.")));case 2:return e.next=4,this._config();case 4:if(!e.sent.validateIDToken){e.next=6;break}return e.abrupt("return",this.validateIdToken(t.data.id_token).then((function(e){return zf(r,void 0,void 0,zX.mark((function n(){var r;return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!e){n.next=5;break}return n.next=3,this._dataLayer.setSessionData(t.data);case 3:return r={accessToken:t.data.access_token,expiresIn:t.data.expires_in,idToken:t.data.id_token,refreshToken:t.data.refresh_token,scope:t.data.scope,tokenType:t.data.token_type},n.abrupt("return",Promise.resolve(r));case 5:return n.abrupt("return",Promise.reject(new nV("AUTH_HELPER-HTR-IV02","authentication-helper","handleTokenResponse","The id token returned is not valid.","The id token returned has failed the validation check.")));case 6:case"end":return n.stop()}}),n,this)})))})).catch((function(t){return Promise.reject(new nV("AUTH_HELPER-HAT-ES03","authentication-helper","handleTokenResponse",void 0,void 0,t))})));case 6:return n={accessToken:t.data.access_token,expiresIn:t.data.expires_in,idToken:t.data.id_token,refreshToken:t.data.refresh_token,scope:t.data.scope,tokenType:t.data.token_type},e.next=9,this._dataLayer.setSessionData(t.data);case 9:return e.abrupt("return",Promise.resolve(n));case 10:case"end":return e.stop()}}),e,this)})))}}]),t}(),uv=function(){function t(e){var n=this;wX(this,t),this._authenticationHelper=new av(e),this._dataLayer=e,this._config=function(){return zf(n,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getConfigData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._oidcProviderMetaData=function(){return zf(n,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}}return FX(t,[{key:"getAuthorizationURL",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){var n,r,i,c,l,o,a,u,d,s,m,h;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaDataParameter("authorization_endpoint");case 2:return n=e.sent,e.next=5,this._config();case 5:if(r=e.sent,n&&0!==n.trim().length){e.next=8;break}throw new nV("AUTH_CORE-GAU-NF01","authentication-core","getAuthorizationURL","No authorization endpoint found.","No authorization endpoint was found in the OIDC provider meta data from the well-known endpoint or the authorization endpoint passed to the SDK is empty.");case 8:if((i=new URL(n)).searchParams.append("response_type","code"),i.searchParams.append("client_id",r.clientID),c="openid",r.scope&&r.scope.length>0&&(r.scope.includes("openid")||r.scope.push("openid"),c=r.scope.join(" ")),i.searchParams.append("scope",c),i.searchParams.append("redirect_uri",r.signInRedirectURL),r.responseMode&&i.searchParams.append("response_mode",r.responseMode),!r.enablePKCE){e.next=17;break}return l=iv.getCodeVerifier(r.runtimeEnvironment),o=iv.getCodeChallenge(l),e.next=15,this._dataLayer.setTemporaryDataParameter("pkce_code_verifier",l);case 15:i.searchParams.append("code_challenge_method","S256"),i.searchParams.append("code_challenge",o);case 17:if(r.prompt&&i.searchParams.append("prompt",r.prompt),a=t)for(u=0,d=Object.entries(a);u<d.length;u++)s=$X(d[u],2),m=s[0],h=s[1],""!=m&&""!=h&&i.searchParams.append(m,h.toString());return e.abrupt("return",i.toString());case 21:case"end":return e.stop()}}),e,this)})))}},{key:"requestAccessToken",value:function(t,e){return zf(this,void 0,void 0,zX.mark((function n(){var r,i,c,l,o=this;return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._oidcProviderMetaData();case 2:return r=n.sent.token_endpoint,n.next=5,this._config();case 5:if(i=n.sent,r&&0!==r.trim().length){n.next=8;break}return n.abrupt("return",Promise.reject(new nV("AUTH_CORE-RAT1-NF01","authentication-core","requestAccessToken","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.")));case 8:if(n.t0=e,!n.t0){n.next=12;break}return n.next=12,this._dataLayer.setSessionDataParameter("session_state",e);case 12:if((c=[]).push("client_id=".concat(i.clientID)),i.clientSecret&&i.clientSecret.trim().length>0&&c.push("client_secret=".concat(i.clientSecret)),l=t,c.push("code=".concat(l)),c.push("grant_type=authorization_code"),c.push("redirect_uri=".concat(i.signInRedirectURL)),n.t1=i.enablePKCE,!n.t1){n.next=29;break}return n.t2=c,n.t3="code_verifier=",n.next=24,this._dataLayer.getTemporaryDataParameter("pkce_code_verifier");case 24:return n.t4=n.sent,n.t5=n.t3.concat.call(n.t3,n.t4),n.t2.push.call(n.t2,n.t5),n.next=29,this._dataLayer.removeTemporaryDataParameter("pkce_code_verifier");case 29:return n.abrupt("return",Nf.post(r,c.join("&"),{headers:cv.getTokenRequestHeaders(),withCredentials:i.sendCookiesInRequests}).then((function(t){return o._authenticationHelper.handleTokenResponse(t).then((function(t){return t})).catch((function(t){return Promise.reject(new nV("AUTH_CORE-RAT1-ES02","authentication-core","requestAccessToken",void 0,void 0,t))}))})).catch((function(t){var e,n,r;return Promise.reject(new rV("AUTH_CORE-RAT1-NR03","authentication-core","requestAccessToken","Requesting access token failed","The request to get the access token from the server failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.data))})));case 30:case"end":return n.stop()}}),n,this)})))}},{key:"refreshAccessToken",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){var e,n,r,i,c=this;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return e=t.sent.token_endpoint,t.next=5,this._config();case 5:return n=t.sent,t.next=8,this._dataLayer.getSessionData();case 8:if((r=t.sent).refresh_token){t.next=11;break}return t.abrupt("return",Promise.reject(new nV("AUTH_CORE-RAT2-NF01","authentication-core","refreshAccessToken","No refresh token found.","There was no refresh token found. Asgardeo doesn't return a refresh token if the refresh token grant is not enabled.")));case 11:if(e&&0!==e.trim().length){t.next=13;break}return t.abrupt("return",Promise.reject(new nV("AUTH_CORE-RAT2-NF02","authentication-core","refreshAccessToken","No refresh token endpoint found.","No refresh token endpoint was in the OIDC provider meta data returned by the well-known endpoint or the refresh token endpoint passed to the SDK is empty.")));case 13:return i=[],t.abrupt("return",(i.push("client_id=".concat(n.clientID)),i.push("refresh_token=".concat(r.refresh_token)),i.push("grant_type=refresh_token"),n.clientSecret&&n.clientSecret.trim().length>0&&i.push("client_secret=".concat(n.clientSecret)),Nf.post(e,i.join("&"),{headers:cv.getTokenRequestHeaders(),withCredentials:n.sendCookiesInRequests}).then((function(t){return c._authenticationHelper.handleTokenResponse(t).then((function(t){return t})).catch((function(t){return Promise.reject(new nV("AUTH_CORE-RAT2-ES03","authentication-core","refreshAccessToken",void 0,void 0,t))}))})).catch((function(t){var e,n,r;return Promise.reject(new rV("AUTH_CORE-RAT2-NR03","authentication-core","refreshAccessToken","Refresh access token request failed.","The request to refresh the access token failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.data))}))));case 15:case"end":return t.stop()}}),t,this)})))}},{key:"revokeAccessToken",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){var e,n,r,i=this;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return e=t.sent.revocation_endpoint,t.next=5,this._config();case 5:if(n=t.sent,e&&0!==e.trim().length){t.next=8;break}return t.abrupt("return",Promise.reject(new nV("AUTH_CORE-RAT3-NF01","authentication-core","revokeAccessToken","No revoke access token endpoint found.","No revoke access token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the revoke access token endpoint passed to the SDK is empty.")));case 8:return(r=[]).push("client_id=".concat(n.clientID)),t.t0=r,t.t1="token=",t.next=14,this._dataLayer.getSessionData();case 14:return t.t2=t.sent.access_token,t.t3=t.t1.concat.call(t.t1,t.t2),t.t0.push.call(t.t0,t.t3),r.push("token_type_hint=access_token"),t.abrupt("return",Nf.post(e,r.join("&"),{headers:cv.getTokenRequestHeaders(),withCredentials:n.sendCookiesInRequests}).then((function(t){return 200!==t.status?Promise.reject(new nV("AUTH_CORE-RAT3-NR02","authentication-core","revokeAccessToken","Invalid response status received for revoke access token request.","The request sent to revoke the access token returned "+t.status+" , which is invalid.")):(i._authenticationHelper.clearUserSessionData(),Promise.resolve(t))})).catch((function(t){var e,n,r;return Promise.reject(new rV("AUTH_CORE-RAT3-NR03","authentication-core","revokeAccessToken","The request to revoke access token failed.","The request sent to revoke the access token failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.data))})));case 19:case"end":return t.stop()}}),t,this)})))}},{key:"requestCustomGrant",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){var n,r,i,c,l=this;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._oidcProviderMetaData();case 2:return n=e.sent,e.next=5,this._config();case 5:if(r=e.sent,(i=t.tokenEndpoint&&0!==t.tokenEndpoint.trim().length?t.tokenEndpoint:n.token_endpoint)&&0!==i.trim().length){e.next=8;break}return e.abrupt("return",Promise.reject(new nV("AUTH_CORE-RCG-NF01","authentication-core","requestCustomGrant","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.")));case 8:return e.next=10,Promise.all(Object.entries(t.data).map((function(t){var e=$X(t,2),n=e[0],r=e[1];return zf(l,void 0,void 0,zX.mark((function t(){var e;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationHelper.replaceCustomGrantTemplateTags(r);case 2:return e=t.sent,t.abrupt("return","".concat(n,"=").concat(e));case 4:case"end":return t.stop()}}),t,this)})))})));case 10:if(e.t0=e.sent.join("&"),e.t1=Object.assign({},cv.getTokenRequestHeaders()),e.t2=i,e.t3=r.sendCookiesInRequests,c={data:e.t0,headers:e.t1,method:"POST",url:e.t2,withCredentials:e.t3},e.t4=t.attachToken,!e.t4){e.next=26;break}return e.t5=Object,e.t6=Object.assign({},c.headers),e.t7="Bearer ",e.next=22,this._dataLayer.getSessionData();case 22:e.t8=e.sent.access_token,e.t9=e.t7.concat.call(e.t7,e.t8),e.t10={Authorization:e.t9},c.headers=e.t5.assign.call(e.t5,e.t6,e.t10);case 26:return e.abrupt("return",Nf(c).then((function(e){return 200!==e.status?Promise.reject(new nV("AUTH_CORE-RCG-NR02","authentication-core","requestCustomGrant","Invalid response status received for the custom grant request.","The request sent to get the custom grant returned "+e.status+" , which is invalid.")):t.returnsSession?l._authenticationHelper.handleTokenResponse(e).then((function(t){return t})).catch((function(t){return Promise.reject(new nV("AUTH_CORE-RCG-ES03","authentication-core","requestCustomGrant",void 0,void 0,t))})):Promise.resolve(e)})).catch((function(t){var e,n,r;return Promise.reject(new rV("AUTH_CORE-RCG-NR04","authentication-core","requestCustomGrant","The custom grant request failed.","The request sent to get the custom grant failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.data))})));case 27:case"end":return e.stop()}}),e,this)})))}},{key:"getBasicUserInfo",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){var e,n,r;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:return e=t.sent,n=cv.getAuthenticatedUserInfo(null==e?void 0:e.id_token),r={allowedScopes:e.scope,sessionState:e.session_state},t.abrupt("return",(Object.keys(n).forEach((function(t){void 0!==n[t]&&""!==n[t]&&null!==n[t]||delete n[t]})),r=Object.assign(Object.assign({},r),n)));case 6:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){var e;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:return e=t.sent.id_token,t.abrupt("return",iv.decodeIDToken(e));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:return t.abrupt("return",t.sent.id_token);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaData",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){var n,r=this;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.t0=!t,!e.t0){e.next=5;break}return e.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:e.t0=e.sent;case 5:if(!e.t0){e.next=7;break}return e.abrupt("return",Promise.resolve(!0));case 7:return e.next=9,this._authenticationHelper.resolveWellKnownEndpoint();case 9:return n=e.sent,e.abrupt("return",Nf.get(n).then((function(t){return zf(r,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(200===t.status){e.next=4;break}e.t0=Promise.reject(new nV("AUTH_CORE-GOPM-NR01","authentication-core","getOIDCProviderMetaData","Invalid response status received for OIDC provider meta data request.","The request sent to the well-known endpoint to get the OIDC provider meta data returned "+t.status+" , which is invalid.")),e.next=13;break;case 4:return e.t1=this._dataLayer,e.next=7,this._authenticationHelper.resolveEndpoints(t.data);case 7:return e.t2=e.sent,e.next=10,e.t1.setOIDCProviderMetaData.call(e.t1,e.t2);case 10:return e.next=12,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 12:e.t0=Promise.resolve(!0);case 13:return e.abrupt("return",e.t0);case 14:case"end":return e.stop()}}),e,this)})))})).catch((function(){return zf(r,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=this._dataLayer,t.next=3,this._authenticationHelper.resolveFallbackEndpoints();case 3:return t.t1=t.sent,t.next=6,t.t0.setOIDCProviderMetaData.call(t.t0,t.t1);case 6:return t.next=8,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 8:return t.abrupt("return",Promise.resolve(!0));case 9:case"end":return t.stop()}}),t,this)})))})));case 11:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){var e;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return e=t.sent,t.t0=e.authorization_endpoint,t.t1=e.check_session_iframe,t.t2=e.end_session_endpoint,t.t3=e.introspection_endpoint,t.t4=e.issuer,t.t5=e.jwks_uri,t.t6=e.registration_endpoint,t.t7=e.revocation_endpoint,t.t8=e.token_endpoint,t.t9=e.userinfo_endpoint,t.next=15,this._authenticationHelper.resolveWellKnownEndpoint();case 15:return t.t10=t.sent,t.abrupt("return",{authorizationEndpoint:t.t0,checkSessionIframe:t.t1,endSessionEndpoint:t.t2,introspectionEndpoint:t.t3,issuer:t.t4,jwksUri:t.t5,registrationEndpoint:t.t6,revocationEndpoint:t.t7,tokenEndpoint:t.t8,userinfoEndpoint:t.t9,wellKnownEndpoint:t.t10});case 17:case"end":return t.stop()}}),t,this)})))}},{key:"getSignOutURL",value:function(){var t,e,n;return zf(this,void 0,void 0,zX.mark((function r(){var i,c,l,o;return zX.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._oidcProviderMetaData();case 2:if(r.t1=t=r.sent,r.t0=null===r.t1,r.t0){r.next=6;break}r.t0=void 0===t;case 6:if(!r.t0){r.next=10;break}r.t2=void 0,r.next=11;break;case 10:r.t2=t.end_session_endpoint;case 11:return i=r.t2,r.next=14,this._config();case 14:if(c=r.sent,i&&0!==i.trim().length){r.next=17;break}throw new nV("AUTH_CORE-GSOU-NF01","authentication-core","getSignOutURL","Sign-out endpoint not found.","No sign-out endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the sign-out endpoint passed to the SDK is empty.");case 17:return r.next=19,this._dataLayer.getSessionData();case 19:if(r.t4=e=r.sent,r.t3=null===r.t4,r.t3){r.next=23;break}r.t3=void 0===e;case 23:if(!r.t3){r.next=27;break}r.t5=void 0,r.next=28;break;case 27:r.t5=e.id_token;case 28:if((l=r.t5)&&0!==l.trim().length){r.next=31;break}throw new nV("AUTH_CORE-GSOU-NF02","authentication-core","getSignOutURL","ID token not found.","No ID token could be found. Either the session information is lost or you have not signed in.");case 31:if((o=null!==(n=null==c?void 0:c.signOutRedirectURL)&&void 0!==n?n:null==c?void 0:c.signInRedirectURL)&&0!==o.trim().length){r.next=34;break}throw new nV("AUTH_CORE-GSOU-NF03","authentication-core","getSignOutURL","No sign-out redirect URL found.","The sign-out redirect URL cannot be found or the URL passed to the SDK is empty. No sign-in redirect URL has been found either. ");case 34:return r.abrupt("return","".concat(i,"?id_token_hint=").concat(l,"&post_logout_redirect_uri=").concat(o,"&state=sign_out_success"));case 35:case"end":return r.stop()}}),r,this)})))}},{key:"signOut",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){var e;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getSignOutURL();case 2:return e=t.sent,t.abrupt("return",(this._authenticationHelper.clearUserSessionData(),e));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(){var t;return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData();case 2:if(e.t1=t=e.sent,e.t0=null===e.t1,e.t0){e.next=6;break}e.t0=void 0===t;case 6:if(!e.t0){e.next=10;break}e.t2=void 0,e.next=11;break;case 10:e.t2=t.access_token;case 11:return e.abrupt("return",e.t2);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"isAuthenticated",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=Boolean,t.next=3,this.getAccessToken();case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter("pkce_code_verifier");case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"setPKCECode",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setTemporaryDataParameter("pkce_code_verifier",t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))}},{key:"updateConfig",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setConfigData(t);case 2:if(!t.overrideWellEndpointConfig){e.next=13;break}if(e.t0=null==t?void 0:t.endpoints,!e.t0){e.next=11;break}return e.t1=this._dataLayer,e.next=8,this._authenticationHelper.resolveEndpoints({});case 8:return e.t2=e.sent,e.next=11,e.t1.setOIDCProviderMetaData.call(e.t1,e.t2);case 11:e.next=17;break;case 13:if(e.t3=null==t?void 0:t.endpoints,!e.t3){e.next=17;break}return e.next=17,this.getOIDCProviderMetaData(!0);case 17:case"end":return e.stop()}}),e,this)})))}}]),t}(),dv=function(){function t(e,n){wX(this,t),this._id=e,this._store=n}return FX(t,[{key:"setDataInBulk",value:function(t,e){var n;return zf(this,void 0,void 0,zX.mark((function r(){var i,c,l,o;return zX.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(t);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),l=Object.assign(Object.assign({},c),e),o=JSON.stringify(l),r.next=17,this._store.setData(t,o);case 17:case"end":return r.stop()}}),r,this)})))}},{key:"setValue",value:function(t,e,n){var r;return zf(this,void 0,void 0,zX.mark((function i(){var c,l,o,a;return zX.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(t);case 2:if(i.t1=r=i.sent,i.t0=null!==i.t1,!i.t0){i.next=6;break}i.t0=void 0!==r;case 6:if(!i.t0){i.next=10;break}i.t2=r,i.next=11;break;case 10:i.t2=null;case 11:return c=i.t2,l=c&&JSON.parse(c),o=Object.assign(Object.assign({},l),eG({},e,n)),a=JSON.stringify(o),i.next=17,this._store.setData(t,a);case 17:case"end":return i.stop()}}),i,this)})))}},{key:"removeValue",value:function(t,e){var n;return zf(this,void 0,void 0,zX.mark((function r(){var i,c,l,o;return zX.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(t);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),delete(l=Object.assign({},c))[e],o=JSON.stringify(l),r.next=18,this._store.setData(t,o);case 18:case"end":return r.stop()}}),r,this)})))}},{key:"_resolveKey",value:function(t){return"".concat(t,"-").concat(this._id)}},{key:"setConfigData",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.setDataInBulk(this._resolveKey(Bf.ConfigData),t);case 2:case"end":return e.stop()}}),e,this)})))}},{key:"setOIDCProviderMetaData",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.setDataInBulk(this._resolveKey(Bf.OIDCProviderMetaData),t);case 1:case"end":return e.stop()}}),e,this)})))}},{key:"setTemporaryData",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.setDataInBulk(this._resolveKey(Bf.TemporaryData),t);case 1:case"end":return e.stop()}}),e,this)})))}},{key:"setSessionData",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.setDataInBulk(this._resolveKey(Bf.SessionData),t);case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getConfigData",value:function(){var t;return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=JSON,e.next=3,this._store.getData(this._resolveKey(Bf.ConfigData));case 3:if(e.t2=t=e.sent,e.t1=null!==e.t2,!e.t1){e.next=7;break}e.t1=void 0!==t;case 7:if(!e.t1){e.next=11;break}e.t3=t,e.next=12;break;case 11:e.t3=null;case 12:return e.t4=e.t3,e.abrupt("return",e.t0.parse.call(e.t0,e.t4));case 14:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCProviderMetaData",value:function(){var t;return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=JSON,e.next=3,this._store.getData(this._resolveKey(Bf.OIDCProviderMetaData));case 3:if(e.t2=t=e.sent,e.t1=null!==e.t2,!e.t1){e.next=7;break}e.t1=void 0!==t;case 7:if(!e.t1){e.next=11;break}e.t3=t,e.next=12;break;case 11:e.t3=null;case 12:return e.t4=e.t3,e.abrupt("return",e.t0.parse.call(e.t0,e.t4));case 14:case"end":return e.stop()}}),e,this)})))}},{key:"getTemporaryData",value:function(){var t;return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=JSON,e.next=3,this._store.getData(this._resolveKey(Bf.TemporaryData));case 3:if(e.t2=t=e.sent,e.t1=null!==e.t2,!e.t1){e.next=7;break}e.t1=void 0!==t;case 7:if(!e.t1){e.next=11;break}e.t3=t,e.next=12;break;case 11:e.t3=null;case 12:return e.t4=e.t3,e.abrupt("return",e.t0.parse.call(e.t0,e.t4));case 14:case"end":return e.stop()}}),e,this)})))}},{key:"getSessionData",value:function(){var t;return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=JSON,e.next=3,this._store.getData(this._resolveKey(Bf.SessionData));case 3:if(e.t2=t=e.sent,e.t1=null!==e.t2,!e.t1){e.next=7;break}e.t1=void 0!==t;case 7:if(!e.t1){e.next=11;break}e.t3=t,e.next=12;break;case 11:e.t3=null;case 12:return e.t4=e.t3,e.abrupt("return",e.t0.parse.call(e.t0,e.t4));case 14:case"end":return e.stop()}}),e,this)})))}},{key:"removeConfigData",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(Bf.ConfigData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(Bf.OIDCProviderMetaData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeTemporaryData",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(Bf.TemporaryData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeSessionData",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(Bf.SessionData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"getConfigDataParameter",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){var n;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.getData(this._resolveKey(Bf.ConfigData));case 2:return n=e.sent,e.abrupt("return",n&&JSON.parse(n)[t]);case 4:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCProviderMetaDataParameter",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){var n;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.getData(this._resolveKey(Bf.OIDCProviderMetaData));case 2:return n=e.sent,e.abrupt("return",n&&JSON.parse(n)[t]);case 4:case"end":return e.stop()}}),e,this)})))}},{key:"getTemporaryDataParameter",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){var n;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.getData(this._resolveKey(Bf.TemporaryData));case 2:return n=e.sent,e.abrupt("return",n&&JSON.parse(n)[t]);case 4:case"end":return e.stop()}}),e,this)})))}},{key:"getSessionDataParameter",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){var n;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.getData(this._resolveKey(Bf.SessionData));case 2:return n=e.sent,e.abrupt("return",n&&JSON.parse(n)[t]);case 4:case"end":return e.stop()}}),e,this)})))}},{key:"setConfigDataParameter",value:function(t,e){return zf(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(Bf.ConfigData),t,e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(t,e){return zf(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(Bf.OIDCProviderMetaData),t,e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryDataParameter",value:function(t,e){return zf(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(Bf.TemporaryData),t,e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setSessionDataParameter",value:function(t,e){return zf(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(Bf.SessionData),t,e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeConfigDataParameter",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.removeValue(this._resolveKey(Bf.ConfigData),t);case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.removeValue(this._resolveKey(Bf.OIDCProviderMetaData),t);case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeTemporaryDataParameter",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.removeValue(this._resolveKey(Bf.TemporaryData),t);case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeSessionDataParameter",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.removeValue(this._resolveKey(Bf.SessionData),t);case 2:case"end":return e.stop()}}),e,this)})))}}]),t}(),sv={clockTolerance:300,enablePKCE:!0,responseMode:xf.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},mv=function(){
15
+ ***************************************************************************** */();return function(){var n,i=sg(t);if(e){var r=sg(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return ug(this,n)}}function Bf(t,e,n,i){return new(n||(n=Promise))((function(r,c){function l(t){try{a(i.next(t))}catch(t){c(t)}}function o(t){try{a(i.throw(t))}catch(t){c(t)}}function a(t){var e;t.done?r(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(l,o)}a((i=i.apply(t,e||[])).next())}))}(Hf=xf||(xf={})).formPost="form_post",Hf.query="query";var zf,jf="{{token}}",Af="{{username}}",Mf="{{scope}}",Pf="{{clientID}}",Qf="{{clientSecret}}";!function(t){t.ConfigData="config_data",t.OIDCProviderMetaData="oidc_provider_meta_data",t.SessionData="session_data",t.TemporaryData="temporary_data"}(zf||(zf={}));var Df="refresh_token_timer",Ef="pkce_code_verifier",Of="code",_f="session_state",qf="sign_out_url",$f="sign_out_success",tV="openid",eV=function(t){og(n,t);var e=Ff(n);function n(t,i,r,c,l,o){var a;return wX(this,n),(a=e.call(this,null!=c?c:null==o?void 0:o.message)).name=a.constructor.name,a.code=t,a.file=i,a.method=r,a.description=l,a.error=o,Object.setPrototypeOf(cg(a),(this instanceof n?this.constructor:void 0).prototype),a}return n}(pg(Error)),nV=function(t){og(n,eV);var e=Ff(n);function n(t,i,r,c,l,o,a,u,d){var s;return wX(this,n),(s=e.call(this,t,i,r,c,l)).name=s.constructor.name,s.code=t,s.file=i,s.method=r,s.description=l,s.networkErrorCode=o,s.networkErrorMessage=a,s.status=u,s.networkErrorData=d,s}return n}(),iV="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==yg?yg:"undefined"!=typeof self?self:{};function rV(t,e,n){return t(n={path:e,exports:{},require:function(t,e){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==e&&n.path)}},n.exports),n.exports}var cV=void 0!==yg?yg:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},lV=[],oV=[],aV="undefined"!=typeof Uint8Array?Uint8Array:Array,uV=!1;function dV(){uV=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,n=t.length;e<n;++e)lV[e]=t[e],oV[t.charCodeAt(e)]=e;oV["-".charCodeAt(0)]=62,oV["_".charCodeAt(0)]=63}function sV(t,e,n){for(var i,r,c=[],l=e;l<n;l+=3)i=(t[l]<<16)+(t[l+1]<<8)+t[l+2],c.push(lV[(r=i)>>18&63]+lV[r>>12&63]+lV[r>>6&63]+lV[63&r]);return c.join("")}function mV(t){var e;uV||dV();for(var n=t.length,i=n%3,r="",c=[],l=16383,o=0,a=n-i;o<a;o+=l)c.push(sV(t,o,o+l>a?a:o+l));return 1===i?(e=t[n-1],r+=lV[e>>2],r+=lV[e<<4&63],r+="=="):2===i&&(e=(t[n-2]<<8)+t[n-1],r+=lV[e>>10],r+=lV[e>>4&63],r+=lV[e<<2&63],r+="="),c.push(r),c.join("")}function hV(t,e,n,i,r){var c,l,o=8*r-i-1,a=(1<<o)-1,u=a>>1,d=-7,s=n?r-1:0,m=n?-1:1,h=t[e+s];for(s+=m,c=h&(1<<-d)-1,h>>=-d,d+=o;d>0;c=256*c+t[e+s],s+=m,d-=8);for(l=c&(1<<-d)-1,c>>=-d,d+=i;d>0;l=256*l+t[e+s],s+=m,d-=8);if(0===c)c=1-u;else{if(c===a)return l?NaN:1/0*(h?-1:1);l+=Math.pow(2,i),c-=u}return(h?-1:1)*l*Math.pow(2,c-i)}function bV(t,e,n,i,r,c){var l,o,a,u=8*c-r-1,d=(1<<u)-1,s=d>>1,m=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,h=i?0:c-1,b=i?1:-1,Z=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,l=d):(l=Math.floor(Math.log(e)/Math.LN2),e*(a=Math.pow(2,-l))<1&&(l--,a*=2),(e+=l+s>=1?m/a:m*Math.pow(2,1-s))*a>=2&&(l++,a/=2),l+s>=d?(o=0,l=d):l+s>=1?(o=(e*a-1)*Math.pow(2,r),l+=s):(o=e*Math.pow(2,s-1)*Math.pow(2,r),l=0));r>=8;t[n+h]=255&o,h+=b,o/=256,r-=8);for(l=l<<r|o,u+=r;u>0;t[n+h]=255&l,h+=b,l/=256,u-=8);t[n+h-b]|=128*Z}var ZV={}.toString,pV=Array.isArray||function(t){return"[object Array]"==ZV.call(t)};gV.TYPED_ARRAY_SUPPORT=void 0===cV.TYPED_ARRAY_SUPPORT||cV.TYPED_ARRAY_SUPPORT;var yV=IV();function IV(){return gV.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function XV(t,e){if(IV()<e)throw new RangeError("Invalid typed array length");return gV.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=gV.prototype:(null===t&&(t=new gV(e)),t.length=e),t}function gV(t,e,n){if(!(gV.TYPED_ARRAY_SUPPORT||this instanceof gV))return new gV(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return VV(this,t)}return GV(this,t,e,n)}function GV(t,e,n,i){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,i){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(i||0))throw new RangeError("'length' is out of bounds");return e=void 0===n&&void 0===i?new Uint8Array(e):void 0===i?new Uint8Array(e,n):new Uint8Array(e,n,i),gV.TYPED_ARRAY_SUPPORT?(t=e).__proto__=gV.prototype:t=WV(t,e),t}(t,e,n,i):"string"==typeof e?function(t,e,n){if("string"==typeof n&&""!==n||(n="utf8"),!gV.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var i=0|CV(e,n),r=(t=XV(t,i)).write(e,n);return r!==i&&(t=t.slice(0,r)),t}(t,e,n):function(t,e){if(SV(e)){var n=0|vV(e.length);return 0===(t=XV(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(i=e.length)!=i?XV(t,0):WV(t,e);if("Buffer"===e.type&&pV(e.data))return WV(t,e.data)}var i;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function fV(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function VV(t,e){if(fV(e),t=XV(t,e<0?0:0|vV(e)),!gV.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function WV(t,e){var n=e.length<0?0:0|vV(e.length);t=XV(t,n);for(var i=0;i<n;i+=1)t[i]=255&e[i];return t}function vV(t){if(t>=IV())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+IV().toString(16)+" bytes");return 0|t}function SV(t){return!(null==t||!t._isBuffer)}function CV(t,e){if(SV(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return $V(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return tW(t).length;default:if(i)return $V(t).length;e=(""+e).toLowerCase(),i=!0}}function YV(t,e,n){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return zV(this,e,n);case"utf8":case"utf-8":return TV(this,e,n);case"ascii":return FV(this,e,n);case"latin1":case"binary":return BV(this,e,n);case"base64":return wV(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return jV(this,e,n);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function RV(t,e,n){var i=t[e];t[e]=t[n],t[n]=i}function KV(t,e,n,i,r){if(0===t.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=r?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(r)return-1;n=t.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof e&&(e=gV.from(e,i)),SV(e))return 0===e.length?-1:LV(t,e,n,i,r);if("number"==typeof e)return e&=255,gV.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):LV(t,[e],n,i,r);throw new TypeError("val must be string, number or Buffer")}function LV(t,e,n,i,r){var c,l=1,o=t.length,a=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;l=2,o/=2,a/=2,n/=2}function u(t,e){return 1===l?t[e]:t.readUInt16BE(e*l)}if(r){var d=-1;for(c=n;c<o;c++)if(u(t,c)===u(e,-1===d?0:c-d)){if(-1===d&&(d=c),c-d+1===a)return d*l}else-1!==d&&(c-=c-d),d=-1}else for(n+a>o&&(n=o-a),c=n;c>=0;c--){for(var s=!0,m=0;m<a;m++)if(u(t,c+m)!==u(e,m)){s=!1;break}if(s)return c}return-1}function JV(t,e,n,i){n=Number(n)||0;var r=t.length-n;i?(i=Number(i))>r&&(i=r):i=r;var c=e.length;if(c%2!=0)throw new TypeError("Invalid hex string");i>c/2&&(i=c/2);for(var l=0;l<i;++l){var o=parseInt(e.substr(2*l,2),16);if(isNaN(o))return l;t[n+l]=o}return l}function xV(t,e,n,i){return eW($V(e,t.length-n),t,n,i)}function HV(t,e,n,i){return eW(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,i)}function NV(t,e,n,i){return HV(t,e,n,i)}function kV(t,e,n,i){return eW(tW(e),t,n,i)}function UV(t,e,n,i){return eW(function(t,e){for(var n,i,r,c=[],l=0;l<t.length&&!((e-=2)<0);++l)i=(n=t.charCodeAt(l))>>8,r=n%256,c.push(r),c.push(i);return c}(e,t.length-n),t,n,i)}function wV(t,e,n){return 0===e&&n===t.length?mV(t):mV(t.slice(e,n))}function TV(t,e,n){n=Math.min(t.length,n);for(var i=[],r=e;r<n;){var c,l,o,a,u=t[r],d=null,s=u>239?4:u>223?3:u>191?2:1;if(r+s<=n)switch(s){case 1:u<128&&(d=u);break;case 2:128==(192&(c=t[r+1]))&&(a=(31&u)<<6|63&c)>127&&(d=a);break;case 3:c=t[r+1],l=t[r+2],128==(192&c)&&128==(192&l)&&(a=(15&u)<<12|(63&c)<<6|63&l)>2047&&(a<55296||a>57343)&&(d=a);break;case 4:c=t[r+1],l=t[r+2],o=t[r+3],128==(192&c)&&128==(192&l)&&128==(192&o)&&(a=(15&u)<<18|(63&c)<<12|(63&l)<<6|63&o)>65535&&a<1114112&&(d=a)}null===d?(d=65533,s=1):d>65535&&(d-=65536,i.push(d>>>10&1023|55296),d=56320|1023&d),i.push(d),r+=s}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);for(var n="",i=0;i<e;)n+=String.fromCharCode.apply(String,t.slice(i,i+=4096));return n}(i)}function FV(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(127&t[r]);return i}function BV(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;r<n;++r)i+=String.fromCharCode(t[r]);return i}function zV(t,e,n){var i=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>i)&&(n=i);for(var r="",c=e;c<n;++c)r+=qV(t[c]);return r}function jV(t,e,n){for(var i=t.slice(e,n),r="",c=0;c<i.length;c+=2)r+=String.fromCharCode(i[c]+256*i[c+1]);return r}function AV(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function MV(t,e,n,i,r,c){if(!SV(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>r||e<c)throw new RangeError('"value" argument is out of bounds');if(n+i>t.length)throw new RangeError("Index out of range")}function PV(t,e,n,i){e<0&&(e=65535+e+1);for(var r=0,c=Math.min(t.length-n,2);r<c;++r)t[n+r]=(e&255<<8*(i?r:1-r))>>>8*(i?r:1-r)}function QV(t,e,n,i){e<0&&(e=4294967295+e+1);for(var r=0,c=Math.min(t.length-n,4);r<c;++r)t[n+r]=e>>>8*(i?r:3-r)&255}function DV(t,e,n,i,r,c){if(n+i>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function EV(t,e,n,i,r){return r||DV(t,0,n,4),bV(t,e,n,i,23,4),n+4}function OV(t,e,n,i,r){return r||DV(t,0,n,8),bV(t,e,n,i,52,8),n+8}gV.poolSize=8192,gV._augment=function(t){return t.__proto__=gV.prototype,t},gV.from=function(t,e,n){return GV(null,t,e,n)},gV.TYPED_ARRAY_SUPPORT&&(gV.prototype.__proto__=Uint8Array.prototype,gV.__proto__=Uint8Array),gV.alloc=function(t,e,n){return function(t,e,n,i){return fV(e),e<=0?XV(t,e):void 0!==n?"string"==typeof i?XV(t,e).fill(n,i):XV(t,e).fill(n):XV(t,e)}(null,t,e,n)},gV.allocUnsafe=function(t){return VV(null,t)},gV.allocUnsafeSlow=function(t){return VV(null,t)},gV.isBuffer=nW,gV.compare=function(t,e){if(!SV(t)||!SV(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,i=e.length,r=0,c=Math.min(n,i);r<c;++r)if(t[r]!==e[r]){n=t[r],i=e[r];break}return n<i?-1:i<n?1:0},gV.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},gV.concat=function(t,e){if(!pV(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return gV.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var i=gV.allocUnsafe(e),r=0;for(n=0;n<t.length;++n){var c=t[n];if(!SV(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(i,r),r+=c.length}return i},gV.byteLength=CV,gV.prototype._isBuffer=!0,gV.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)RV(this,e,e+1);return this},gV.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)RV(this,e,e+3),RV(this,e+1,e+2);return this},gV.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)RV(this,e,e+7),RV(this,e+1,e+6),RV(this,e+2,e+5),RV(this,e+3,e+4);return this},gV.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?TV(this,0,t):YV.apply(this,arguments)},gV.prototype.equals=function(t){if(!SV(t))throw new TypeError("Argument must be a Buffer");return this===t||0===gV.compare(this,t)},gV.prototype.inspect=function(){var t="";return this.length>0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),"<Buffer "+t+">"},gV.prototype.compare=function(t,e,n,i,r){if(!SV(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),e<0||n>t.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&e>=n)return 0;if(i>=r)return-1;if(e>=n)return 1;if(this===t)return 0;for(var c=(r>>>=0)-(i>>>=0),l=(n>>>=0)-(e>>>=0),o=Math.min(c,l),a=this.slice(i,r),u=t.slice(e,n),d=0;d<o;++d)if(a[d]!==u[d]){c=a[d],l=u[d];break}return c<l?-1:l<c?1:0},gV.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},gV.prototype.indexOf=function(t,e,n){return KV(this,t,e,n,!0)},gV.prototype.lastIndexOf=function(t,e,n){return KV(this,t,e,n,!1)},gV.prototype.write=function(t,e,n,i){if(void 0===e)i="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)i=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===i&&(i="utf8")):(i=n,n=void 0)}var r=this.length-e;if((void 0===n||n>r)&&(n=r),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var c=!1;;)switch(i){case"hex":return JV(this,t,e,n);case"utf8":case"utf-8":return xV(this,t,e,n);case"ascii":return HV(this,t,e,n);case"latin1":case"binary":return NV(this,t,e,n);case"base64":return kV(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return UV(this,t,e,n);default:if(c)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),c=!0}},gV.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},gV.prototype.slice=function(t,e){var n,i=this.length;if((t=~~t)<0?(t+=i)<0&&(t=0):t>i&&(t=i),(e=void 0===e?i:~~e)<0?(e+=i)<0&&(e=0):e>i&&(e=i),e<t&&(e=t),gV.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=gV.prototype;else{var r=e-t;n=new gV(r,void 0);for(var c=0;c<r;++c)n[c]=this[c+t]}return n},gV.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||AV(t,e,this.length);for(var i=this[t],r=1,c=0;++c<e&&(r*=256);)i+=this[t+c]*r;return i},gV.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||AV(t,e,this.length);for(var i=this[t+--e],r=1;e>0&&(r*=256);)i+=this[t+--e]*r;return i},gV.prototype.readUInt8=function(t,e){return e||AV(t,1,this.length),this[t]},gV.prototype.readUInt16LE=function(t,e){return e||AV(t,2,this.length),this[t]|this[t+1]<<8},gV.prototype.readUInt16BE=function(t,e){return e||AV(t,2,this.length),this[t]<<8|this[t+1]},gV.prototype.readUInt32LE=function(t,e){return e||AV(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},gV.prototype.readUInt32BE=function(t,e){return e||AV(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},gV.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||AV(t,e,this.length);for(var i=this[t],r=1,c=0;++c<e&&(r*=256);)i+=this[t+c]*r;return i>=(r*=128)&&(i-=Math.pow(2,8*e)),i},gV.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||AV(t,e,this.length);for(var i=e,r=1,c=this[t+--i];i>0&&(r*=256);)c+=this[t+--i]*r;return c>=(r*=128)&&(c-=Math.pow(2,8*e)),c},gV.prototype.readInt8=function(t,e){return e||AV(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},gV.prototype.readInt16LE=function(t,e){e||AV(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},gV.prototype.readInt16BE=function(t,e){e||AV(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},gV.prototype.readInt32LE=function(t,e){return e||AV(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},gV.prototype.readInt32BE=function(t,e){return e||AV(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},gV.prototype.readFloatLE=function(t,e){return e||AV(t,4,this.length),hV(this,t,!0,23,4)},gV.prototype.readFloatBE=function(t,e){return e||AV(t,4,this.length),hV(this,t,!1,23,4)},gV.prototype.readDoubleLE=function(t,e){return e||AV(t,8,this.length),hV(this,t,!0,52,8)},gV.prototype.readDoubleBE=function(t,e){return e||AV(t,8,this.length),hV(this,t,!1,52,8)},gV.prototype.writeUIntLE=function(t,e,n,i){t=+t,e|=0,n|=0,i||MV(this,t,e,n,Math.pow(2,8*n)-1,0);var r=1,c=0;for(this[e]=255&t;++c<n&&(r*=256);)this[e+c]=t/r&255;return e+n},gV.prototype.writeUIntBE=function(t,e,n,i){t=+t,e|=0,n|=0,i||MV(this,t,e,n,Math.pow(2,8*n)-1,0);var r=n-1,c=1;for(this[e+r]=255&t;--r>=0&&(c*=256);)this[e+r]=t/c&255;return e+n},gV.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||MV(this,t,e,1,255,0),gV.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},gV.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||MV(this,t,e,2,65535,0),gV.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):PV(this,t,e,!0),e+2},gV.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||MV(this,t,e,2,65535,0),gV.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):PV(this,t,e,!1),e+2},gV.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||MV(this,t,e,4,4294967295,0),gV.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):QV(this,t,e,!0),e+4},gV.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||MV(this,t,e,4,4294967295,0),gV.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):QV(this,t,e,!1),e+4},gV.prototype.writeIntLE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);MV(this,t,e,n,r-1,-r)}var c=0,l=1,o=0;for(this[e]=255&t;++c<n&&(l*=256);)t<0&&0===o&&0!==this[e+c-1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},gV.prototype.writeIntBE=function(t,e,n,i){if(t=+t,e|=0,!i){var r=Math.pow(2,8*n-1);MV(this,t,e,n,r-1,-r)}var c=n-1,l=1,o=0;for(this[e+c]=255&t;--c>=0&&(l*=256);)t<0&&0===o&&0!==this[e+c+1]&&(o=1),this[e+c]=(t/l>>0)-o&255;return e+n},gV.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||MV(this,t,e,1,127,-128),gV.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},gV.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||MV(this,t,e,2,32767,-32768),gV.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):PV(this,t,e,!0),e+2},gV.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||MV(this,t,e,2,32767,-32768),gV.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):PV(this,t,e,!1),e+2},gV.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||MV(this,t,e,4,2147483647,-2147483648),gV.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):QV(this,t,e,!0),e+4},gV.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||MV(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),gV.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):QV(this,t,e,!1),e+4},gV.prototype.writeFloatLE=function(t,e,n){return EV(this,t,e,!0,n)},gV.prototype.writeFloatBE=function(t,e,n){return EV(this,t,e,!1,n)},gV.prototype.writeDoubleLE=function(t,e,n){return OV(this,t,e,!0,n)},gV.prototype.writeDoubleBE=function(t,e,n){return OV(this,t,e,!1,n)},gV.prototype.copy=function(t,e,n,i){if(n||(n=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i<n&&(i=n),i===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e<i-n&&(i=t.length-e+n);var r,c=i-n;if(this===t&&n<e&&e<i)for(r=c-1;r>=0;--r)t[r+e]=this[r+n];else if(c<1e3||!gV.TYPED_ARRAY_SUPPORT)for(r=0;r<c;++r)t[r+e]=this[r+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+c),e);return c},gV.prototype.fill=function(t,e,n,i){if("string"==typeof t){if("string"==typeof e?(i=e,e=0,n=this.length):"string"==typeof n&&(i=n,n=this.length),1===t.length){var r=t.charCodeAt(0);r<256&&(t=r)}if(void 0!==i&&"string"!=typeof i)throw new TypeError("encoding must be a string");if("string"==typeof i&&!gV.isEncoding(i))throw new TypeError("Unknown encoding: "+i)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var c;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(c=e;c<n;++c)this[c]=t;else{var l=SV(t)?t:$V(new gV(t,i).toString()),o=l.length;for(c=0;c<n-e;++c)this[c+e]=l[c%o]}return this};var _V=/[^+\/0-9A-Za-z-_]/g;function qV(t){return t<16?"0"+t.toString(16):t.toString(16)}function $V(t,e){var n;e=e||1/0;for(var i=t.length,r=null,c=[],l=0;l<i;++l){if((n=t.charCodeAt(l))>55295&&n<57344){if(!r){if(n>56319){(e-=3)>-1&&c.push(239,191,189);continue}if(l+1===i){(e-=3)>-1&&c.push(239,191,189);continue}r=n;continue}if(n<56320){(e-=3)>-1&&c.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(e-=3)>-1&&c.push(239,191,189);if(r=null,n<128){if((e-=1)<0)break;c.push(n)}else if(n<2048){if((e-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function tW(t){return function(t){var e,n,i,r,c,l;uV||dV();var o=t.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===t[o-2]?2:"="===t[o-1]?1:0,l=new aV(3*o/4-c),i=c>0?o-4:o;var a=0;for(e=0,n=0;e<i;e+=4,n+=3)r=oV[t.charCodeAt(e)]<<18|oV[t.charCodeAt(e+1)]<<12|oV[t.charCodeAt(e+2)]<<6|oV[t.charCodeAt(e+3)],l[a++]=r>>16&255,l[a++]=r>>8&255,l[a++]=255&r;return 2===c?(r=oV[t.charCodeAt(e)]<<2|oV[t.charCodeAt(e+1)]>>4,l[a++]=255&r):1===c&&(r=oV[t.charCodeAt(e)]<<10|oV[t.charCodeAt(e+1)]<<4|oV[t.charCodeAt(e+2)]>>2,l[a++]=r>>8&255,l[a++]=255&r),l}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(_V,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function eW(t,e,n,i){for(var r=0;r<i&&!(r+n>=e.length||r>=t.length);++r)e[r+n]=t[r];return r}function nW(t){return null!=t&&(!!t._isBuffer||iW(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&iW(t.slice(0,0))}(t))}function iW(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var rW=Object.freeze({__proto__:null,Buffer:gV,INSPECT_MAX_BYTES:50,SlowBuffer:function(t){return+t!=t&&(t=0),gV.alloc(+t)},isBuffer:nW,kMaxLength:yV}),cW=rV((function(t,e){Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.length,n=e%4;if(!n)return t;var i=e,r=4-n,c=e+r,l=gV.alloc(c);for(l.write(t);r--;)l.write("=",i++);return l.toString()}})),lW=rV((function(t,e){function n(t,e){return void 0===e&&(e="utf8"),gV.isBuffer(t)?r(t.toString("base64")):r(gV.from(t,e).toString("base64"))}function i(t){return t=t.toString(),cW.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function r(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}Object.defineProperty(e,"__esModule",{value:!0});var c=n;c.encode=n,c.decode=function(t,e){return void 0===e&&(e="utf8"),gV.from(i(t),"base64").toString(e)},c.toBase64=i,c.fromBase64=r,c.toBuffer=function(t){return gV.from(i(t),"base64")},e.default=c})),oW=rV((function(t){t.exports=lW.default,t.exports.default=t.exports})),aW=function(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}(rV((function(t){!function(e,n){var i={};!function(t){t.__esModule=!0,t.digestLength=32,t.blockSize=64;var e=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(t,n,i,r,c){for(var l,o,a,u,d,s,m,h,b,Z,p,y,I;c>=64;){for(l=n[0],o=n[1],a=n[2],u=n[3],d=n[4],s=n[5],m=n[6],h=n[7],Z=0;Z<16;Z++)p=r+4*Z,t[Z]=(255&i[p])<<24|(255&i[p+1])<<16|(255&i[p+2])<<8|255&i[p+3];for(Z=16;Z<64;Z++)y=((b=t[Z-2])>>>17|b<<15)^(b>>>19|b<<13)^b>>>10,I=((b=t[Z-15])>>>7|b<<25)^(b>>>18|b<<14)^b>>>3,t[Z]=(y+t[Z-7]|0)+(I+t[Z-16]|0);for(Z=0;Z<64;Z++)y=(((d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&s^~d&m)|0)+(h+(e[Z]+t[Z]|0)|0)|0,I=((l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10))+(l&o^l&a^o&a)|0,h=m,m=s,s=d,d=u+y|0,u=a,a=o,o=l,l=y+I|0;n[0]+=l,n[1]+=o,n[2]+=a,n[3]+=u,n[4]+=d,n[5]+=s,n[6]+=m,n[7]+=h,r+=64,c-=64}return r}var i=function(){function e(){this.digestLength=t.digestLength,this.blockSize=t.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return e.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},e.prototype.clean=function(){for(var t=0;t<this.buffer.length;t++)this.buffer[t]=0;for(t=0;t<this.temp.length;t++)this.temp[t]=0;this.reset()},e.prototype.update=function(t,e){if(void 0===e&&(e=t.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var i=0;if(this.bytesHashed+=e,this.bufferLength>0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[i++],e--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(i=n(this.temp,this.state,t,i,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[i++],e--;return this},e.prototype.finish=function(t){if(!this.finished){var e=this.bytesHashed,i=this.bufferLength,r=e/536870912|0,c=e<<3,l=e%64<56?64:128;this.buffer[i]=128;for(var o=i+1;o<l-8;o++)this.buffer[o]=0;this.buffer[l-8]=r>>>24&255,this.buffer[l-7]=r>>>16&255,this.buffer[l-6]=r>>>8&255,this.buffer[l-5]=r>>>0&255,this.buffer[l-4]=c>>>24&255,this.buffer[l-3]=c>>>16&255,this.buffer[l-2]=c>>>8&255,this.buffer[l-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,l),this.finished=!0}for(o=0;o<8;o++)t[4*o+0]=this.state[o]>>>24&255,t[4*o+1]=this.state[o]>>>16&255,t[4*o+2]=this.state[o]>>>8&255,t[4*o+3]=this.state[o]>>>0&255;return this},e.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},e.prototype._saveState=function(t){for(var e=0;e<this.state.length;e++)t[e]=this.state[e]},e.prototype._restoreState=function(t,e){for(var n=0;n<this.state.length;n++)this.state[n]=t[n];this.bytesHashed=e,this.finished=!1,this.bufferLength=0},e}();t.Hash=i;var r=function(){function t(t){this.inner=new i,this.outer=new i,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var e=new Uint8Array(this.blockSize);if(t.length>this.blockSize)(new i).update(t).finish(e).clean();else for(var n=0;n<t.length;n++)e[n]=t[n];for(n=0;n<e.length;n++)e[n]^=54;for(this.inner.update(e),n=0;n<e.length;n++)e[n]^=106;for(this.outer.update(e),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate),n=0;n<e.length;n++)e[n]=0}return t.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},t.prototype.clean=function(){for(var t=0;t<this.istate.length;t++)this.ostate[t]=this.istate[t]=0;this.inner.clean(),this.outer.clean()},t.prototype.update=function(t){return this.inner.update(t),this},t.prototype.finish=function(t){return this.outer.finished?this.outer.finish(t):(this.inner.finish(t),this.outer.update(t,this.digestLength).finish(t)),this},t.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},t}();function c(t){var e=(new i).update(t),n=e.digest();return e.clean(),n}function l(t,e){var n=new r(t).update(e),i=n.digest();return n.clean(),i}function o(t,e,n,i){var r=i[0];if(0===r)throw new Error("hkdf: cannot expand more");e.reset(),r>1&&e.update(t),n&&e.update(n),e.update(i),e.finish(t),i[0]++}t.HMAC=r,t.hash=c,t.default=c,t.hmac=l;var a=new Uint8Array(t.digestLength);t.hkdf=function(t,e,n,i){void 0===e&&(e=a),void 0===i&&(i=32);for(var c=new Uint8Array([1]),u=l(e,t),d=new r(u),s=new Uint8Array(d.digestLength),m=s.length,h=new Uint8Array(i),b=0;b<i;b++)m===s.length&&(o(s,d,n,c),m=0),h[b]=s[m++];return d.clean(),s.fill(0),c.fill(0),h},t.pbkdf2=function(t,e,n,i){for(var c=new r(t),l=c.digestLength,o=new Uint8Array(4),a=new Uint8Array(l),u=new Uint8Array(l),d=new Uint8Array(i),s=0;s*l<i;s++){var m=s+1;o[0]=m>>>24&255,o[1]=m>>>16&255,o[2]=m>>>8&255,o[3]=m>>>0&255,c.reset(),c.update(e),c.update(o),c.finish(u);for(var h=0;h<l;h++)a[h]=u[h];for(h=2;h<=n;h++){c.reset(),c.update(u).finish(u);for(var b=0;b<l;b++)a[b]^=u[b]}for(h=0;h<l&&s*l+h<i;h++)d[s*l+h]=a[h]}for(s=0;s<l;s++)a[s]=u[s]=0;for(s=0;s<4;s++)o[s]=0;return c.clean(),d}}(i);var r=i.default;for(var c in i)r[c]=i[c];t.exports=r}()})));function uW(){throw new Error("setTimeout has not been defined")}function dW(){throw new Error("clearTimeout has not been defined")}var sW=uW,mW=dW;function hW(t){if(sW===setTimeout)return setTimeout(t,0);if((sW===uW||!sW)&&setTimeout)return sW=setTimeout,setTimeout(t,0);try{return sW(t,0)}catch(e){try{return sW.call(null,t,0)}catch(e){return sW.call(this,t,0)}}}"function"==typeof cV.setTimeout&&(sW=setTimeout),"function"==typeof cV.clearTimeout&&(mW=clearTimeout);var bW,ZW=[],pW=!1,yW=-1;function IW(){pW&&bW&&(pW=!1,bW.length?ZW=bW.concat(ZW):yW=-1,ZW.length&&XW())}function XW(){if(!pW){var t=hW(IW);pW=!0;for(var e=ZW.length;e;){for(bW=ZW,ZW=[];++yW<e;)bW&&bW[yW].run();yW=-1,e=ZW.length}bW=null,pW=!1,function(t){if(mW===clearTimeout)return clearTimeout(t);if((mW===dW||!mW)&&clearTimeout)return mW=clearTimeout,clearTimeout(t);try{mW(t)}catch(e){try{return mW.call(null,t)}catch(e){return mW.call(this,t)}}}(t)}}function gW(t,e){this.fun=t,this.array=e}gW.prototype.run=function(){this.fun.apply(null,this.array)};var GW=cV.performance||{},fW=(GW.now||GW.mozNow||GW.msNow||GW.oNow||GW.webkitNow,new Date,function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];ZW.push(new gW(t,e)),1!==ZW.length||pW||hW(XW)}),VW=function(t){if(t.__esModule)return t;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(t).forEach((function(n){var i=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,i.get?i:{enumerable:!0,get:function(){return t[n]}})})),e}(rW),WW=rV((function(t,e){var n=VW.Buffer;function i(t,e){for(var n in t)e[n]=t[n]}function r(t,e,i){return n(t,e,i)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=VW:(i(VW,e),e.Buffer=r),i(n,r),r.from=function(t,e,i){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,i)},r.alloc=function(t,e,i){if("number"!=typeof t)throw new TypeError("Argument must be a number");var r=n(t);return void 0!==e?"string"==typeof i?r.fill(e,i):r.fill(e):r.fill(0),r},r.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},r.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return VW.SlowBuffer(t)}})),vW=rV((function(t){var e=65536,n=WW.Buffer,i=iV.crypto||iV.msCrypto;i&&i.getRandomValues?t.exports=function(t,r){if(t>4294967295)throw new RangeError("requested too many random bytes");var c=n.allocUnsafe(t);if(t>0)if(t>e)for(var l=0;l<t;l+=e)i.getRandomValues(c.slice(l,l+e));else i.getRandomValues(c);return"function"==typeof r?fW((function(){r(null,c)})):c}:t.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}})),SW=new TextEncoder,CW=new TextDecoder,YW=function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;throw new Error("unable to locate global object")}(),RW=function(t){var e=t;return e instanceof Uint8Array&&(e=CW.decode(e)),e=e.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,""),new Uint8Array(YW.atob(e).split("").map((function(t){return t.charCodeAt(0)})))},KW=function(t){og(n,t);var e=Ff(n);function n(t){var i;return wX(this,n),(i=e.call(this,t)).code="ERR_JOSE_GENERIC",i.name=i.constructor.name,Error.captureStackTrace&&Error.captureStackTrace(cg(i),i.constructor),i}return n}(pg(Error)),LW=function(t){og(n,KW);var e=Ff(n);function n(t){var i,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return wX(this,n),(i=e.call(this,t)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",i.claim=r,i.reason=c,i}return n}(),JW=function(t){og(n,KW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",t}return n}(),xW=function(t){og(n,KW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",t}return n}(),HW=function(t){og(n,KW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_INVALID",t}return n}(),NW=function(t){og(n,KW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JWT_INVALID",t}return n}(),kW=function(t){og(n,KW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",t.message="signature verification failed",t}return n}(),UW=function(t){og(n,LW);var e=Ff(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).code="ERR_JWT_EXPIRED",t}return n}(),wW=YW.crypto;function TW(){if(!YW.isSecureContext&&!YW.crypto.subtle)throw new KW("Web Cryptography API is available only in Secure Contexts. See: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts")}var FW=function(){var t=ig(BX.mark((function t(e){var n,i,r,c,l,o,a;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=function(t){var e,n;switch(t.kty){case"oct":switch(t.alg){case"HS256":case"HS384":case"HS512":e={name:"HMAC",hash:"SHA-".concat(t.alg.substr(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new xW("".concat(t.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":e={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":e={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":e={name:"PBKDF2"},n=["deriveBits"];break;default:throw new xW('unsupported or invalid JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(t.alg){case"PS256":case"PS384":case"PS512":e={name:"RSA-PSS",hash:"SHA-".concat(t.alg.substr(-3))},n=t.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":e={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(t.alg.substr(-3))},n=t.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":e={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(t.alg.substr(-3),10)||1)},n=t.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new xW('unsupported or invalid JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(t.alg){case"ES256":case"ES384":case"ES512":e={name:"ECDSA",namedCurve:t.crv},n=t.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":e={name:"ECDH",namedCurve:t.crv},n=t.d?["deriveBits"]:[];break;default:throw new xW('unsupported or invalid JWK "alg" (Algorithm) Parameter value')}break;default:throw new xW('unsupported or invalid JWK "kty" (Key Type) Parameter value')}return{algorithm:e,keyUsages:n}}(e),c=r.algorithm,l=r.keyUsages,o="jwk",a=Tf({},e),t.abrupt("return",(delete a.alg,"PBKDF2"===c.name&&(o="raw",a=RW(e.k)),TW(),wW.subtle.importKey(o,a,c,null!==(n=e.ext)&&void 0!==n&&n,null!==(i=e.key_ops)&&void 0!==i?i:l)));case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();function BW(t){return!!t&&t.constructor===Object}function zW(t,e,n){return jW.apply(this,arguments)}function jW(){return jW=ig(BX.mark((function t(e,n,i){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(BW(e)){t.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=e.alg),"string"==typeof n&&n){t.next=4;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 4:t.t0=e.kty,t.next="oct"===t.t0?7:"RSA"===t.t0?10:"EC"===t.t0||"OKP"===t.t0?12:13;break;case 7:if("string"==typeof e.k&&e.k){t.next=9;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 9:return t.abrupt("return",(null!=i||(i=!0!==e.ext),i?FW(Tf(Tf({},e),{},{alg:n,ext:!1})):RW(e.k)));case 10:if(void 0===e.oth){t.next=12;break}throw new xW('RSA JWK "oth" (Other Primes Info) Parameter value is unsupported');case 12:return t.abrupt("return",FW(Tf(Tf({},e),{},{alg:n})));case 13:throw new xW('unsupported "kty" (Key Type) Parameter value');case 14:case"end":return t.stop()}}),t)}))),jW.apply(this,arguments)}var AW=function(){var t=ig(BX.mark((function t(e,n,i,r){var c;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(TW(),!(n instanceof Uint8Array)){t.next=8;break}if(e.startsWith("HS")){t.next=3;break}throw new TypeError("symmetric keys are only applicable for HMAC-based algorithms");case 3:return t.next=5,wW.subtle.importKey("raw",n,{hash:"SHA-".concat(e.substr(-3)),name:"HMAC"},!1,["verify"]);case 5:c=t.sent,t.next=9;break;case 8:c=n;case 9:return t.abrupt("return",(function(t,e){if(t.startsWith("HS")){var n=parseInt(t.substr(-3),10),i=e.algorithm.length;if("number"!=typeof i||i<n)throw new TypeError("".concat(t," requires symmetric keys to be ").concat(n," bits or larger"))}if(t.startsWith("RS")||t.startsWith("PS")){var r=e.algorithm.modulusLength;if("number"!=typeof r||r<2048)throw new TypeError("".concat(t," requires key modulusLength to be 2048 bits or larger"))}}(e,c),wW.subtle.verify(function(t){switch(t){case"HS256":return{hash:"SHA-256",name:"HMAC"};case"HS384":return{hash:"SHA-384",name:"HMAC"};case"HS512":return{hash:"SHA-512",name:"HMAC"};case"PS256":return{hash:"SHA-256",name:"RSA-PSS",saltLength:32};case"PS384":return{hash:"SHA-384",name:"RSA-PSS",saltLength:48};case"PS512":return{hash:"SHA-512",name:"RSA-PSS",saltLength:64};case"RS256":return{hash:"SHA-256",name:"RSASSA-PKCS1-v1_5"};case"RS384":return{hash:"SHA-384",name:"RSASSA-PKCS1-v1_5"};case"RS512":return{hash:"SHA-512",name:"RSASSA-PKCS1-v1_5"};case"ES256":return{hash:"SHA-256",name:"ECDSA",namedCurve:"P-256"};case"ES384":return{hash:"SHA-384",name:"ECDSA",namedCurve:"P-384"};case"ES512":return{hash:"SHA-512",name:"ECDSA",namedCurve:"P-521"};default:throw new xW("alg ".concat(t," is unsupported either by JOSE or your javascript runtime"))}}(e),c,i,r)));case 10:case"end":return t.stop()}}),t)})));return function(e,n,i,r){return t.apply(this,arguments)}}(),MW=function(t,e,n,i){if(void 0!==i.crit&&void 0===n.crit)throw new t('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||void 0===n.crit)return new Set;if(!Array.isArray(n.crit)||0===n.crit.length||n.crit.some((function(t){return"string"!=typeof t||0===t.length})))throw new t('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');var r,c=kf(n.crit);try{for(c.s();!(r=c.n()).done;){var l=r.value;if(!e.has(l))throw new xW('Extension Header Parameter "'.concat(l,'" is not supported by this implementation'));if(void 0===i[l])throw new t('Extension Header Parameter "'.concat(l,'" is missing'));if(e.get(l)&&void 0===n[l])throw new t('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(t){c.e(t)}finally{c.f()}return new Set(n.crit)}.bind(void 0,HW,new Map([["b64",!0]])),PW=function(t,e){if(void 0!==e&&(!Array.isArray(e)||e.some((function(t){return"string"!=typeof t}))))throw new TypeError('"'.concat(t,'" option must be an array of strings'));if(e)return new Set(e)}.bind(void 0,"algorithms");function QW(t,e,n){return DW.apply(this,arguments)}function DW(){return DW=ig(BX.mark((function t(e,n,i){var r,c,l,o,a,u,d,s,m,h;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(BW(e)){t.next=2;break}throw new HW("Flattened JWS must be an object");case 2:if(void 0!==e.protected||void 0!==e.header){t.next=4;break}throw new HW('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===e.protected||"string"==typeof e.protected){t.next=6;break}throw new HW("JWS Protected Header incorrect type");case 6:if(void 0!==e.payload){t.next=8;break}throw new HW("JWS Payload missing");case 8:if("string"==typeof e.signature){t.next=10;break}throw new HW("JWS Signature missing or incorrect type");case 10:if(void 0===e.header||BW(e.header)){t.next=12;break}throw new HW("JWS Unprotected Header incorrect type");case 12:if(r={},e.protected&&(c=RW(e.protected),r=JSON.parse(CW.decode(c))),function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var i,r=e.filter(Boolean);if(0===r.length||1===r.length)return!0;var c,l=kf(r);try{for(l.s();!(c=l.n()).done;){var o=c.value,a=Object.keys(o);if(i&&0!==i.size){var u,d=kf(a);try{for(d.s();!(u=d.n()).done;){var s=u.value;if(i.has(s))return!1;i.add(s)}}catch(t){d.e(t)}finally{d.f()}}else i=new Set(a)}}catch(t){l.e(t)}finally{l.f()}return!0}(r,e.header)){t.next=16;break}throw new HW("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 16:if(l=Tf(Tf({},r),e.header),o=!0,!MW(r,l).has("b64")||"boolean"==typeof(o=r.b64)){t.next=20;break}throw new HW('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 20:if("string"==typeof(a=l.alg)&&a){t.next=23;break}throw new HW('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 23:if(!(u=i&&PW(i.algorithms))||u.has(a)){t.next=26;break}throw new JW('"alg" (Algorithm) Header Parameter not allowed');case 26:if(!o){t.next=31;break}if("string"==typeof e.payload){t.next=29;break}throw new HW("JWS Payload must be a string");case 29:t.next=33;break;case 31:if("string"==typeof e.payload||e.payload instanceof Uint8Array){t.next=33;break}throw new HW("JWS Payload must be a string or an Uint8Array instance");case 33:if(t.t0="function"==typeof n,!t.t0){t.next=38;break}return t.next=37,n(r,e);case 37:n=t.sent;case 38:return function(t,e){if(t.startsWith("HS")||"dir"===t||t.startsWith("PBES2")||t.match(/^A\d{3}(?:GCM)KW$/)){if(e instanceof Uint8Array||"secret"===e.type)return;throw new TypeError('CryptoKey or KeyObject instances for symmetric algorithms must be of type "secret"')}if(e instanceof Uint8Array)throw new TypeError("CryptoKey or KeyObject instances must be used for asymmetric algorithms");if("secret"===e.type)throw new TypeError('CryptoKey or KeyObject instances for asymmetric algorithms must not be of type "secret"')}(a,n),d=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var i=e.reduce((function(t,e){return t+e.length}),0),r=new Uint8Array(i),c=0;return e.forEach((function(t){r.set(t,c),c+=t.length})),r}(SW.encode(e.protected||""),SW.encode("."),"string"==typeof e.payload?SW.encode(e.payload):e.payload),s=RW(e.signature),t.next=42,AW(a,n,s,d);case 42:if(t.sent){t.next=44;break}throw new kW;case 44:return m=o?RW(e.payload):"string"==typeof e.payload?SW.encode(e.payload):e.payload,h={payload:m},t.abrupt("return",(void 0!==e.protected&&(h.protectedHeader=r),void 0!==e.header&&(h.unprotectedHeader=e.header),h));case 47:case"end":return t.stop()}}),t)}))),DW.apply(this,arguments)}var EW=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,OW=function(t){var e=EW.exec(t);if(!e)throw new TypeError("invalid time period format");var n=parseFloat(e[1]);switch(e[2].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":return Math.round(n);case"minute":case"minutes":case"min":case"mins":case"m":return Math.round(60*n);case"hour":case"hours":case"hr":case"hrs":case"h":return Math.round(3600*n);case"day":case"days":case"d":return Math.round(86400*n);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},_W=function(t){return t.toLowerCase().replace(/^application\//,"")},qW=function(t,e){var n,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=i.typ;if(r&&("string"!=typeof t.typ||_W(t.typ)!==_W(r)))throw new LW('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(CW.decode(e))}catch(t){}if("object"!=l(n)||!n||Array.isArray(n))throw new NW("JWT Claims Set must be a top-level JSON object");var c=i.issuer;if(c&&!("string"==typeof c?[c]:c).includes(n.iss))throw new LW('unexpected "iss" claim value',"iss","check_failed");var o=i.subject;if(o&&n.sub!==o)throw new LW('unexpected "sub" claim value',"sub","check_failed");var a,u,d,s=i.audience;if(s&&(u="string"==typeof s?[s]:s,!("string"==typeof(a=n.aud)?u.includes(a):u.some(Set.prototype.has.bind(new Set(a))))))throw new LW('unexpected "aud" claim value',"aud","check_failed");switch(l(i.clockTolerance)){case"string":d=OW(i.clockTolerance);break;case"number":d=i.clockTolerance;break;case"undefined":d=0;break;default:throw new TypeError("invalid clockTolerance option type")}var m,h=i.currentDate,b=(m=h||new Date,Math.floor(m.getTime()/1e3));if(void 0!==n.iat||i.maxTokenAge){if("number"!=typeof n.iat)throw new LW('"iat" claim must be a number',"iat","invalid");if(void 0===n.exp&&n.iat>b+d)throw new LW('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new LW('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>b+d)throw new LW('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new LW('"exp" claim must be a number',"exp","invalid");if(n.exp<=b-d)throw new UW('"exp" claim timestamp check failed',"exp","check_failed")}if(i.maxTokenAge){var Z=b-n.iat;if(Z-d>("number"==typeof i.maxTokenAge?i.maxTokenAge:OW(i.maxTokenAge)))throw new UW('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(Z<0-d)throw new LW('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function $W(){return $W=ig(BX.mark((function t(e,n,i){var r;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,function(){var t=ig(BX.mark((function t(e,n,i){var r,c,l,o,a;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e instanceof Uint8Array&&(e=CW.decode(e)),"string"==typeof e){t.next=2;break}throw new HW("Compact JWS must be a string or Uint8Array");case 2:if(r=e.split("."),c=r[0],l=r[1],o=r[2],3===r.length){t.next=5;break}throw new HW("Invalid Compact JWS");case 5:return t.next=7,QW({payload:l||void 0,protected:c||void 0,signature:o||void 0},n,i);case 7:return a=t.sent,t.abrupt("return",{payload:a.payload,protectedHeader:a.protectedHeader});case 9:case"end":return t.stop()}}),t)})));return function(e,n,i){return t.apply(this,arguments)}}()(e,n,i);case 2:return r=t.sent,t.abrupt("return",{payload:qW(r.protectedHeader,r.payload,i),protectedHeader:r.protectedHeader});case 4:case"end":return t.stop()}}),t)}))),$W.apply(this,arguments)}var tv=function(){function t(){wX(this,t)}return FX(t,null,[{key:"base64URLEncode",value:function(t){return oW.encode(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"getCodeVerifier",value:function(){return this.base64URLEncode(vW(32))}},{key:"getCodeChallenge",value:function(t){return this.base64URLEncode(new Lg(aW((new TextEncoder).encode(t))))}},{key:"getSupportedSignatureAlgorithms",value:function(){return["RS256","RS512","RS384","PS256"]}},{key:"getJWKForTheIdToken",value:function(t,e){var n,i=JSON.parse(oW.decode(t,"utf8")),r=kf(e);try{for(r.s();!(n=r.n()).done;){var c=n.value;if(i.kid===c.kid)return zW({alg:c.alg,e:c.e,kty:c.kty,n:c.n})}}catch(t){r.e(t)}finally{r.f()}return Promise.reject(new eV("CRYPTO_UTIL-GTFTIT-IV01","crypto-utils","getJWKForTheIdToken","kid not found.","Failed to find the 'kid' specified in the id_token. 'kid' found in the header : "+i.kid+", Expected values: "+e.map((function(t){return t.kid})).join(", ")))}},{key:"isValidIdToken",value:function(t,e,n,i,r,c){return function(t,e,n){return $W.apply(this,arguments)}(t,e,{algorithms:this.getSupportedSignatureAlgorithms(),audience:n,clockTolerance:c,issuer:i,subject:r}).then((function(){return Promise.resolve(!0)})).catch((function(t){return Promise.reject(new eV("CRYPTO_UTIL-IVIT-IV02","crypto-utils","isValidIdToken","Validating ID token failed",t))}))}},{key:"decodeIDToken",value:function(t){try{var e=oW.decode(t.split(".")[1],"utf8");return JSON.parse(e)}catch(t){throw new eV("CRYPTO_UTIL-DIT-IV01","crypto-utils","decodeIDToken","Decoding ID token failed.",t)}}}]),t}(),ev=function(){function t(){wX(this,t)}return FX(t,null,[{key:"getAuthenticatedUserInfo",value:function(t){var e,n,i,r,c=tv.decodeIDToken(t),l=this.getTenantDomainFromIdTokenPayload(c),o=null!==(e=null==c?void 0:c.username)&&void 0!==e?e:"",a=null!==(n=c.given_name)&&void 0!==n?n:"",u=null!==(i=c.family_name)&&void 0!==i?i:"",d=a&&u?"".concat(a," ").concat(u):a||u||"",s=null!==(r=c.preferred_username)&&void 0!==r?r:d;return Object.assign({displayName:s,tenantDomain:l,username:o},this.filterClaimsFromIDTokenPayload(c))}},{key:"filterClaimsFromIDTokenPayload",value:function(t){var e=Object.assign({},t);null==e||delete e.iss,null==e||delete e.aud,null==e||delete e.exp,null==e||delete e.iat,null==e||delete e.acr,null==e||delete e.amr,null==e||delete e.azp,null==e||delete e.auth_time,null==e||delete e.nonce,null==e||delete e.c_hash,null==e||delete e.at_hash,null==e||delete e.nbf,null==e||delete e.isk,null==e||delete e.sid;var n={};return Object.entries(e).forEach((function(t){var e=$X(t,2),i=e[0],r=e[1],c=i.split("_").map((function(t,e){return 0===e?t:[t[0].toUpperCase()].concat(DX(t.slice(1))).join("")})).join("");n[c]=r})),n}},{key:"getTokenRequestHeaders",value:function(){return{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"}}}]),t}();ev.getTenantDomainFromIdTokenPayload=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@",n=t.sub.split(e);return n.length>2?n[n.length-1]:""};var nv,iv,rv=function(){function t(e){var n=this;wX(this,t),this._dataLayer=e,this._config=function(){return Bf(n,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getConfigData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._oidcProviderMetaData=function(){return Bf(n,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}}return FX(t,[{key:"resolveWellKnownEndpoint",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){var e;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._config();case 2:return e=t.sent,t.abrupt("return",e.wellKnownEndpoint?e.serverOrigin+e.wellKnownEndpoint:e.serverOrigin+"/oauth2/token/.well-known/openid-configuration");case 4:case"end":return t.stop()}}),t,this)})))}},{key:"resolveEndpoints",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){var n,i;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n={},e.next=3,this._config();case 3:return i=e.sent,e.abrupt("return",(i.overrideWellEndpointConfig&&i.endpoints&&Object.keys(i.endpoints).forEach((function(t){var e=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));n[e]=(null==i?void 0:i.endpoints)?i.endpoints[t]:""})),Object.assign(Object.assign({},t),n)));case 5:case"end":return e.stop()}}),e,this)})))}},{key:"resolveFallbackEndpoints",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){var e,n,i;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={},t.next=3,this._config();case 3:return(n=t.sent).endpoints&&Object.keys(n.endpoints).forEach((function(t){var i=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));e[i]=(null==n?void 0:n.endpoints)?n.endpoints[t]:""})),i={authorization_endpoint:n.serverOrigin+"/oauth2/authorize",end_session_endpoint:n.serverOrigin+"/oidc/logout",jwks_uri:n.serverOrigin+"/oauth2/jwks",check_session_iframe:n.serverOrigin+"/oidc/checksession",revocation_endpoint:n.serverOrigin+"/oauth2/revoke",token_endpoint:n.serverOrigin+"/oauth2/token"},t.abrupt("return",Object.assign(Object.assign({},e),i));case 7:case"end":return t.stop()}}),t,this)})))}},{key:"validateIdToken",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){var n,i,r=this;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return n=e.sent.jwks_uri,e.next=5,this._config();case 5:return i=e.sent,e.abrupt("return",n&&0!==n.trim().length?Nf.get(n,{withCredentials:null==i?void 0:i.sendCookiesInRequests}).then((function(e){return Bf(r,void 0,void 0,BX.mark((function n(){var i,r,c=this;return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===e.status){n.next=2;break}return n.abrupt("return",Promise.reject(new eV("AUTH_HELPER-VIT-NR02","authentication-helper","validateIdToken","Invalid response status received for jwks request.","The request sent to get the jwks returned "+e.status+" , which is invalid.")));case 2:return n.next=4,this._oidcProviderMetaData();case 4:return i=n.sent.issuer,n.next=7,this.resolveWellKnownEndpoint();case 7:return r=n.sent.split("/.well-known")[0],n.abrupt("return",i&&i===r?tv.getJWKForTheIdToken(t.split(".")[0],e.data.keys).then((function(e){return Bf(c,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=tv,n.t1=t,n.t2=e,n.next=5,this._config();case 5:return n.t3=n.sent.clientID,n.t4=i,n.t5=tv.decodeIDToken(t).sub,n.next=10,this._config();case 10:return n.t6=n.sent.clockTolerance,n.abrupt("return",n.t0.isValidIdToken.call(n.t0,n.t1,n.t2,n.t3,n.t4,n.t5,n.t6).then((function(t){return t})).catch((function(t){return Promise.reject(new eV("AUTH_HELPER-VIT-ES03","authentication-helper","validateIdToken",void 0,void 0,t))})));case 12:case"end":return n.stop()}}),n,this)})))})).catch((function(t){return Promise.reject(new eV("AUTH_HELPER-VIT-ES04","authentication-helper","validateIdToken",void 0,void 0,t))})):Promise.resolve(!1));case 9:case"end":return n.stop()}}),n,this)})))})).catch((function(t){var e,n,i;return Promise.reject(new nV("AUTH_HELPER-VIT-NR05","authentication-helper","validateIdToken","Request to jwks endpoint failed.","The request sent to get the jwks from the server failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(i=null==t?void 0:t.response)||void 0===i?void 0:i.data))})):Promise.reject(new eV("AUTH_HELPER-VIT-NF01","authentication-helper","validateIdToken","JWKS endpoint not found.","No JWKS endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the JWKS endpoint passed to the SDK is empty.")));case 7:case"end":return e.stop()}}),e,this)})))}},{key:"replaceCustomGrantTemplateTags",value:function(t){var e;return Bf(this,void 0,void 0,BX.mark((function n(){var i,r,c;return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i="openid",n.next=3,this._config();case 3:return r=n.sent,n.next=6,this._dataLayer.getSessionData();case 6:return c=n.sent,n.abrupt("return",(r.scope&&r.scope.length>0&&(r.scope.includes("openid")||r.scope.push("openid"),i=r.scope.join(" ")),t.replace("{{token}}",c.access_token).replace("{{username}}",ev.getAuthenticatedUserInfo(c.id_token).username).replace("{{scope}}",i).replace("{{clientID}}",r.clientID).replace("{{clientSecret}}",null!==(e=r.clientSecret)&&void 0!==e?e:"")));case 8:case"end":return n.stop()}}),n,this)})))}},{key:"clearUserSessionData",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.removeOIDCProviderMetaData();case 2:return t.next=4,this._dataLayer.removeTemporaryData();case 4:return t.next=6,this._dataLayer.removeSessionData();case 6:case"end":return t.stop()}}),t,this)})))}},{key:"handleTokenResponse",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){var n,i=this;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(200===t.status){e.next=2;break}return e.abrupt("return",Promise.reject(new eV("AUTH_HELPER-HTR-NR01","authentication-helper","handleTokenResponse","Invalid response status received for token request.","The request sent to get the token returned "+t.status+" , which is invalid.")));case 2:return e.next=4,this._config();case 4:if(!e.sent.validateIDToken){e.next=6;break}return e.abrupt("return",this.validateIdToken(t.data.id_token).then((function(e){return Bf(i,void 0,void 0,BX.mark((function n(){var i;return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!e){n.next=5;break}return n.next=3,this._dataLayer.setSessionData(t.data);case 3:return i={accessToken:t.data.access_token,expiresIn:t.data.expires_in,idToken:t.data.id_token,refreshToken:t.data.refresh_token,scope:t.data.scope,tokenType:t.data.token_type},n.abrupt("return",Promise.resolve(i));case 5:return n.abrupt("return",Promise.reject(new eV("AUTH_HELPER-HTR-IV02","authentication-helper","handleTokenResponse","The id token returned is not valid.","The id token returned has failed the validation check.")));case 6:case"end":return n.stop()}}),n,this)})))})).catch((function(t){return Promise.reject(new eV("AUTH_HELPER-HAT-ES03","authentication-helper","handleTokenResponse",void 0,void 0,t))})));case 6:return n={accessToken:t.data.access_token,expiresIn:t.data.expires_in,idToken:t.data.id_token,refreshToken:t.data.refresh_token,scope:t.data.scope,tokenType:t.data.token_type},e.next=9,this._dataLayer.setSessionData(t.data);case 9:return e.abrupt("return",Promise.resolve(n));case 10:case"end":return e.stop()}}),e,this)})))}}]),t}(),cv=function(){function t(e){var n=this;wX(this,t),this._authenticationHelper=new rv(e),this._dataLayer=e,this._config=function(){return Bf(n,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getConfigData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._oidcProviderMetaData=function(){return Bf(n,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}}return FX(t,[{key:"getAuthorizationURL",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){var n,i,r,c,l,o,a,u,d,s,m,h;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaDataParameter("authorization_endpoint");case 2:return n=e.sent,e.next=5,this._config();case 5:if(i=e.sent,n&&0!==n.trim().length){e.next=8;break}throw new eV("AUTH_CORE-GAU-NF01","authentication-core","getAuthorizationURL","No authorization endpoint found.","No authorization endpoint was found in the OIDC provider meta data from the well-known endpoint or the authorization endpoint passed to the SDK is empty.");case 8:if((r=new URL(n)).searchParams.append("response_type","code"),r.searchParams.append("client_id",i.clientID),c="openid",i.scope&&i.scope.length>0&&(i.scope.includes("openid")||i.scope.push("openid"),c=i.scope.join(" ")),r.searchParams.append("scope",c),r.searchParams.append("redirect_uri",i.signInRedirectURL),i.responseMode&&r.searchParams.append("response_mode",i.responseMode),!i.enablePKCE){e.next=17;break}return l=tv.getCodeVerifier(),o=tv.getCodeChallenge(l),e.next=15,this._dataLayer.setTemporaryDataParameter("pkce_code_verifier",l);case 15:r.searchParams.append("code_challenge_method","S256"),r.searchParams.append("code_challenge",o);case 17:if(i.prompt&&r.searchParams.append("prompt",i.prompt),a=t)for(u=0,d=Object.entries(a);u<d.length;u++)s=$X(d[u],2),m=s[0],h=s[1],""!=m&&""!=h&&r.searchParams.append(m,h.toString());return e.abrupt("return",r.toString());case 21:case"end":return e.stop()}}),e,this)})))}},{key:"requestAccessToken",value:function(t,e){return Bf(this,void 0,void 0,BX.mark((function n(){var i,r,c,l,o=this;return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._oidcProviderMetaData();case 2:return i=n.sent.token_endpoint,n.next=5,this._config();case 5:if(r=n.sent,i&&0!==i.trim().length){n.next=8;break}return n.abrupt("return",Promise.reject(new eV("AUTH_CORE-RAT1-NF01","authentication-core","requestAccessToken","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.")));case 8:if(n.t0=e,!n.t0){n.next=12;break}return n.next=12,this._dataLayer.setSessionDataParameter("session_state",e);case 12:if((c=[]).push("client_id=".concat(r.clientID)),r.clientSecret&&r.clientSecret.trim().length>0&&c.push("client_secret=".concat(r.clientSecret)),l=t,c.push("code=".concat(l)),c.push("grant_type=authorization_code"),c.push("redirect_uri=".concat(r.signInRedirectURL)),n.t1=r.enablePKCE,!n.t1){n.next=29;break}return n.t2=c,n.t3="code_verifier=",n.next=24,this._dataLayer.getTemporaryDataParameter("pkce_code_verifier");case 24:return n.t4=n.sent,n.t5=n.t3.concat.call(n.t3,n.t4),n.t2.push.call(n.t2,n.t5),n.next=29,this._dataLayer.removeTemporaryDataParameter("pkce_code_verifier");case 29:return n.abrupt("return",Nf.post(i,c.join("&"),{headers:ev.getTokenRequestHeaders(),withCredentials:r.sendCookiesInRequests}).then((function(t){return o._authenticationHelper.handleTokenResponse(t).then((function(t){return t})).catch((function(t){return Promise.reject(new eV("AUTH_CORE-RAT1-ES02","authentication-core","requestAccessToken",void 0,void 0,t))}))})).catch((function(t){var e,n,i;return Promise.reject(new nV("AUTH_CORE-RAT1-NR03","authentication-core","requestAccessToken","Requesting access token failed","The request to get the access token from the server failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(i=null==t?void 0:t.response)||void 0===i?void 0:i.data))})));case 30:case"end":return n.stop()}}),n,this)})))}},{key:"refreshAccessToken",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){var e,n,i,r,c=this;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return e=t.sent.token_endpoint,t.next=5,this._config();case 5:return n=t.sent,t.next=8,this._dataLayer.getSessionData();case 8:if((i=t.sent).refresh_token){t.next=11;break}return t.abrupt("return",Promise.reject(new eV("AUTH_CORE-RAT2-NF01","authentication-core","refreshAccessToken","No refresh token found.","There was no refresh token found. Asgardeo doesn't return a refresh token if the refresh token grant is not enabled.")));case 11:if(e&&0!==e.trim().length){t.next=13;break}return t.abrupt("return",Promise.reject(new eV("AUTH_CORE-RAT2-NF02","authentication-core","refreshAccessToken","No refresh token endpoint found.","No refresh token endpoint was in the OIDC provider meta data returned by the well-known endpoint or the refresh token endpoint passed to the SDK is empty.")));case 13:return r=[],t.abrupt("return",(r.push("client_id=".concat(n.clientID)),r.push("refresh_token=".concat(i.refresh_token)),r.push("grant_type=refresh_token"),n.clientSecret&&n.clientSecret.trim().length>0&&r.push("client_secret=".concat(n.clientSecret)),Nf.post(e,r.join("&"),{headers:ev.getTokenRequestHeaders(),withCredentials:n.sendCookiesInRequests}).then((function(t){return c._authenticationHelper.handleTokenResponse(t).then((function(t){return t})).catch((function(t){return Promise.reject(new eV("AUTH_CORE-RAT2-ES03","authentication-core","refreshAccessToken",void 0,void 0,t))}))})).catch((function(t){var e,n,i;return Promise.reject(new nV("AUTH_CORE-RAT2-NR03","authentication-core","refreshAccessToken","Refresh access token request failed.","The request to refresh the access token failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(i=null==t?void 0:t.response)||void 0===i?void 0:i.data))}))));case 15:case"end":return t.stop()}}),t,this)})))}},{key:"revokeAccessToken",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){var e,n,i,r=this;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return e=t.sent.revocation_endpoint,t.next=5,this._config();case 5:if(n=t.sent,e&&0!==e.trim().length){t.next=8;break}return t.abrupt("return",Promise.reject(new eV("AUTH_CORE-RAT3-NF01","authentication-core","revokeAccessToken","No revoke access token endpoint found.","No revoke access token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the revoke access token endpoint passed to the SDK is empty.")));case 8:return(i=[]).push("client_id=".concat(n.clientID)),t.t0=i,t.t1="token=",t.next=14,this._dataLayer.getSessionData();case 14:return t.t2=t.sent.access_token,t.t3=t.t1.concat.call(t.t1,t.t2),t.t0.push.call(t.t0,t.t3),i.push("token_type_hint=access_token"),t.abrupt("return",Nf.post(e,i.join("&"),{headers:ev.getTokenRequestHeaders(),withCredentials:n.sendCookiesInRequests}).then((function(t){return 200!==t.status?Promise.reject(new eV("AUTH_CORE-RAT3-NR02","authentication-core","revokeAccessToken","Invalid response status received for revoke access token request.","The request sent to revoke the access token returned "+t.status+" , which is invalid.")):(r._authenticationHelper.clearUserSessionData(),Promise.resolve(t))})).catch((function(t){var e,n,i;return Promise.reject(new nV("AUTH_CORE-RAT3-NR03","authentication-core","revokeAccessToken","The request to revoke access token failed.","The request sent to revoke the access token failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(i=null==t?void 0:t.response)||void 0===i?void 0:i.data))})));case 19:case"end":return t.stop()}}),t,this)})))}},{key:"requestCustomGrant",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){var n,i,r,c,l=this;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._oidcProviderMetaData();case 2:return n=e.sent,e.next=5,this._config();case 5:if(i=e.sent,(r=t.tokenEndpoint&&0!==t.tokenEndpoint.trim().length?t.tokenEndpoint:n.token_endpoint)&&0!==r.trim().length){e.next=8;break}return e.abrupt("return",Promise.reject(new eV("AUTH_CORE-RCG-NF01","authentication-core","requestCustomGrant","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.")));case 8:return e.next=10,Promise.all(Object.entries(t.data).map((function(t){var e=$X(t,2),n=e[0],i=e[1];return Bf(l,void 0,void 0,BX.mark((function t(){var e;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationHelper.replaceCustomGrantTemplateTags(i);case 2:return e=t.sent,t.abrupt("return","".concat(n,"=").concat(e));case 4:case"end":return t.stop()}}),t,this)})))})));case 10:if(e.t0=e.sent.join("&"),e.t1=Object.assign({},ev.getTokenRequestHeaders()),e.t2=r,e.t3=i.sendCookiesInRequests,c={data:e.t0,headers:e.t1,method:"POST",url:e.t2,withCredentials:e.t3},e.t4=t.attachToken,!e.t4){e.next=26;break}return e.t5=Object,e.t6=Object.assign({},c.headers),e.t7="Bearer ",e.next=22,this._dataLayer.getSessionData();case 22:e.t8=e.sent.access_token,e.t9=e.t7.concat.call(e.t7,e.t8),e.t10={Authorization:e.t9},c.headers=e.t5.assign.call(e.t5,e.t6,e.t10);case 26:return e.abrupt("return",Nf(c).then((function(e){return 200!==e.status?Promise.reject(new eV("AUTH_CORE-RCG-NR02","authentication-core","requestCustomGrant","Invalid response status received for the custom grant request.","The request sent to get the custom grant returned "+e.status+" , which is invalid.")):t.returnsSession?l._authenticationHelper.handleTokenResponse(e).then((function(t){return t})).catch((function(t){return Promise.reject(new eV("AUTH_CORE-RCG-ES03","authentication-core","requestCustomGrant",void 0,void 0,t))})):Promise.resolve(e)})).catch((function(t){var e,n,i;return Promise.reject(new nV("AUTH_CORE-RCG-NR04","authentication-core","requestCustomGrant","The custom grant request failed.","The request sent to get the custom grant failed.",null!==(e=null==t?void 0:t.code)&&void 0!==e?e:"",null==t?void 0:t.message,null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status,null===(i=null==t?void 0:t.response)||void 0===i?void 0:i.data))})));case 27:case"end":return e.stop()}}),e,this)})))}},{key:"getBasicUserInfo",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){var e,n,i;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:return e=t.sent,n=ev.getAuthenticatedUserInfo(null==e?void 0:e.id_token),i={allowedScopes:e.scope,sessionState:e.session_state},t.abrupt("return",(Object.keys(n).forEach((function(t){void 0!==n[t]&&""!==n[t]&&null!==n[t]||delete n[t]})),i=Object.assign(Object.assign({},i),n)));case 6:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){var e;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:return e=t.sent.id_token,t.abrupt("return",tv.decodeIDToken(e));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:return t.abrupt("return",t.sent.id_token);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaData",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){var n,i=this;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.t0=!t,!e.t0){e.next=5;break}return e.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:e.t0=e.sent;case 5:if(!e.t0){e.next=7;break}return e.abrupt("return",Promise.resolve(!0));case 7:return e.next=9,this._authenticationHelper.resolveWellKnownEndpoint();case 9:return n=e.sent,e.abrupt("return",Nf.get(n).then((function(t){return Bf(i,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(200===t.status){e.next=4;break}e.t0=Promise.reject(new eV("AUTH_CORE-GOPM-NR01","authentication-core","getOIDCProviderMetaData","Invalid response status received for OIDC provider meta data request.","The request sent to the well-known endpoint to get the OIDC provider meta data returned "+t.status+" , which is invalid.")),e.next=13;break;case 4:return e.t1=this._dataLayer,e.next=7,this._authenticationHelper.resolveEndpoints(t.data);case 7:return e.t2=e.sent,e.next=10,e.t1.setOIDCProviderMetaData.call(e.t1,e.t2);case 10:return e.next=12,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 12:e.t0=Promise.resolve(!0);case 13:return e.abrupt("return",e.t0);case 14:case"end":return e.stop()}}),e,this)})))})).catch((function(){return Bf(i,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=this._dataLayer,t.next=3,this._authenticationHelper.resolveFallbackEndpoints();case 3:return t.t1=t.sent,t.next=6,t.t0.setOIDCProviderMetaData.call(t.t0,t.t1);case 6:return t.next=8,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 8:return t.abrupt("return",Promise.resolve(!0));case 9:case"end":return t.stop()}}),t,this)})))})));case 11:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){var e;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return e=t.sent,t.t0=e.authorization_endpoint,t.t1=e.check_session_iframe,t.t2=e.end_session_endpoint,t.t3=e.introspection_endpoint,t.t4=e.issuer,t.t5=e.jwks_uri,t.t6=e.registration_endpoint,t.t7=e.revocation_endpoint,t.t8=e.token_endpoint,t.t9=e.userinfo_endpoint,t.next=15,this._authenticationHelper.resolveWellKnownEndpoint();case 15:return t.t10=t.sent,t.abrupt("return",{authorizationEndpoint:t.t0,checkSessionIframe:t.t1,endSessionEndpoint:t.t2,introspectionEndpoint:t.t3,issuer:t.t4,jwksUri:t.t5,registrationEndpoint:t.t6,revocationEndpoint:t.t7,tokenEndpoint:t.t8,userinfoEndpoint:t.t9,wellKnownEndpoint:t.t10});case 17:case"end":return t.stop()}}),t,this)})))}},{key:"getSignOutURL",value:function(){var t,e,n;return Bf(this,void 0,void 0,BX.mark((function i(){var r,c,l,o;return BX.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:if(i.t1=t=i.sent,i.t0=null===i.t1,i.t0){i.next=6;break}i.t0=void 0===t;case 6:if(!i.t0){i.next=10;break}i.t2=void 0,i.next=11;break;case 10:i.t2=t.end_session_endpoint;case 11:return r=i.t2,i.next=14,this._config();case 14:if(c=i.sent,r&&0!==r.trim().length){i.next=17;break}throw new eV("AUTH_CORE-GSOU-NF01","authentication-core","getSignOutURL","Sign-out endpoint not found.","No sign-out endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the sign-out endpoint passed to the SDK is empty.");case 17:return i.next=19,this._dataLayer.getSessionData();case 19:if(i.t4=e=i.sent,i.t3=null===i.t4,i.t3){i.next=23;break}i.t3=void 0===e;case 23:if(!i.t3){i.next=27;break}i.t5=void 0,i.next=28;break;case 27:i.t5=e.id_token;case 28:if((l=i.t5)&&0!==l.trim().length){i.next=31;break}throw new eV("AUTH_CORE-GSOU-NF02","authentication-core","getSignOutURL","ID token not found.","No ID token could be found. Either the session information is lost or you have not signed in.");case 31:if((o=null!==(n=null==c?void 0:c.signOutRedirectURL)&&void 0!==n?n:null==c?void 0:c.signInRedirectURL)&&0!==o.trim().length){i.next=34;break}throw new eV("AUTH_CORE-GSOU-NF03","authentication-core","getSignOutURL","No sign-out redirect URL found.","The sign-out redirect URL cannot be found or the URL passed to the SDK is empty. No sign-in redirect URL has been found either. ");case 34:return i.abrupt("return","".concat(r,"?id_token_hint=").concat(l,"&post_logout_redirect_uri=").concat(o,"&state=sign_out_success"));case 35:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){var e;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getSignOutURL();case 2:return e=t.sent,t.abrupt("return",(this._authenticationHelper.clearUserSessionData(),e));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(){var t;return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData();case 2:if(e.t1=t=e.sent,e.t0=null===e.t1,e.t0){e.next=6;break}e.t0=void 0===t;case 6:if(!e.t0){e.next=10;break}e.t2=void 0,e.next=11;break;case 10:e.t2=t.access_token;case 11:return e.abrupt("return",e.t2);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"isAuthenticated",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=Boolean,t.next=3,this.getAccessToken();case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter("pkce_code_verifier");case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"setPKCECode",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setTemporaryDataParameter("pkce_code_verifier",t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))}},{key:"updateConfig",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setConfigData(t);case 2:if(!t.overrideWellEndpointConfig){e.next=13;break}if(e.t0=null==t?void 0:t.endpoints,!e.t0){e.next=11;break}return e.t1=this._dataLayer,e.next=8,this._authenticationHelper.resolveEndpoints({});case 8:return e.t2=e.sent,e.next=11,e.t1.setOIDCProviderMetaData.call(e.t1,e.t2);case 11:e.next=17;break;case 13:if(e.t3=null==t?void 0:t.endpoints,!e.t3){e.next=17;break}return e.next=17,this.getOIDCProviderMetaData(!0);case 17:case"end":return e.stop()}}),e,this)})))}}]),t}(),lv=function(){function t(e,n){wX(this,t),this._id=e,this._store=n}return FX(t,[{key:"setDataInBulk",value:function(t,e){var n;return Bf(this,void 0,void 0,BX.mark((function i(){var r,c,l,o;return BX.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(t);case 2:if(i.t1=n=i.sent,i.t0=null!==i.t1,!i.t0){i.next=6;break}i.t0=void 0!==n;case 6:if(!i.t0){i.next=10;break}i.t2=n,i.next=11;break;case 10:i.t2=null;case 11:return r=i.t2,c=r&&JSON.parse(r),l=Object.assign(Object.assign({},c),e),o=JSON.stringify(l),i.next=17,this._store.setData(t,o);case 17:case"end":return i.stop()}}),i,this)})))}},{key:"setValue",value:function(t,e,n){var i;return Bf(this,void 0,void 0,BX.mark((function r(){var c,l,o,a;return BX.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(t);case 2:if(r.t1=i=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==i;case 6:if(!r.t0){r.next=10;break}r.t2=i,r.next=11;break;case 10:r.t2=null;case 11:return c=r.t2,l=c&&JSON.parse(c),o=Object.assign(Object.assign({},l),eg({},e,n)),a=JSON.stringify(o),r.next=17,this._store.setData(t,a);case 17:case"end":return r.stop()}}),r,this)})))}},{key:"removeValue",value:function(t,e){var n;return Bf(this,void 0,void 0,BX.mark((function i(){var r,c,l,o;return BX.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(t);case 2:if(i.t1=n=i.sent,i.t0=null!==i.t1,!i.t0){i.next=6;break}i.t0=void 0!==n;case 6:if(!i.t0){i.next=10;break}i.t2=n,i.next=11;break;case 10:i.t2=null;case 11:return r=i.t2,c=r&&JSON.parse(r),delete(l=Object.assign({},c))[e],o=JSON.stringify(l),i.next=18,this._store.setData(t,o);case 18:case"end":return i.stop()}}),i,this)})))}},{key:"_resolveKey",value:function(t){return"".concat(t,"-").concat(this._id)}},{key:"setConfigData",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.setDataInBulk(this._resolveKey(zf.ConfigData),t);case 2:case"end":return e.stop()}}),e,this)})))}},{key:"setOIDCProviderMetaData",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.setDataInBulk(this._resolveKey(zf.OIDCProviderMetaData),t);case 1:case"end":return e.stop()}}),e,this)})))}},{key:"setTemporaryData",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.setDataInBulk(this._resolveKey(zf.TemporaryData),t);case 1:case"end":return e.stop()}}),e,this)})))}},{key:"setSessionData",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.setDataInBulk(this._resolveKey(zf.SessionData),t);case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getConfigData",value:function(){var t;return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=JSON,e.next=3,this._store.getData(this._resolveKey(zf.ConfigData));case 3:if(e.t2=t=e.sent,e.t1=null!==e.t2,!e.t1){e.next=7;break}e.t1=void 0!==t;case 7:if(!e.t1){e.next=11;break}e.t3=t,e.next=12;break;case 11:e.t3=null;case 12:return e.t4=e.t3,e.abrupt("return",e.t0.parse.call(e.t0,e.t4));case 14:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCProviderMetaData",value:function(){var t;return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=JSON,e.next=3,this._store.getData(this._resolveKey(zf.OIDCProviderMetaData));case 3:if(e.t2=t=e.sent,e.t1=null!==e.t2,!e.t1){e.next=7;break}e.t1=void 0!==t;case 7:if(!e.t1){e.next=11;break}e.t3=t,e.next=12;break;case 11:e.t3=null;case 12:return e.t4=e.t3,e.abrupt("return",e.t0.parse.call(e.t0,e.t4));case 14:case"end":return e.stop()}}),e,this)})))}},{key:"getTemporaryData",value:function(){var t;return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=JSON,e.next=3,this._store.getData(this._resolveKey(zf.TemporaryData));case 3:if(e.t2=t=e.sent,e.t1=null!==e.t2,!e.t1){e.next=7;break}e.t1=void 0!==t;case 7:if(!e.t1){e.next=11;break}e.t3=t,e.next=12;break;case 11:e.t3=null;case 12:return e.t4=e.t3,e.abrupt("return",e.t0.parse.call(e.t0,e.t4));case 14:case"end":return e.stop()}}),e,this)})))}},{key:"getSessionData",value:function(){var t;return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=JSON,e.next=3,this._store.getData(this._resolveKey(zf.SessionData));case 3:if(e.t2=t=e.sent,e.t1=null!==e.t2,!e.t1){e.next=7;break}e.t1=void 0!==t;case 7:if(!e.t1){e.next=11;break}e.t3=t,e.next=12;break;case 11:e.t3=null;case 12:return e.t4=e.t3,e.abrupt("return",e.t0.parse.call(e.t0,e.t4));case 14:case"end":return e.stop()}}),e,this)})))}},{key:"removeConfigData",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(zf.ConfigData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(zf.OIDCProviderMetaData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeTemporaryData",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(zf.TemporaryData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeSessionData",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(zf.SessionData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"getConfigDataParameter",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){var n;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.getData(this._resolveKey(zf.ConfigData));case 2:return n=e.sent,e.abrupt("return",n&&JSON.parse(n)[t]);case 4:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCProviderMetaDataParameter",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){var n;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.getData(this._resolveKey(zf.OIDCProviderMetaData));case 2:return n=e.sent,e.abrupt("return",n&&JSON.parse(n)[t]);case 4:case"end":return e.stop()}}),e,this)})))}},{key:"getTemporaryDataParameter",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){var n;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.getData(this._resolveKey(zf.TemporaryData));case 2:return n=e.sent,e.abrupt("return",n&&JSON.parse(n)[t]);case 4:case"end":return e.stop()}}),e,this)})))}},{key:"getSessionDataParameter",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){var n;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.getData(this._resolveKey(zf.SessionData));case 2:return n=e.sent,e.abrupt("return",n&&JSON.parse(n)[t]);case 4:case"end":return e.stop()}}),e,this)})))}},{key:"setConfigDataParameter",value:function(t,e){return Bf(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(zf.ConfigData),t,e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(t,e){return Bf(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(zf.OIDCProviderMetaData),t,e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryDataParameter",value:function(t,e){return Bf(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(zf.TemporaryData),t,e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setSessionDataParameter",value:function(t,e){return Bf(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setValue(this._resolveKey(zf.SessionData),t,e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeConfigDataParameter",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.removeValue(this._resolveKey(zf.ConfigData),t);case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.removeValue(this._resolveKey(zf.OIDCProviderMetaData),t);case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeTemporaryDataParameter",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.removeValue(this._resolveKey(zf.TemporaryData),t);case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeSessionDataParameter",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.removeValue(this._resolveKey(zf.SessionData),t);case 2:case"end":return e.stop()}}),e,this)})))}}]),t}(),ov={clockTolerance:300,enablePKCE:!0,responseMode:xf.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},av=function(){
16
16
  /**
17
17
  * This is the constructor method that returns an instance of the .
18
18
  *
@@ -27,7 +27,7 @@ PERFORMANCE OF THIS SOFTWARE.
27
27
  * @link https://github.com/asgardeo/asgardeo-auth-js-sdk/tree/master#constructor
28
28
  * @preserve
29
29
  */
30
- function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._dataLayer=new dv("instance_".concat(t._instanceID),e),this._authenticationCore=new uv(this._dataLayer)}
30
+ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._dataLayer=new lv("instance_".concat(t._instanceID),e),this._authenticationCore=new cv(this._dataLayer)}
31
31
  /**
32
32
  *
33
33
  * This method initializes the SDK with the config data.
@@ -46,7 +46,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
46
46
  * @link https://github.com/asgardeo/asgardeo-auth-js-sdk/tree/master#initialize
47
47
  *
48
48
  * @preserve
49
- */return FX(t,[{key:"initialize",value:function(t){var e,n,r;return zf(this,void 0,void 0,zX.mark((function i(){return zX.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.setConfigData(Object.assign(Object.assign(Object.assign({},sv),t),{scope:[].concat(DX(null!==(e=sv.scope)&&void 0!==e?e:[]),DX(null!==(r=null===(n=t.scope)||void 0===n?void 0:n.filter((function(t){var e;return!(null===(e=null==sv?void 0:sv.scope)||void 0===e?void 0:e.includes(t))})))&&void 0!==r?r:[]))}));case 2:case"end":return i.stop()}}),i,this)})))}
49
+ */return FX(t,[{key:"initialize",value:function(t){var e,n,i;return Bf(this,void 0,void 0,BX.mark((function r(){return BX.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._dataLayer.setConfigData(Object.assign(Object.assign(Object.assign({},ov),t),{scope:[].concat(DX(null!==(e=ov.scope)&&void 0!==e?e:[]),DX(null!==(i=null===(n=t.scope)||void 0===n?void 0:n.filter((function(t){var e;return!(null===(e=null==ov?void 0:ov.scope)||void 0===e?void 0:e.includes(t))})))&&void 0!==i?i:[]))}));case 2:case"end":return r.stop()}}),r,this)})))}
50
50
  /**
51
51
  * This method returns the `DataLayer` object that allows you to access authentication data.
52
52
  *
@@ -85,7 +85,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
85
85
  * @memberof AsgardeoAuthClient
86
86
  *
87
87
  * @preserve
88
- */},{key:"getAuthorizationURL",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){var n,r=this;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return null==(n=Object.assign({},t))||delete n.forceInit,e.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:if(!e.sent){e.next=8;break}e.t0=this._authenticationCore.getAuthorizationURL(n),e.next=9;break;case 8:e.t0=this._authenticationCore.getOIDCProviderMetaData(null==t?void 0:t.forceInit).then((function(){return r._authenticationCore.getAuthorizationURL(n)}));case 9:return e.abrupt("return",e.t0);case 10:case"end":return e.stop()}}),e,this)})))}
88
+ */},{key:"getAuthorizationURL",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){var n,i=this;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return null==(n=Object.assign({},t))||delete n.forceInit,e.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:if(!e.sent){e.next=8;break}e.t0=this._authenticationCore.getAuthorizationURL(n),e.next=9;break;case 8:e.t0=this._authenticationCore.getOIDCProviderMetaData(null==t?void 0:t.forceInit).then((function(){return i._authenticationCore.getAuthorizationURL(n)}));case 9:return e.abrupt("return",e.t0);case 10:case"end":return e.stop()}}),e,this)})))}
89
89
  /**
90
90
  * This is an async method that sends a request to obtain the access token and returns a Promise
91
91
  * that resolves with the token and other relevant data.
@@ -109,7 +109,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
109
109
  * @memberof AsgardeoAuthClient
110
110
  *
111
111
  * @preserve
112
- */},{key:"requestAccessToken",value:function(t,e){return zf(this,void 0,void 0,zX.mark((function n(){var r=this;return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 2:if(!n.sent){n.next=6;break}n.t0=this._authenticationCore.requestAccessToken(t,e),n.next=7;break;case 6:n.t0=this._authenticationCore.getOIDCProviderMetaData(!1).then((function(){return r._authenticationCore.requestAccessToken(t,e)}));case 7:return n.abrupt("return",n.t0);case 8:case"end":return n.stop()}}),n,this)})))}
112
+ */},{key:"requestAccessToken",value:function(t,e){return Bf(this,void 0,void 0,BX.mark((function n(){var i=this;return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 2:if(!n.sent){n.next=6;break}n.t0=this._authenticationCore.requestAccessToken(t,e),n.next=7;break;case 6:n.t0=this._authenticationCore.getOIDCProviderMetaData(!1).then((function(){return i._authenticationCore.requestAccessToken(t,e)}));case 7:return n.abrupt("return",n.t0);case 8:case"end":return n.stop()}}),n,this)})))}
113
113
  /**
114
114
  * This method clears all authentication data and returns the sign-out URL.
115
115
  *
@@ -125,7 +125,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
125
125
  * @memberof AsgardeoAuthClient
126
126
  *
127
127
  * @preserve
128
- */},{key:"signOut",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.signOut());case 1:case"end":return t.stop()}}),t,this)})))}
128
+ */},{key:"signOut",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.signOut());case 1:case"end":return t.stop()}}),t,this)})))}
129
129
  /**
130
130
  * This method returns the sign-out URL.
131
131
  *
@@ -143,7 +143,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
143
143
  * @memberof AsgardeoAuthClient
144
144
  *
145
145
  * @preserve
146
- */},{key:"getSignOutURL",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getSignOutURL());case 1:case"end":return t.stop()}}),t,this)})))}
146
+ */},{key:"getSignOutURL",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getSignOutURL());case 1:case"end":return t.stop()}}),t,this)})))}
147
147
  /**
148
148
  * This method returns OIDC service endpoints that are fetched from the `.well-known` endpoint.
149
149
  *
@@ -159,7 +159,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
159
159
  * @memberof AsgardeoAuthClient
160
160
  *
161
161
  * @preserve
162
- */},{key:"getOIDCServiceEndpoints",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t,this)})))}
162
+ */},{key:"getOIDCServiceEndpoints",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t,this)})))}
163
163
  /**
164
164
  * This method decodes the payload of the ID token and returns it.
165
165
  *
@@ -175,7 +175,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
175
175
  * @memberof AsgardeoAuthClient
176
176
  *
177
177
  * @preserve
178
- */},{key:"getDecodedIDToken",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getDecodedIDToken());case 1:case"end":return t.stop()}}),t,this)})))}
178
+ */},{key:"getDecodedIDToken",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getDecodedIDToken());case 1:case"end":return t.stop()}}),t,this)})))}
179
179
  /**
180
180
  * This method returns the ID token.
181
181
  *
@@ -191,7 +191,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
191
191
  * @memberof AsgardeoAuthClient
192
192
  *
193
193
  * @preserve
194
- */},{key:"getIDToken",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getIDToken());case 1:case"end":return t.stop()}}),t,this)})))}
194
+ */},{key:"getIDToken",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getIDToken());case 1:case"end":return t.stop()}}),t,this)})))}
195
195
  /**
196
196
  * This method returns the basic user information obtained from the ID token.
197
197
  *
@@ -207,7 +207,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
207
207
  * @memberof AsgardeoAuthClient
208
208
  *
209
209
  * @preserve
210
- */},{key:"getBasicUserInfo",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getBasicUserInfo());case 1:case"end":return t.stop()}}),t,this)})))}
210
+ */},{key:"getBasicUserInfo",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getBasicUserInfo());case 1:case"end":return t.stop()}}),t,this)})))}
211
211
  /**
212
212
  * This method revokes the access token.
213
213
  *
@@ -266,7 +266,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
266
266
  * @memberof AsgardeoAuthClient
267
267
  *
268
268
  * @preserve
269
- */},{key:"getAccessToken",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getAccessToken());case 1:case"end":return t.stop()}}),t,this)})))}
269
+ */},{key:"getAccessToken",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getAccessToken());case 1:case"end":return t.stop()}}),t,this)})))}
270
270
  /**
271
271
  * This method sends a custom-grant request and returns a Promise that resolves with the response
272
272
  * depending on the config passed.
@@ -320,7 +320,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
320
320
  * @memberof AsgardeoAuthClient
321
321
  *
322
322
  * @preserve
323
- */},{key:"isAuthenticated",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.isAuthenticated());case 1:case"end":return t.stop()}}),t,this)})))}
323
+ */},{key:"isAuthenticated",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.isAuthenticated());case 1:case"end":return t.stop()}}),t,this)})))}
324
324
  /**
325
325
  * This method returns the PKCE code generated during the generation of the authentication URL.
326
326
  *
@@ -336,7 +336,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
336
336
  * @memberof AsgardeoAuthClient
337
337
  *
338
338
  * @preserve
339
- */},{key:"getPKCECode",value:function(){return zf(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getPKCECode());case 1:case"end":return t.stop()}}),t,this)})))}
339
+ */},{key:"getPKCECode",value:function(){return Bf(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getPKCECode());case 1:case"end":return t.stop()}}),t,this)})))}
340
340
  /**
341
341
  * This method sets the PKCE code to the data store.
342
342
  *
@@ -352,7 +352,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
352
352
  * @memberof AsgardeoAuthClient
353
353
  *
354
354
  * @preserve
355
- */},{key:"setPKCECode",value:function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.setPKCECode(t);case 2:case"end":return e.stop()}}),e,this)})))}
355
+ */},{key:"setPKCECode",value:function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.setPKCECode(t);case 2:case"end":return e.stop()}}),e,this)})))}
356
356
  /**
357
357
  * This method returns if the sign-out is successful or not.
358
358
  *
@@ -390,7 +390,7 @@ function t(e){wX(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._da
390
390
  *
391
391
  * @preserve
392
392
  */
393
- function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.updateConfig(t);case 2:case"end":return e.stop()}}),e,this)})))}}],[{key:"isSignOutSuccessful",value:function(t){var e=new URL(t),n=e.searchParams.get("state"),r=Boolean(e.searchParams.get("error"));return!!n&&"sign_out_success"===n&&!r}}]),t}();!function(t){t.LocalStorage="localStorage",t.SessionStorage="sessionStorage",t.WebWorker="webWorker",t.BrowserMemory="browserMemory"}(lv||(lv={})),function(t){t.SignIn="sign-in",t.SignOut="sign-out",t.Initialize="initialize",t.HttpRequestStart="http-request-start",t.HttpRequestFinish="http-request-finish",t.HttpRequestError="http-request-error",t.HttpRequestSuccess="http-request-success",t.RevokeAccessToken="revoke-access-token",t.CustomGrant="custom-grant"}(ov||(ov={}));var hv="Y2hlY2tTZXNzaW9u";function Zv(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=sG(t);if(e){var i=sG(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return uG(this,n)}}var bv,pv,yv,Iv,Xv,Gv,gv,fv,Vv,Wv,vv,Sv,Cv,Yv,Rv,Kv,Lv,Jv,xv,Hv=function(t){oG(n,t);var e=Zv(n);function n(t,r,i,c,l,o){var a;return wX(this,n),(a=e.call(this,null!=c?c:null==o?void 0:o.message)).name=a.constructor.name,a.code=t,a.file=r,a.method=i,a.error=o,a.description=l,Object.setPrototypeOf(cG(a),(this instanceof n?this.constructor:void 0).prototype),a}return n}(pG(Error)),Nv=function(){function t(e){wX(this,t),this._authenticationClient=e,this._dataLayer=this._authenticationClient.getDataLayer()}return FX(t,[{key:"refreshAccessTokenAutomatically",value:function(){return BX(this,void 0,void 0,zX.mark((function t(){var e,n,r,i=this;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:if(!(e=t.sent).refresh_token){t.next=9;break}return n=parseInt(e.expires_in),r=setTimeout((function(){return BX(i,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return t.stop()}}),t,this)})))}),1e3*(n<=10?n:n-10)),t.next=9,this._dataLayer.setTemporaryDataParameter(Ef,JSON.stringify(r));case 9:case"end":return t.stop()}}),t,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return BX(this,void 0,void 0,zX.mark((function t(){var e;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter(Ef);case 2:if(!t.sent){t.next=9;break}return t.t0=JSON,t.next=6,this._dataLayer.getTemporaryDataParameter(Ef);case 6:t.t1=t.sent,e=t.t0.parse.call(t.t0,t.t1),clearTimeout(e);case 9:case"end":return t.stop()}}),t,this)})))}}]),t}(),kv=function(){function t(){wX(this,t)}return FX(t,null,[{key:"removeAuthorizationCode",value:function(){var t=location.href;history.pushState({},document.title,t.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(){var t;return null!==(t=sessionStorage.getItem(Of))&&void 0!==t?t:""}},{key:"setPKCE",value:function(t){sessionStorage.setItem(Of,t)}},{key:"setSignOutURL",value:function(t){sessionStorage.setItem($f,t)}},{key:"getSignOutURL",value:function(){var t;return null!==(t=sessionStorage.getItem($f))&&void 0!==t?t:""}},{key:"removePKCE",value:function(){sessionStorage.removeItem(Of)}},{key:"canContinueSignIn",value:function(e,n){return!(e&&!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return t.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var t=sessionStorage.getItem("initialized-silent-sign-in"),e=t?JSON.parse(t):null;return Boolean(e)}},{key:"isSignOutSuccessful",value:function(){if(mv.isSignOutSuccessful(window.location.href)){var t=window.location.href.split("?")[0];return history.pushState({},document.title,t),!0}return!1}},{key:"isSilentStatePresentInURL",value:function(){return"sign-in-silently"===new URL(window.location.href).searchParams.get("state")}},{key:"hasAuthSearchParamsInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,e=/[?&]code=[^&]+/;return e.test(t)}},{key:"hasErrorInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href;return!!new URL(t).searchParams.get("error")}},{key:"canSendPromptNoneRequest",value:function(){var t=sessionStorage.getItem("promptNoneRequestSent");return!(t?JSON.parse(t):null)}},{key:"setPromptNoneRequestSent",value:function(t){sessionStorage.setItem("promptNoneRequestSent",JSON.stringify(t))}},{key:"waitTillPageRedirect",value:function(t){return BX(this,void 0,void 0,zX.mark((function e(){var n;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=null!=t?t:3e3,e.next=3,new Promise((function(t){return setTimeout(t,1e3*n)}));case 3:case"end":return e.stop()}}),e)})))}}]),t}(),Uv=(Cv=function(t,e,n,r,i,c,l,o){bv=t,pv=e,yv=n,Xv=c,Gv=l,gv=i,Sv=o,(Iv=r)>-1&&Yv(),gv>-1&&(i=setInterval((function(){Lv()}),1e3*gv))},Yv=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){var e,n,r,i;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=function(){var t;return BX(this,void 0,void 0,zX.mark((function e(){var r,i,c,l,o;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,yv();case 2:r=e.sent,Boolean(bv)&&Boolean(r)&&(i="".concat(bv," ").concat(r),c=document.getElementById("rpIFrame"),l=null===(t=null==c?void 0:c.contentDocument)||void 0===t?void 0:t.getElementById(n),null==(o=l.contentWindow)||o.postMessage(i,pv));case 4:case"end":return e.stop()}}),e)})))},pv&&bv&&Xv){t.next=3;break}return t.abrupt("return");case 3:return n="opIFrame",i=document.getElementById("rpIFrame"),(null===(e=null==i?void 0:i.contentDocument)||void 0===e?void 0:e.getElementById(n)).src=pv+"?client_id="+bv+"&redirect_uri="+Xv,t.next=9,r();case 9:Vv=setInterval(r,1e3*Iv),Kv();case 11:case"end":return t.stop()}}),t)})))},Rv=function(){clearInterval(Vv),clearInterval(void 0)},Kv=function(){null===window||void 0===window||window.addEventListener("message",(function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r;return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((r=pv)&&!((null==r?void 0:r.indexOf(t.origin))<0)&&"set_session_state_from_iframe"!==(null===(e=null==t?void 0:t.data)||void 0===e?void 0:e.type)){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==t.data){n.next=6;break}n.next=13;break;case 6:if("error"!==t.data){n.next=12;break}return n.next=9,fv();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===t.data&&Lv();case 13:case"end":return n.stop()}}),n)})))}),!1)},Lv=function(){var t,e=document.getElementById("rpIFrame"),n=null===(t=null==e?void 0:e.contentDocument)||void 0===t?void 0:t.getElementById("promptNoneIFrame");if(kv.canSendPromptNoneRequest()){kv.setPromptNoneRequestSent(!0),Wv!==lv.BrowserMemory&&Wv!==lv.WebWorker||null===window||void 0===window||window.addEventListener("message",(function t(e){var n,r,i;"set_session_state_from_iframe"===(null===(n=null==e?void 0:e.data)||void 0===n?void 0:n.type)&&(vv(null!==(i=null===(r=null==e?void 0:e.data)||void 0===r?void 0:r.data)&&void 0!==i?i:""),null===window||void 0===window||window.removeEventListener("message",t))}));var r=new URL(Gv);r.searchParams.set("response_type","code"),r.searchParams.set("client_id",bv),r.searchParams.set("scope","openid"),r.searchParams.set("redirect_uri",Xv),r.searchParams.set("state",hv),r.searchParams.set("prompt","none"),Sv&&(r.searchParams.set("code_challenge_method","S256"),r.searchParams.set("code_challenge",function(){for(var t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz-_",e="",n=0;n<43;n++){var r=Math.floor(Math.random()*t.length);e+=t.substring(r,r+1)}return e}())),n.src=r.toString()}},Jv=function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){var n,r,i,c,l,o,a,u,d,s;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=new URL(window.location.href).searchParams.get("state"),c=new URL(window.location.href).searchParams.get(qf),l=window.parent.parent,null===i||i!==hv&&"sign-in-silently"!==i){e.next=48;break}if(null===(o=new URL(window.location.href).searchParams.get("code"))||0===o.length){e.next=32;break}if("sign-in-silently"!==i){e.next=15;break}return a={data:{code:o,sessionState:null!=c?c:""},type:"check_session_signed_in"},sessionStorage.setItem("initialized-silent-sign-in","false"),l.postMessage(a,l.origin),kv.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=14,kv.waitTillPageRedirect();case 14:return e.abrupt("return",!0);case 15:if(u=new URL(window.location.href).searchParams.get("session_state"),Wv!==lv.LocalStorage&&Wv!==lv.SessionStorage){e.next=23;break}if(e.t0=t,!e.t0){e.next=21;break}return e.next=21,t(u);case 21:e.next=25;break;case 23:d={data:null!=u?u:"",type:"set_session_state_from_iframe"},null===(r=null===(n=null===window||void 0===window?void 0:window.parent)||void 0===n?void 0:n.parent)||void 0===r||r.postMessage(d);case 25:return kv.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=29,kv.waitTillPageRedirect();case 29:return e.abrupt("return",!0);case 32:if("sign-in-silently"!==i){e.next=40;break}return s={type:"check_session_signed_out"},window.parent.parent.postMessage(s,l.origin),kv.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=39,kv.waitTillPageRedirect();case 39:return e.abrupt("return",!0);case 40:return kv.setPromptNoneRequestSent(!1),e.next=43,fv();case 43:return l.location.href=e.sent,window.location.href="about:blank",e.next=47,kv.waitTillPageRedirect();case 47:return e.abrupt("return",!0);case 48:return e.abrupt("return",!1);case 49:case"end":return e.stop()}}),e)})))},function(t,e,n){var r,i=document.createElement("iframe");return i.setAttribute("id","rpIFrame"),i.style.display="none",i.onload=function(){var t,e,n,r,c=null==(i=document.getElementById("rpIFrame"))?void 0:i.contentDocument,l=null==c?void 0:c.createElement("iframe");l&&(l.setAttribute("id","opIFrame"),l.style.display="none");var o=null==c?void 0:c.createElement("iframe");o&&(o.setAttribute("id","promptNoneIFrame"),o.style.display="none"),l&&(null===(e=null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.body)||void 0===e||e.appendChild(l)),o&&(null===(r=null===(n=null==i?void 0:i.contentDocument)||void 0===n?void 0:n.body)||void 0===r||r.appendChild(o))},null===(r=null===document||void 0===document?void 0:document.body)||void 0===r||r.appendChild(i),fv=t,Wv=e,vv=n,{initialize:Cv,receivePromptNoneResponse:Jv,reset:Rv}});var wv=xv=function(){function t(){wX(this,t),this.attachToken=function(){return Promise.resolve()},this.requestStartCallback=function(){return null},this.requestSuccessCallback=function(){return null},this.requestErrorCallback=function(){return null},this.requestFinishCallback=function(){return null},this.init=this.init.bind(this),this.setHttpRequestErrorCallback=this.setHttpRequestErrorCallback.bind(this),this.setHttpRequestFinishCallback=this.setHttpRequestFinishCallback.bind(this),this.setHttpRequestStartCallback=this.setHttpRequestStartCallback.bind(this),this.setHttpRequestSuccessCallback=this.setHttpRequestSuccessCallback.bind(this)}return FX(t,[{key:"requestHandler",value:function(t){return BX(this,void 0,void 0,zX.mark((function e(){var n,r;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.attachToken(t);case 2:return(null==t?void 0:t.shouldEncodeToFormData)&&(n=null==t?void 0:t.data,r=new FormData,Object.keys(n).forEach((function(t){r.append(t,n[t])})),t.data=r),xv.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(t),e.abrupt("return",t);case 5:case"end":return e.stop()}}),e,this)})))}},{key:"errorHandler",value:function(t){throw xv.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"successHandler",value:function(t){return xv.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"init",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=arguments.length>1?arguments[1]:void 0;return BX(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:xv.isHandlerEnabled=t,this.attachToken=e;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){xv.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){xv.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:xv.DEFAULT_HANDLER_DISABLE_TIMEOUT;xv.isHandlerEnabled=!1,setTimeout((function(){xv.isHandlerEnabled=!0}),t)}},{key:"setHttpRequestStartCallback",value:function(t){this.requestStartCallback=t}},{key:"setHttpRequestSuccessCallback",value:function(t){this.requestSuccessCallback=t}},{key:"setHttpRequestErrorCallback",value:function(t){this.requestErrorCallback=t}},{key:"setHttpRequestFinishCallback",value:function(t){this.requestFinishCallback=t}}],[{key:"getInstance",value:function(){var t=this;return this.axiosInstance||(this.axiosInstance=Nf.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new xv),this.axiosInstance.interceptors.request.use((function(e){return BX(t,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.clientInstance.requestHandler(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))})),this.axiosInstance.interceptors.response.use((function(e){return t.clientInstance.successHandler(e)}),(function(e){return t.clientInstance.errorHandler(e)})),this.axiosInstance.all=Nf.all,this.axiosInstance.spread=Nf.spread,this.axiosInstance.init=this.clientInstance.init,this.axiosInstance.enableHandler=this.clientInstance.enableHandler,this.axiosInstance.disableHandler=this.clientInstance.disableHandler,this.axiosInstance.disableHandlerWithTimeout=this.clientInstance.disableHandlerWithTimeout,this.axiosInstance.setHttpRequestStartCallback=this.clientInstance.setHttpRequestStartCallback,this.axiosInstance.setHttpRequestSuccessCallback=this.clientInstance.setHttpRequestSuccessCallback,this.axiosInstance.setHttpRequestErrorCallback=this.clientInstance.setHttpRequestErrorCallback,this.axiosInstance.setHttpRequestFinishCallback=this.clientInstance.setHttpRequestFinishCallback),this.axiosInstance}}]),t}();wv.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,wv=xv=function(t,e,n,r){var i,c=arguments.length,o=c<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"===("undefined"==typeof Reflect?"undefined":l(Reflect))&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,r);else for(var a=t.length-1;a>=0;a--)(i=t[a])&&(o=(c<3?i(o):c>3?i(e,n,o):i(e,n))||o);return c>3&&o&&Object.defineProperty(e,n,o),o}([function(t){}],wv);var Tv=function(){function t(){wX(this,t)}return FX(t,[{key:"setData",value:function(t,e){return BX(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=localStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return BX(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:localStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}(),Fv=function(){function t(){wX(this,t),this._data=new Map}return FX(t,[{key:"setData",value:function(t,e){return BX(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(t,e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(t){var e,n;return BX(this,void 0,void 0,zX.mark((function r(){return zX.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",null!==(n=null===(e=this._data)||void 0===e?void 0:e.get(t))&&void 0!==n?n:"{}");case 1:case"end":return r.stop()}}),r,this)})))}},{key:"removeData",value:function(t){return BX(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._data.delete(t);case 1:case"end":return e.stop()}}),e,this)})))}}]),t}(),zv=function(){function t(){wX(this,t)}return FX(t,[{key:"setData",value:function(t,e){return BX(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=sessionStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return BX(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:sessionStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}();function Bv(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return jv(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return jv(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,l=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return l=t.done,t},e:function(t){o=!0,c=t},f:function(){try{l||null==n.return||n.return()}finally{if(o)throw c}}}}function jv(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var Mv=function(t){switch(t){case lv.LocalStorage:return new Tv;case lv.SessionStorage:return new zv;case lv.BrowserMemory:return new Fv;default:return new zv}},Qv=function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){var n,r,i,c,l,o,a,u,d,s,m,h,Z,b,p,y,I,X,G,g,f,V,W,v,S,C,Y,R,K,L,J,x,H,N,k,U;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=Mv(t.storage),i=new mv(r),e.next=4,i.initialize(t);case 4:if(c=new Nv(i),l=i.getDataLayer(),o=Uv((function(){return BX(void 0,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.signOut());case 1:case"end":return t.stop()}}),t)})))}),null!==(n=t.storage)&&void 0!==n?n:lv.SessionStorage,(function(t){return l.setSessionDataParameter(qf,null!=t?t:"")})),a=wv.getInstance(),u=!0,m=function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Object.assign({attachToken:!0},t).attachToken){e.next=11;break}return e.t0=Object,e.t1=Object.assign({},t.headers),e.t2="Bearer ",e.next=7,i.getAccessToken();case 7:e.t3=e.sent,e.t4=e.t2.concat.call(e.t2,e.t3),e.t5={Authorization:e.t4},t.headers=e.t0.assign.call(e.t0,e.t1,e.t5);case 11:case"end":return e.stop()}}),e)})))},e.t0=null==a?void 0:a.init,!e.t0){e.next=14;break}return e.next=14,a.init(!0,m);case 14:return h=function(t){(null==a?void 0:a.setHttpRequestStartCallback)&&a.setHttpRequestStartCallback(t)},Z=function(t){(null==a?void 0:a.setHttpRequestSuccessCallback)&&a.setHttpRequestSuccessCallback(t)},b=function(t){(null==a?void 0:a.setHttpRequestFinishCallback)&&a.setHttpRequestFinishCallback(t),s=t},p=function(t){d=t},y=function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){var n,r,i,c,o,m,h;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=!1,e.next=3,l.getConfigData();case 3:return c=e.sent,o=0,e.t0=[],e.t1=DX,e.next=9,null==c?void 0:c.resourceServerURLs;case 9:if(e.t3=n=e.sent,e.t2=null!==e.t3,!e.t2){e.next=13;break}e.t2=void 0!==n;case 13:if(!e.t2){e.next=17;break}e.t4=n,e.next=18;break;case 17:e.t4=[];case 18:e.t5=e.t4,e.t6=(0,e.t1)(e.t5),e.t7=[null==c?void 0:c.serverOrigin],m=e.t0.concat.call(e.t0,e.t6,e.t7);case 22:if(!(o<m.length)){e.next=30;break}if(h=m[o],!(null===(r=null==t?void 0:t.url)||void 0===r?void 0:r.startsWith(h))){e.next=27;break}return i=!0,e.abrupt("break",30);case 27:o++,e.next=22;break;case 30:if(!i){e.next=34;break}return e.abrupt("return",a.request(t).then((function(t){return Promise.resolve(t)})).catch((function(e){return BX(void 0,void 0,void 0,zX.mark((function n(){var r,i,c;return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(401!==(null===(r=null==e?void 0:e.response)||void 0===r?void 0:r.status)&&(null==e?void 0:e.response)){n.next=31;break}return n.prev=1,n.next=4,S();case 4:i=n.sent,n.next=15;break;case 7:if(n.prev=7,n.t0=n.catch(1),!u){n.next=14;break}if("function"!=typeof d){n.next=13;break}return n.next=13,d(e);case 13:"function"==typeof s&&s();case 14:return n.abrupt("return",Promise.reject(new Hv("MAIN_THREAD_CLIENT-HR-ES01","main-thread-client","httpRequest","","",n.t0)));case 15:if(!i){n.next=31;break}return n.prev=16,n.next=19,a.request(t);case 19:return c=n.sent,n.abrupt("return",Promise.resolve(c));case 23:if(n.prev=23,n.t1=n.catch(16),!u){n.next=30;break}if("function"!=typeof d){n.next=29;break}return n.next=29,d(n.t1);case 29:"function"==typeof s&&s();case 30:return n.abrupt("return",Promise.reject(n.t1));case 31:if(!u){n.next=36;break}if("function"!=typeof d){n.next=35;break}return n.next=35,d(e);case 35:"function"==typeof s&&s();case 36:return n.abrupt("return",Promise.reject(e));case 37:case"end":return n.stop()}}),n,null,[[1,7],[16,23]])})))})));case 34:return e.abrupt("return",Promise.reject(new Hv("MAIN_THREAD_CLIENT-HR-IV02","main-thread-client","httpRequest","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`")));case 35:case"end":return e.stop()}}),e)})))},I=function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){var n,r,c,o,m,h,Z,b,p,y,I,X,G;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=!0,e.next=3,l.getConfigData();case 3:m=e.sent,h=Bv(t),e.prev=5,h.s();case 7:if((Z=h.n()).done){e.next=50;break}return b=Z.value,p=!1,y=0,e.t0=[],e.t1=DX,e.next=15,m;case 15:if(e.t4=n=e.sent,e.t3=null===e.t4,e.t3){e.next=19;break}e.t3=void 0===n;case 19:if(!e.t3){e.next=23;break}e.t5=void 0,e.next=24;break;case 23:e.t5=n.resourceServerURLs;case 24:if(e.t6=r=e.t5,e.t2=null!==e.t6,!e.t2){e.next=28;break}e.t2=void 0!==r;case 28:if(!e.t2){e.next=32;break}e.t7=r,e.next=33;break;case 32:e.t7=[];case 33:e.t8=e.t7,e.t9=(0,e.t1)(e.t8),e.t10=[null==m?void 0:m.serverOrigin],I=e.t0.concat.call(e.t0,e.t9,e.t10);case 37:if(!(y<I.length)){e.next=45;break}if(X=I[y],!(null===(c=b.url)||void 0===c?void 0:c.startsWith(X))){e.next=42;break}return p=!0,e.abrupt("break",45);case 42:y++,e.next=37;break;case 45:if(p){e.next=48;break}return o=!1,e.abrupt("break",50);case 48:e.next=7;break;case 50:e.next=55;break;case 52:e.prev=52,e.t11=e.catch(5),h.e(e.t11);case 55:return e.prev=55,h.f(),e.finish(55);case 58:if(G=[],!o){e.next=64;break}return t.forEach((function(t){G.push(a.request(t))})),e.abrupt("return",(null==a?void 0:a.all)&&a.all(G).then((function(t){return Promise.resolve(t)})).catch((function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){var n,r;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(401!==(null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status)&&(null==t?void 0:t.response)){e.next=17;break}return e.prev=1,e.next=4,i.refreshAccessToken();case 4:r=e.sent,e.next=15;break;case 7:if(e.prev=7,e.t0=e.catch(1),!u){e.next=14;break}if("function"!=typeof d){e.next=13;break}return e.next=13,d(t);case 13:"function"==typeof s&&s();case 14:return e.abrupt("return",Promise.reject(new Hv("MAIN_THREAD_CLIENT-HRA-ES01","main-thread-client","httpRequestAll","","",e.t0)));case 15:if(!r){e.next=17;break}return e.abrupt("return",a.all&&a.all(G).then((function(t){return Promise.resolve(t)})).catch((function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!u){e.next=5;break}if("function"!=typeof d){e.next=4;break}return e.next=4,d(t);case 4:"function"==typeof s&&s();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))})));case 17:if(!u){e.next=22;break}if("function"!=typeof d){e.next=21;break}return e.next=21,d(t);case 21:"function"==typeof s&&s();case 22:return e.abrupt("return",Promise.reject(t));case 23:case"end":return e.stop()}}),e,null,[[1,7]])})))})));case 64:return e.abrupt("return",Promise.reject(new Hv("MAIN_THREAD_CLIENT-HRA-IV02","main-thread-client","httpRequest","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`")));case 65:case"end":return e.stop()}}),e,null,[[5,52,55,58]])})))},X=function(){return a},G=function(){return(null==a?void 0:a.enableHandler)&&a.enableHandler(),u=!0,!0},g=function(){return(null==a?void 0:a.disableHandler)&&a.disableHandler(),u=!1,!0},f=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){var e,n,r,c,a,u;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,i.getOIDCServiceEndpoints();case 2:return a=t.sent,t.next=5,l.getConfigData();case 5:u=t.sent,o.initialize(u.clientID,null!==(e=a.checkSessionIframe)&&void 0!==e?e:"",(function(){return BX(void 0,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,i.getBasicUserInfo();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),null!==(n=u.checkSessionInterval)&&void 0!==n?n:3,null!==(r=u.sessionRefreshInterval)&&void 0!==r?r:300,u.signInRedirectURL,null!==(c=a.authorizationEndpoint)&&void 0!==c?c:"",u.enablePKCE);case 7:case"end":return t.stop()}}),t)})))},V=function(t,e,n){return BX(void 0,void 0,void 0,zX.mark((function r(){var a,u,d,s,m,h,Z,b;return zX.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,l.getConfigData();case 2:return d=r.sent,r.next=5,o.receivePromptNoneResponse((function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.setSessionDataParameter(qf,null!=t?t:"");case 2:return e.abrupt("return");case 3:case"end":return e.stop()}}),e)})))}));case 5:if(!r.sent){r.next=8;break}return r.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:return r.next=10,i.isAuthenticated();case 10:if(!r.sent){r.next=19;break}return c.clearRefreshTokenTimeout(),c.refreshAccessTokenAutomatically(),d.enableOIDCSessionManagement&&f(),r.t0=Promise,r.next=17,i.getBasicUserInfo();case 17:return r.t1=r.sent,r.abrupt("return",r.t0.resolve.call(r.t0,r.t1));case 19:if((null==d?void 0:d.responseMode)===xf.formPost&&e?(s=e,m=null!=n?n:""):(s=null!==(a=new URL(window.location.href).searchParams.get(_f))&&void 0!==a?a:"",m=null!==(u=new URL(window.location.href).searchParams.get(qf))&&void 0!==u?u:"",kv.removeAuthorizationCode()),!s){r.next=22;break}return r.abrupt("return",Y(s,m));case 22:if(h=new URL(window.location.href).searchParams.get("error"),Z=new URL(window.location.href).searchParams.get("error_description"),!h){r.next=30;break}return(b=new URL(window.location.href)).searchParams.delete("error"),b.searchParams.delete("error_description"),history.pushState(null,document.title,b.toString()),r.abrupt("return",Promise.reject(new Hv("MAIN_THREAD_CLIENT-SI-BE","main-thread-client","signIn",h,null!=Z?Z:"")));case 30:return r.abrupt("return",i.getAuthorizationURL(t).then((function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(d.storage!==lv.BrowserMemory||!d.enablePKCE){e.next=6;break}return e.t0=kv,e.next=4,i.getPKCECode();case 4:e.t1=e.sent,e.t0.setPKCE.call(e.t0,e.t1);case 6:return location.href=t,e.next=9,kv.waitTillPageRedirect();case 9:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 10:case"end":return e.stop()}}),e)})))})));case 31:case"end":return r.stop()}}),r)})))},W=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,i.isAuthenticated();case 2:if(!t.sent){t.next=8;break}return t.next=5,i.signOut();case 5:location.href=t.sent,t.next=9;break;case 8:location.href=kv.getSignOutURL();case 9:return c.clearRefreshTokenTimeout(),t.next=12,kv.waitTillPageRedirect();case 12:return t.abrupt("return",!0);case 13:case"end":return t.stop()}}),t)})))},v=function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){var n,r,o,a,u,d,s,m,h;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=!0,u=!1,e.next=4,l.getConfigData();case 4:if(d=e.sent,!(null==t?void 0:t.tokenEndpoint)){e.next=42;break}return a=!1,s=0,e.t0=[],e.t1=DX,e.next=12,l.getConfigData();case 12:if(e.t4=n=e.sent,e.t3=null===e.t4,e.t3){e.next=16;break}e.t3=void 0===n;case 16:if(!e.t3){e.next=20;break}e.t5=void 0,e.next=21;break;case 20:e.t5=n.resourceServerURLs;case 21:if(e.t6=r=e.t5,e.t2=null!==e.t6,!e.t2){e.next=25;break}e.t2=void 0!==r;case 25:if(!e.t2){e.next=29;break}e.t7=r,e.next=30;break;case 29:e.t7=[];case 30:e.t8=e.t7,e.t9=(0,e.t1)(e.t8),e.t10=[null==d?void 0:d.serverOrigin],m=e.t0.concat.call(e.t0,e.t9,e.t10);case 34:if(!(s<m.length)){e.next=42;break}if(h=m[s],!(null===(o=t.tokenEndpoint)||void 0===o?void 0:o.startsWith(h))){e.next=39;break}return u=!0,e.abrupt("break",42);case 39:s++,e.next=34;break;case 42:if(t.shouldReplayAfterRefresh&&l.setTemporaryDataParameter("custom_grant_config",JSON.stringify(t)),!a&&!u){e.next=47;break}return e.abrupt("return",i.requestCustomGrant(t).then((function(e){return BX(void 0,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!t.returnsSession){n.next=5;break}return c.refreshAccessTokenAutomatically(),n.abrupt("return",i.getBasicUserInfo());case 5:return n.abrupt("return",e);case 6:case"end":return n.stop()}}),n)})))})).catch((function(t){return Promise.reject(t)})));case 47:return e.abrupt("return",Promise.reject(new Hv("MAIN_THREAD_CLIENT-RCG-IV01","main-thread-client","requestCustomGrant","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`")));case 48:case"end":return e.stop()}}),e)})))},S=function(){return i.refreshAccessToken().then((function(){return U().then((function(t){t&&v(t)})),c.refreshAccessTokenAutomatically(),i.getBasicUserInfo()})).catch((function(t){return Promise.reject(t)}))},C=function(){return i.revokeAccessToken().then((function(){return o.reset(),c.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},Y=function(t,e){return BX(void 0,void 0,void 0,zX.mark((function n(){var r,o;return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,l.getConfigData();case 2:if((r=n.sent).storage!==lv.BrowserMemory||!r.enablePKCE){n.next=7;break}return o=kv.getPKCE(),n.next=7,i.setPKCECode(o);case 7:return n.abrupt("return",i.requestAccessToken(t,e).then((function(){return BX(void 0,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r.storage!==lv.BrowserMemory){t.next=6;break}return t.t0=kv,t.next=4,i.getSignOutURL();case 4:t.t1=t.sent,t.t0.setSignOutURL.call(t.t0,t.t1);case 6:return c.clearRefreshTokenTimeout(),c.refreshAccessTokenAutomatically(),r.enableOIDCSessionManagement&&f(),t.abrupt("return",i.getBasicUserInfo());case 10:case"end":return t.stop()}}),t)})))})).catch((function(t){return Promise.reject(t)})));case 8:case"end":return n.stop()}}),n)})))},R=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){var e,n,r,c,a,u,d;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getConfigData();case 2:if(n=t.sent,!kv.isInitializedSilentSignIn()){t.next=7;break}return t.next=6,o.receivePromptNoneResponse();case 6:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return r=document.getElementById("rpIFrame"),c=null===(e=null==r?void 0:r.contentDocument)||void 0===e?void 0:e.getElementById("promptNoneIFrame"),t.prev=9,t.next=12,i.getAuthorizationURL({prompt:"none",state:"sign-in-silently"});case 12:if(a=t.sent,(u=new URL(a)).searchParams.set("response_mode","query"),d=u.toString(),n.storage!==lv.BrowserMemory||!n.enablePKCE){t.next=22;break}return t.t0=kv,t.next=20,i.getPKCECode();case 20:t.t1=t.sent,t.t0.setPKCE.call(t.t0,t.t1);case 22:c.src=d,t.next=28;break;case 25:return t.prev=25,t.t2=t.catch(9),t.abrupt("return",Promise.reject(t.t2));case 28:return t.abrupt("return",new Promise((function(t,e){var n=setTimeout((function(){t(!1)}),1e4);window.addEventListener("message",(function r(i){return BX(void 0,void 0,void 0,zX.mark((function c(){var l,o,a;return zX.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:"check_session_signed_out"==(null==(a=i.data)?void 0:a.type)&&(window.removeEventListener("message",r),clearTimeout(n),t(!1)),"check_session_signed_in"==(null==a?void 0:a.type)&&(null===(l=null==a?void 0:a.data)||void 0===l?void 0:l.code)&&Y(a.data.code,null===(o=null==a?void 0:a.data)||void 0===o?void 0:o.sessionState).then((function(e){window.removeEventListener("message",r),t(e)})).catch((function(t){window.removeEventListener("message",r),e(t)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 29:case"end":return t.stop()}}),t,null,[[9,25]])})))},K=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.getBasicUserInfo());case 1:case"end":return t.stop()}}),t)})))},L=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.getDecodedIDToken());case 1:case"end":return t.stop()}}),t)})))},J=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.getIDToken());case 1:case"end":return t.stop()}}),t)})))},x=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t)})))},H=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.getAccessToken());case 1:case"end":return t.stop()}}),t)})))},N=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",i.isAuthenticated());case 1:case"end":return t.stop()}}),t)})))},k=function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){var n,r,c;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.getConfigData();case 2:return n=e.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),c=Object.assign(Object.assign({},n),t),e.next=7,i.updateConfig(c);case 7:c.enableOIDCSessionManagement&&r&&(o.reset(),f());case 8:case"end":return e.stop()}}),e)})))},U=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){var e;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getTemporaryDataParameter("custom_grant_config");case 2:if(!(e=t.sent)){t.next=7;break}return t.abrupt("return",JSON.parse(e));case 7:return t.abrupt("return",null);case 8:case"end":return t.stop()}}),t)})))},e.abrupt("return",{disableHttpHandler:g,enableHttpHandler:G,getAccessToken:H,getBasicUserInfo:K,getDecodedIDToken:L,getHttpClient:X,getIDToken:J,getOIDCServiceEndpoints:x,httpRequest:y,httpRequestAll:I,isAuthenticated:N,refreshAccessToken:S,requestCustomGrant:v,revokeAccessToken:C,setHttpRequestErrorCallback:p,setHttpRequestFinishCallback:b,setHttpRequestStartCallback:h,setHttpRequestSuccessCallback:Z,signIn:V,signOut:W,trySignInSilently:R,updateConfig:k});case 40:case"end":return e.stop()}}),e)})))};function Pv(t,e,n){var r=void 0===e?null:e,i=function(t,e){var n=atob(t);if(e){for(var r=new Uint8Array(n.length),i=0,c=n.length;i<c;++i)r[i]=n.charCodeAt(i);return String.fromCharCode.apply(null,new Uint16Array(r.buffer))}return n}(t,void 0!==n&&n),c=i.indexOf("\n",10)+1,l=i.substring(c)+(r?"//# sourceMappingURL="+r:""),o=new Blob([l],{type:"application/javascript"});return URL.createObjectURL(o)}var Av,Dv,Ev,Ov,_v=(Av="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiZGVmYXVsdCIpP2UuZGVmYXVsdDplfWZ1bmN0aW9uIHQoZSx0LHIpe3JldHVybiBlKHI9e3BhdGg6dCxleHBvcnRzOnt9LHJlcXVpcmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgcmVxdWlyZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IEByb2xsdXAvcGx1Z2luLWNvbW1vbmpzIil9KG51bGw9PXQmJnIucGF0aCl9fSxyLmV4cG9ydHMpLHIuZXhwb3J0c312YXIgcj10KChmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yPyhlLmV4cG9ydHM9dD1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCk6KGUuZXhwb3J0cz10PWZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwKSx0KHIpfWUuZXhwb3J0cz10LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxuPWUociksbz10KChmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdCxyPU9iamVjdC5wcm90b3R5cGUsbz1yLmhhc093blByb3BlcnR5LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIscz1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHU9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGMoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7Yyh7fSwiIil9Y2F0Y2goZSl7Yz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gZihlLHQscixuKXt2YXIgbz10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIHk/dDp5LGk9T2JqZWN0LmNyZWF0ZShvLnByb3RvdHlwZSksYT1uZXcgQyhufHxbXSk7cmV0dXJuIGkuX2ludm9rZT1mdW5jdGlvbihlLHQscil7dmFyIG49bDtyZXR1cm4gZnVuY3Rpb24obyxpKXtpZihuPT09ZCl0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihuPT09dil7aWYoInRocm93Ij09PW8pdGhyb3cgaTtyZXR1cm4gTygpfWZvcihyLm1ldGhvZD1vLHIuYXJnPWk7Oyl7dmFyIGE9ci5kZWxlZ2F0ZTtpZihhKXt2YXIgcz1BKGEscik7aWYocyl7aWYocz09PWcpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihuPT09bCl0aHJvdyBuPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPWQ7dmFyIHU9aChlLHQscik7aWYoIm5vcm1hbCI9PT11LnR5cGUpe2lmKG49ci5kb25lP3Y6cCx1LmFyZz09PWcpY29udGludWU7cmV0dXJue3ZhbHVlOnUuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09dS50eXBlJiYobj12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9dS5hcmcpfX19KGUscixhKSxpfWZ1bmN0aW9uIGgoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9Zjt2YXIgbD0ic3VzcGVuZGVkU3RhcnQiLHA9InN1c3BlbmRlZFlpZWxkIixkPSJleGVjdXRpbmciLHY9ImNvbXBsZXRlZCIsZz17fTtmdW5jdGlvbiB5KCl7fWZ1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gdygpe312YXIgYj17fTtjKGIsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgaz1PYmplY3QuZ2V0UHJvdG90eXBlT2YseD1rJiZrKGsoUChbXSkpKTt4JiZ4IT09ciYmby5jYWxsKHgsYSkmJihiPXgpO3ZhciBfPXcucHJvdG90eXBlPXkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYik7ZnVuY3Rpb24gUyhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2MoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gRShlLHQpe2Z1bmN0aW9uIHIoaSxhLHMsdSl7dmFyIGM9aChlW2ldLGUsYSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIGY9Yy5hcmcsbD1mLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09PW4obCkmJm8uY2FsbChsLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7cigibmV4dCIsZSxzLHUpfSksKGZ1bmN0aW9uKGUpe3IoInRocm93IixlLHMsdSl9KSk6dC5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKGUpe2YudmFsdWU9ZSxzKGYpfSksKGZ1bmN0aW9uKGUpe3JldHVybiByKCJ0aHJvdyIsZSxzLHUpfSkpfXUoYy5hcmcpfXZhciBpO3RoaXMuX2ludm9rZT1mdW5jdGlvbihlLG4pe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsbyl7cihlLG4sdCxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19ZnVuY3Rpb24gQShlLHIpe3ZhciBuPWUuaXRlcmF0b3Jbci5tZXRob2RdO2lmKG49PT10KXtpZihyLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXIubWV0aG9kKXtpZihlLml0ZXJhdG9yLnJldHVybiYmKHIubWV0aG9kPSJyZXR1cm4iLHIuYXJnPXQsQShlLHIpLCJ0aHJvdyI9PT1yLm1ldGhvZCkpcmV0dXJuIGc7ci5tZXRob2Q9InRocm93IixyLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kIil9cmV0dXJuIGd9dmFyIG89aChuLGUuaXRlcmF0b3Isci5hcmcpO2lmKCJ0aHJvdyI9PT1vLnR5cGUpcmV0dXJuIHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9by5hcmcsci5kZWxlZ2F0ZT1udWxsLGc7dmFyIGk9by5hcmc7cmV0dXJuIGk/aS5kb25lPyhyW2UucmVzdWx0TmFtZV09aS52YWx1ZSxyLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09ci5tZXRob2QmJihyLm1ldGhvZD0ibmV4dCIsci5hcmc9dCksci5kZWxlZ2F0ZT1udWxsLGcpOmk6KHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxyLmRlbGVnYXRlPW51bGwsZyl9ZnVuY3Rpb24gVChlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBSKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBDKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goVCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBQKGUpe2lmKGUpe3ZhciByPWVbYV07aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG49LTEsaT1mdW5jdGlvbiByKCl7Zm9yKDsrK248ZS5sZW5ndGg7KWlmKG8uY2FsbChlLG4pKXJldHVybiByLnZhbHVlPWVbbl0sci5kb25lPSExLHI7cmV0dXJuIHIudmFsdWU9dCxyLmRvbmU9ITAscn07cmV0dXJuIGkubmV4dD1pfX1yZXR1cm57bmV4dDpPfX1mdW5jdGlvbiBPKCl7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19cmV0dXJuIG0ucHJvdG90eXBlPXcsYyhfLCJjb25zdHJ1Y3RvciIsdyksYyh3LCJjb25zdHJ1Y3RvciIsbSksbS5kaXNwbGF5TmFtZT1jKHcsdSwiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHcpOihlLl9fcHJvdG9fXz13LGMoZSx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKF8pLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LFMoRS5wcm90b3R5cGUpLGMoRS5wcm90b3R5cGUscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9RSxlLmFzeW5jPWZ1bmN0aW9uKHQscixuLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEUoZih0LHIsbixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOmEubmV4dCgpfSkpfSxTKF8pLGMoXyx1LCJHZW5lcmF0b3IiKSxjKF8sYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKF8sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdC5wdXNoKHIpO3JldHVybiB0LnJldmVyc2UoKSxmdW5jdGlvbiByKCl7Zm9yKDt0Lmxlbmd0aDspe3ZhciBuPXQucG9wKCk7aWYobiBpbiBlKXJldHVybiByLnZhbHVlPW4sci5kb25lPSExLHJ9cmV0dXJuIHIuZG9uZT0hMCxyfX0sZS52YWx1ZXM9UCxDLnByb3RvdHlwZT17Y29uc3RydWN0b3I6QyxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goUiksIWUpZm9yKHZhciByIGluIHRoaXMpInQiPT09ci5jaGFyQXQoMCkmJm8uY2FsbCh0aGlzLHIpJiYhaXNOYU4oK3Iuc2xpY2UoMSkpJiYodGhpc1tyXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgZT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciByPXRoaXM7ZnVuY3Rpb24gbihuLG8pe3JldHVybiBzLnR5cGU9InRocm93IixzLmFyZz1lLHIubmV4dD1uLG8mJihyLm1ldGhvZD0ibmV4dCIsci5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSxzPWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbigiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHU9by5jYWxsKGEsImNhdGNoTG9jIiksYz1vLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHUmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBuKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG4oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHUpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBuKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG4oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIG49dGhpcy50cnlFbnRyaWVzW3JdO2lmKG4udHJ5TG9jPD10aGlzLnByZXYmJm8uY2FsbChuLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxuLmZpbmFsbHlMb2Mpe3ZhciBpPW47YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPWUsYS5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxnKTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGd9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksUihyKSxnfX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBvPW4uYXJnO1Iocil9cmV0dXJuIG99fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpQKGUpLHJlc3VsdE5hbWU6cixuZXh0TG9jOm59LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCksZ319LGV9KGUuZXhwb3J0cyk7dHJ5e3JlZ2VuZXJhdG9yUnVudGltZT10fWNhdGNoKGUpeyJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgZ2xvYmFsVGhpcz8idW5kZWZpbmVkIjpuKGdsb2JhbFRoaXMpKT9nbG9iYWxUaGlzLnJlZ2VuZXJhdG9yUnVudGltZT10OkZ1bmN0aW9uKCJyIiwicmVnZW5lcmF0b3JSdW50aW1lID0gciIpKHQpfX0pKSxpPW87ZnVuY3Rpb24gYShlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBhKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9vKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihhLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX12YXIgcz10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLHU9dCgoZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHMoZSl9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxjPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxmPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gcyhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3MoZSx0KTp2b2lkIDB9fSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksaD10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLGw9ZSh0KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSl8fGMoZSl8fGYoZSl8fGgoKX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpKSxwPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksZD10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLG8saT1bXSxhPSEwLHM9ITE7dHJ5e2ZvcihyPXIuY2FsbChlKTshKGE9KG49ci5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKG4udmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChlKXtzPSEwLG89ZX1maW5hbGx5e3RyeXthfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgb319cmV0dXJuIGl9fSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksdj10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksZz10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlKXx8ZChlLHQpfHxmKGUsdCl8fHYoKX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLHk9ZShnKSxtPXQoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiByJiZ0KGUucHJvdG90eXBlLHIpLG4mJnQoZSxuKSxlfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksdz1lKG0pLGI9ZSh0KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSkpLGs9dCgoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQscixuLG8saSxhKXt0cnl7dmFyIHM9ZVtpXShhKSx1PXMudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcihlKX1zLmRvbmU/dCh1KTpQcm9taXNlLnJlc29sdmUodSkudGhlbihuLG8pfWUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obyxpKXt2YXIgYT1lLmFwcGx5KHIsbik7ZnVuY3Rpb24gcyhlKXt0KGEsbyxpLHMsdSwibmV4dCIsZSl9ZnVuY3Rpb24gdShlKXt0KGEsbyxpLHMsdSwidGhyb3ciLGUpfXModm9pZCAwKX0pKX19LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSx4PWUoayksXz1lKHQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSkpLFM9dCgoZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLEU9ZShTKSxBPXQoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixuKXtyZXR1cm4gZS5leHBvcnRzPXQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCx0KHIsbil9ZS5leHBvcnRzPXQsZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLFQ9ZSh0KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmQShlLHQpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSkpLFI9dCgoZnVuY3Rpb24oZSl7dmFyIHQ9ci5kZWZhdWx0O2UuZXhwb3J0cz1mdW5jdGlvbihlLHIpe2lmKHImJigib2JqZWN0Ij09PXQocil8fCJmdW5jdGlvbiI9PXR5cGVvZiByKSlyZXR1cm4gcjtpZih2b2lkIDAhPT1yKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIFMoZSl9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxDPWUoUiksUD10KChmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3JldHVybiBlLmV4cG9ydHM9dD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITAsdChyKX1lLmV4cG9ydHM9dCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksTz1lKFApLEQ9dCgoZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybi0xIT09RnVuY3Rpb24udG9TdHJpbmcuY2FsbChlKS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIil9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxJPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxVPXQoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixuLG8pe3JldHVybiBJKCk/KGUuZXhwb3J0cz10PVJlZmxlY3QuY29uc3RydWN0LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCk6KGUuZXhwb3J0cz10PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1bbnVsbF07bi5wdXNoLmFwcGx5KG4sdCk7dmFyIG89bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHkoZSxuKSk7cmV0dXJuIHImJkEobyxyLnByb3RvdHlwZSksb30sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwKSx0LmFwcGx5KG51bGwsYXJndW1lbnRzKX1lLmV4cG9ydHM9dCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksTT10KChmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGUuZXhwb3J0cz10PWZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHwhRChlKSlyZXR1cm4gZTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2lmKHZvaWQgMCE9PW4pe2lmKG4uaGFzKGUpKXJldHVybiBuLmdldChlKTtuLnNldChlLHQpfWZ1bmN0aW9uIHQoKXtyZXR1cm4gVShlLGFyZ3VtZW50cyxQKHRoaXMpLmNvbnN0cnVjdG9yKX1yZXR1cm4gdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksQSh0LGUpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITAsdChyKX1lLmV4cG9ydHM9dCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksTD1lKE0pLGo9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSxIPVtdLEI9W10scT0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxOPSExO2Z1bmN0aW9uIEYoKXtOPSEwO2Zvcih2YXIgZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsdD0wLHI9ZS5sZW5ndGg7dDxyOysrdClIW3RdPWVbdF0sQltlLmNoYXJDb2RlQXQodCldPXQ7QlsiLSIuY2hhckNvZGVBdCgwKV09NjIsQlsiXyIuY2hhckNvZGVBdCgwKV09NjN9ZnVuY3Rpb24gSyhlLHQscil7Zm9yKHZhciBuLG8saT1bXSxhPXQ7YTxyO2ErPTMpbj0oZVthXTw8MTYpKyhlW2ErMV08PDgpK2VbYSsyXSxpLnB1c2goSFsobz1uKT4+MTgmNjNdK0hbbz4+MTImNjNdK0hbbz4+NiY2M10rSFs2MyZvXSk7cmV0dXJuIGkuam9pbigiIil9ZnVuY3Rpb24gWShlKXt2YXIgdDtOfHxGKCk7Zm9yKHZhciByPWUubGVuZ3RoLG49ciUzLG89IiIsaT1bXSxhPTE2MzgzLHM9MCx1PXItbjtzPHU7cys9YSlpLnB1c2goSyhlLHMscythPnU/dTpzK2EpKTtyZXR1cm4gMT09PW4/KHQ9ZVtyLTFdLG8rPUhbdD4+Ml0sbys9SFt0PDw0JjYzXSxvKz0iPT0iKToyPT09biYmKHQ9KGVbci0yXTw8OCkrZVtyLTFdLG8rPUhbdD4+MTBdLG8rPUhbdD4+NCY2M10sbys9SFt0PDwyJjYzXSxvKz0iPSIpLGkucHVzaChvKSxpLmpvaW4oIiIpfWZ1bmN0aW9uIFcoZSx0LHIsbixvKXt2YXIgaSxhLHM9OCpvLW4tMSx1PSgxPDxzKS0xLGM9dT4+MSxmPS03LGg9cj9vLTE6MCxsPXI/LTE6MSxwPWVbdCtoXTtmb3IoaCs9bCxpPXAmKDE8PC1mKS0xLHA+Pj0tZixmKz1zO2Y+MDtpPTI1NippK2VbdCtoXSxoKz1sLGYtPTgpO2ZvcihhPWkmKDE8PC1mKS0xLGk+Pj0tZixmKz1uO2Y+MDthPTI1NiphK2VbdCtoXSxoKz1sLGYtPTgpO2lmKDA9PT1pKWk9MS1jO2Vsc2V7aWYoaT09PXUpcmV0dXJuIGE/TmFOOjEvMCoocD8tMToxKTthKz1NYXRoLnBvdygyLG4pLGktPWN9cmV0dXJuKHA/LTE6MSkqYSpNYXRoLnBvdygyLGktbil9ZnVuY3Rpb24geihlLHQscixuLG8saSl7dmFyIGEscyx1LGM9OCppLW8tMSxmPSgxPDxjKS0xLGg9Zj4+MSxsPTIzPT09bz9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6aS0xLGQ9bj8xOi0xLHY9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PU1hdGguYWJzKHQpLGlzTmFOKHQpfHx0PT09MS8wPyhzPWlzTmFOKHQpPzE6MCxhPWYpOihhPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLHQqKHU9TWF0aC5wb3coMiwtYSkpPDEmJihhLS0sdSo9MiksKHQrPWEraD49MT9sL3U6bCpNYXRoLnBvdygyLDEtaCkpKnU+PTImJihhKyssdS89MiksYStoPj1mPyhzPTAsYT1mKTphK2g+PTE/KHM9KHQqdS0xKSpNYXRoLnBvdygyLG8pLGErPWgpOihzPXQqTWF0aC5wb3coMixoLTEpKk1hdGgucG93KDIsbyksYT0wKSk7bz49ODtlW3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsby09OCk7Zm9yKGE9YTw8b3xzLGMrPW87Yz4wO2VbcitwXT0yNTUmYSxwKz1kLGEvPTI1NixjLT04KTtlW3IrcC1kXXw9MTI4KnZ9dmFyIEo9e30udG9TdHJpbmcsRz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1KLmNhbGwoZSl9O2Z1bmN0aW9uIFYoKXtyZXR1cm4gWC5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiAkKGUsdCl7aWYoVigpPHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoIik7cmV0dXJuIFguVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSkuX19wcm90b19fPVgucHJvdG90eXBlOihudWxsPT09ZSYmKGU9bmV3IFgodCkpLGUubGVuZ3RoPXQpLGV9ZnVuY3Rpb24gWChlLHQscil7aWYoIShYLlRZUEVEX0FSUkFZX1NVUFBPUlR8fHRoaXMgaW5zdGFuY2VvZiBYKSlyZXR1cm4gbmV3IFgoZSx0LHIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gZWUodGhpcyxlKX1yZXR1cm4gWih0aGlzLGUsdCxyKX1mdW5jdGlvbiBaKGUsdCxyLG4pe2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJyk7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKHQuYnl0ZUxlbmd0aCxyPDB8fHQuYnl0ZUxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCInb2Zmc2V0JyBpcyBvdXQgb2YgYm91bmRzIik7aWYodC5ieXRlTGVuZ3RoPHIrKG58fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCInbGVuZ3RoJyBpcyBvdXQgb2YgYm91bmRzIik7dD12b2lkIDA9PT1yJiZ2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCxyKTpuZXcgVWludDhBcnJheSh0LHIsbik7WC5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQpLl9fcHJvdG9fXz1YLnByb3RvdHlwZTplPXRlKGUsdCk7cmV0dXJuIGV9KGUsdCxyLG4pOiJzdHJpbmciPT10eXBlb2YgdD9mdW5jdGlvbihlLHQscil7InN0cmluZyI9PXR5cGVvZiByJiYiIiE9PXJ8fChyPSJ1dGY4Iik7aWYoIVguaXNFbmNvZGluZyhyKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciZW5jb2RpbmciIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmcnKTt2YXIgbj0wfG9lKHQsciksbz0oZT0kKGUsbikpLndyaXRlKHQscik7byE9PW4mJihlPWUuc2xpY2UoMCxvKSk7cmV0dXJuIGV9KGUsdCxyKTpmdW5jdGlvbihlLHQpe2lmKG5lKHQpKXt2YXIgcj0wfHJlKHQubGVuZ3RoKTtyZXR1cm4gMD09PShlPSQoZSxyKSkubGVuZ3RofHx0LmNvcHkoZSwwLDAsciksZX1pZih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHwibGVuZ3RoImluIHQpcmV0dXJuIm51bWJlciIhPXR5cGVvZiB0Lmxlbmd0aHx8KG49dC5sZW5ndGgpIT1uPyQoZSwwKTp0ZShlLHQpO2lmKCJCdWZmZXIiPT09dC50eXBlJiZHKHQuZGF0YSkpcmV0dXJuIHRlKGUsdC5kYXRhKX12YXIgbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9KGUsdCl9ZnVuY3Rpb24gUShlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKTtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpfWZ1bmN0aW9uIGVlKGUsdCl7aWYoUSh0KSxlPSQoZSx0PDA/MDowfHJlKHQpKSwhWC5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgcj0wO3I8dDsrK3IpZVtyXT0wO3JldHVybiBlfWZ1bmN0aW9uIHRlKGUsdCl7dmFyIHI9dC5sZW5ndGg8MD8wOjB8cmUodC5sZW5ndGgpO2U9JChlLHIpO2Zvcih2YXIgbj0wO248cjtuKz0xKWVbbl09MjU1JnRbbl07cmV0dXJuIGV9ZnVuY3Rpb24gcmUoZSl7aWYoZT49VigpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitWKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIG5lKGUpe3JldHVybiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX1mdW5jdGlvbiBvZShlLHQpe2lmKG5lKGUpKXJldHVybiBlLmxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpfHxlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiBlLmJ5dGVMZW5ndGg7InN0cmluZyIhPXR5cGVvZiBlJiYoZT0iIitlKTt2YXIgcj1lLmxlbmd0aDtpZigwPT09cilyZXR1cm4gMDtmb3IodmFyIG49ITE7Oylzd2l0Y2godCl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ugdm9pZCAwOnJldHVybiBPZShlKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKnI7Y2FzZSJoZXgiOnJldHVybiByPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIERlKGUpLmxlbmd0aDtkZWZhdWx0OmlmKG4pcmV0dXJuIE9lKGUpLmxlbmd0aDt0PSgiIit0KS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIGllKGUsdCxyKXt2YXIgbj0hMTtpZigodm9pZCAwPT09dHx8dDwwKSYmKHQ9MCksdD50aGlzLmxlbmd0aClyZXR1cm4iIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVybiIiO2lmKChyPj4+PTApPD0odD4+Pj0wKSlyZXR1cm4iIjtmb3IoZXx8KGU9InV0ZjgiKTs7KXN3aXRjaChlKXtjYXNlImhleCI6cmV0dXJuIGJlKHRoaXMsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBnZSh0aGlzLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIG1lKHRoaXMsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiB3ZSh0aGlzLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiB2ZSh0aGlzLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBrZSh0aGlzLHQscik7ZGVmYXVsdDppZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZSk7ZT0oZSsiIikudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBhZShlLHQscil7dmFyIG49ZVt0XTtlW3RdPWVbcl0sZVtyXT1ufWZ1bmN0aW9uIHNlKGUsdCxyLG4sbyl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2Ygcj8obj1yLHI9MCk6cj4yMTQ3NDgzNjQ3P3I9MjE0NzQ4MzY0NzpyPC0yMTQ3NDgzNjQ4JiYocj0tMjE0NzQ4MzY0OCkscj0rcixpc05hTihyKSYmKHI9bz8wOmUubGVuZ3RoLTEpLHI8MCYmKHI9ZS5sZW5ndGgrcikscj49ZS5sZW5ndGgpe2lmKG8pcmV0dXJuLTE7cj1lLmxlbmd0aC0xfWVsc2UgaWYocjwwKXtpZighbylyZXR1cm4tMTtyPTB9aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1YLmZyb20odCxuKSksbmUodCkpcmV0dXJuIDA9PT10Lmxlbmd0aD8tMTp1ZShlLHQscixuLG8pO2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdCY9MjU1LFguVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/bz9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSx0LHIpOnVlKGUsW3RdLHIsbixvKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiB1ZShlLHQscixuLG8pe3ZhciBpLGE9MSxzPWUubGVuZ3RoLHU9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKCJ1Y3MyIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTthPTIscy89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiAxPT09YT9lW3RdOmUucmVhZFVJbnQxNkJFKHQqYSl9aWYobyl7dmFyIGY9LTE7Zm9yKGk9cjtpPHM7aSsrKWlmKGMoZSxpKT09PWModCwtMT09PWY/MDppLWYpKXtpZigtMT09PWYmJihmPWkpLGktZisxPT09dSlyZXR1cm4gZiphfWVsc2UtMSE9PWYmJihpLT1pLWYpLGY9LTF9ZWxzZSBmb3Iocit1PnMmJihyPXMtdSksaT1yO2k+PTA7aS0tKXtmb3IodmFyIGg9ITAsbD0wO2w8dTtsKyspaWYoYyhlLGkrbCkhPT1jKHQsbCkpe2g9ITE7YnJlYWt9aWYoaClyZXR1cm4gaX1yZXR1cm4tMX1mdW5jdGlvbiBjZShlLHQscixuKXtyPU51bWJlcihyKXx8MDt2YXIgbz1lLmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5vJiYobj1vKTpuPW87dmFyIGk9dC5sZW5ndGg7aWYoaSUyIT0wKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO24+aS8yJiYobj1pLzIpO2Zvcih2YXIgYT0wO2E8bjsrK2Epe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqYSwyKSwxNik7aWYoaXNOYU4ocykpcmV0dXJuIGE7ZVtyK2FdPXN9cmV0dXJuIGF9ZnVuY3Rpb24gZmUoZSx0LHIsbil7cmV0dXJuIEllKE9lKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIGhlKGUsdCxyLG4pe3JldHVybiBJZShmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KytyKXQucHVzaCgyNTUmZS5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gdH0odCksZSxyLG4pfWZ1bmN0aW9uIGxlKGUsdCxyLG4pe3JldHVybiBoZShlLHQscixuKX1mdW5jdGlvbiBwZShlLHQscixuKXtyZXR1cm4gSWUoRGUodCksZSxyLG4pfWZ1bmN0aW9uIGRlKGUsdCxyLG4pe3JldHVybiBJZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLG8saT1bXSxhPTA7YTxlLmxlbmd0aCYmISgodC09Mik8MCk7KythKW49KHI9ZS5jaGFyQ29kZUF0KGEpKT4+OCxvPXIlMjU2LGkucHVzaChvKSxpLnB1c2gobik7cmV0dXJuIGl9KHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIHZlKGUsdCxyKXtyZXR1cm4gMD09PXQmJnI9PT1lLmxlbmd0aD9ZKGUpOlkoZS5zbGljZSh0LHIpKX1mdW5jdGlvbiBnZShlLHQscil7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIG49W10sbz10O288cjspe3ZhciBpLGEscyx1LGM9ZVtvXSxmPW51bGwsaD1jPjIzOT80OmM+MjIzPzM6Yz4xOTE/MjoxO2lmKG8raDw9cilzd2l0Y2goaCl7Y2FzZSAxOmM8MTI4JiYoZj1jKTticmVhaztjYXNlIDI6MTI4PT0oMTkyJihpPWVbbysxXSkpJiYodT0oMzEmYyk8PDZ8NjMmaSk+MTI3JiYoZj11KTticmVhaztjYXNlIDM6aT1lW28rMV0sYT1lW28rMl0sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImYSkmJih1PSgxNSZjKTw8MTJ8KDYzJmkpPDw2fDYzJmEpPjIwNDcmJih1PDU1Mjk2fHx1PjU3MzQzKSYmKGY9dSk7YnJlYWs7Y2FzZSA0Omk9ZVtvKzFdLGE9ZVtvKzJdLHM9ZVtvKzNdLDEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJmEpJiYxMjg9PSgxOTImcykmJih1PSgxNSZjKTw8MTh8KDYzJmkpPDwxMnwoNjMmYSk8PDZ8NjMmcyk+NjU1MzUmJnU8MTExNDExMiYmKGY9dSl9bnVsbD09PWY/KGY9NjU1MzMsaD0xKTpmPjY1NTM1JiYoZi09NjU1MzYsbi5wdXNoKGY+Pj4xMCYxMDIzfDU1Mjk2KSxmPTU2MzIwfDEwMjMmZiksbi5wdXNoKGYpLG8rPWh9cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKHQ8PXllKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlKTt2YXIgcj0iIixuPTA7Zm9yKDtuPHQ7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUuc2xpY2UobixuKz15ZSkpO3JldHVybiByfShuKX1YLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwPT09ai5UWVBFRF9BUlJBWV9TVVBQT1JUfHxqLlRZUEVEX0FSUkFZX1NVUFBPUlQsWC5wb29sU2l6ZT04MTkyLFguX2F1Z21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19fPVgucHJvdG90eXBlLGV9LFguZnJvbT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFoobnVsbCxlLHQscil9LFguVFlQRURfQVJSQVlfU1VQUE9SVCYmKFgucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxYLl9fcHJvdG9fXz1VaW50OEFycmF5KSxYLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIFEodCksdDw9MD8kKGUsdCk6dm9pZCAwIT09cj8ic3RyaW5nIj09dHlwZW9mIG4/JChlLHQpLmZpbGwocixuKTokKGUsdCkuZmlsbChyKTokKGUsdCl9KG51bGwsZSx0LHIpfSxYLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe3JldHVybiBlZShudWxsLGUpfSxYLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtyZXR1cm4gZWUobnVsbCxlKX0sWC5pc0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmKCEhZS5faXNCdWZmZXJ8fFVlKGUpfHxmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5yZWFkRmxvYXRMRSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuc2xpY2UmJlVlKGUuc2xpY2UoMCwwKSl9KGUpKX0sWC5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7aWYoIW5lKGUpfHwhbmUodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycyIpO2lmKGU9PT10KXJldHVybiAwO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXQubGVuZ3RoLG89MCxpPU1hdGgubWluKHIsbik7bzxpOysrbylpZihlW29dIT09dFtvXSl7cj1lW29dLG49dFtvXTticmVha31yZXR1cm4gcjxuPy0xOm48cj8xOjB9LFguaXNFbmNvZGluZz1mdW5jdGlvbihlKXtzd2l0Y2goU3RyaW5nKGUpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sWC5jb25jYXQ9ZnVuY3Rpb24oZSx0KXtpZighRyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PWUubGVuZ3RoKXJldHVybiBYLmFsbG9jKDApO3ZhciByO2lmKHZvaWQgMD09PXQpZm9yKHQ9MCxyPTA7cjxlLmxlbmd0aDsrK3IpdCs9ZVtyXS5sZW5ndGg7dmFyIG49WC5hbGxvY1Vuc2FmZSh0KSxvPTA7Zm9yKHI9MDtyPGUubGVuZ3RoOysrcil7dmFyIGk9ZVtyXTtpZighbmUoaSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2kuY29weShuLG8pLG8rPWkubGVuZ3RofXJldHVybiBufSxYLmJ5dGVMZW5ndGg9b2UsWC5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLFgucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlMiE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9MilhZSh0aGlzLHQsdCsxKTtyZXR1cm4gdGhpc30sWC5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz00KWFlKHRoaXMsdCx0KzMpLGFlKHRoaXMsdCsxLHQrMik7cmV0dXJuIHRoaXN9LFgucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9OClhZSh0aGlzLHQsdCs3KSxhZSh0aGlzLHQrMSx0KzYpLGFlKHRoaXMsdCsyLHQrNSksYWUodGhpcyx0KzMsdCs0KTtyZXR1cm4gdGhpc30sWC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0wfHRoaXMubGVuZ3RoO3JldHVybiAwPT09ZT8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9nZSh0aGlzLDAsZSk6aWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxYLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIW5lKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PWV8fDA9PT1YLmNvbXBhcmUodGhpcyxlKX0sWC5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmxlbmd0aD4wJiYoZT10aGlzLnRvU3RyaW5nKCJoZXgiLDAsNTApLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKSx0aGlzLmxlbmd0aD41MCYmKGUrPSIgLi4uICIpKSwiPEJ1ZmZlciAiK2UrIj4ifSxYLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUsdCxyLG4sbyl7aWYoIW5lKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1yJiYocj1lP2UubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PW8mJihvPXRoaXMubGVuZ3RoKSx0PDB8fHI+ZS5sZW5ndGh8fG48MHx8bz50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYobj49byYmdD49cilyZXR1cm4gMDtpZihuPj1vKXJldHVybi0xO2lmKHQ+PXIpcmV0dXJuIDE7aWYodGhpcz09PWUpcmV0dXJuIDA7Zm9yKHZhciBpPShvPj4+PTApLShuPj4+PTApLGE9KHI+Pj49MCktKHQ+Pj49MCkscz1NYXRoLm1pbihpLGEpLHU9dGhpcy5zbGljZShuLG8pLGM9ZS5zbGljZSh0LHIpLGY9MDtmPHM7KytmKWlmKHVbZl0hPT1jW2ZdKXtpPXVbZl0sYT1jW2ZdO2JyZWFrfXJldHVybiBpPGE/LTE6YTxpPzE6MH0sWC5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGUsdCxyKX0sWC5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIHNlKHRoaXMsZSx0LHIsITApfSxYLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIHNlKHRoaXMsZSx0LHIsITEpfSxYLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQscixuKXtpZih2b2lkIDA9PT10KW49InV0ZjgiLHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2UgaWYodm9pZCAwPT09ciYmInN0cmluZyI9PXR5cGVvZiB0KW49dCxyPXRoaXMubGVuZ3RoLHQ9MDtlbHNle2lmKCFpc0Zpbml0ZSh0KSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIik7dHw9MCxpc0Zpbml0ZShyKT8ocnw9MCx2b2lkIDA9PT1uJiYobj0idXRmOCIpKToobj1yLHI9dm9pZCAwKX12YXIgbz10aGlzLmxlbmd0aC10O2lmKCh2b2lkIDA9PT1yfHxyPm8pJiYocj1vKSxlLmxlbmd0aD4wJiYocjwwfHx0PDApfHx0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO258fChuPSJ1dGY4Iik7Zm9yKHZhciBpPSExOzspc3dpdGNoKG4pe2Nhc2UiaGV4IjpyZXR1cm4gY2UodGhpcyxlLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gZmUodGhpcyxlLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIGhlKHRoaXMsZSx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIGxlKHRoaXMsZSx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gcGUodGhpcyxlLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBkZSh0aGlzLGUsdCxyKTtkZWZhdWx0OmlmKGkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKTtuPSgiIituKS50b0xvd2VyQ2FzZSgpLGk9ITB9fSxYLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciB5ZT00MDk2O2Z1bmN0aW9uIG1lKGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbz10O288cjsrK28pbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVtvXSk7cmV0dXJuIG59ZnVuY3Rpb24gd2UoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBvPXQ7bzxyOysrbyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbb10pO3JldHVybiBufWZ1bmN0aW9uIGJlKGUsdCxyKXt2YXIgbj1lLmxlbmd0aDsoIXR8fHQ8MCkmJih0PTApLCghcnx8cjwwfHxyPm4pJiYocj1uKTtmb3IodmFyIG89IiIsaT10O2k8cjsrK2kpbys9UGUoZVtpXSk7cmV0dXJuIG99ZnVuY3Rpb24ga2UoZSx0LHIpe2Zvcih2YXIgbj1lLnNsaWNlKHQsciksbz0iIixpPTA7aTxuLmxlbmd0aDtpKz0yKW8rPVN0cmluZy5mcm9tQ2hhckNvZGUobltpXSsyNTYqbltpKzFdKTtyZXR1cm4gb31mdW5jdGlvbiB4ZShlLHQscil7aWYoZSUxIT0wfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKGUrdD5yKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24gX2UoZSx0LHIsbixvLGkpe2lmKCFuZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5vfHx0PGkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gU2UoZSx0LHIsbil7dDwwJiYodD02NTUzNSt0KzEpO2Zvcih2YXIgbz0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciwyKTtvPGk7KytvKWVbcitvXT0odCYyNTU8PDgqKG4/bzoxLW8pKT4+PjgqKG4/bzoxLW8pfWZ1bmN0aW9uIEVlKGUsdCxyLG4pe3Q8MCYmKHQ9NDI5NDk2NzI5NSt0KzEpO2Zvcih2YXIgbz0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciw0KTtvPGk7KytvKWVbcitvXT10Pj4+OCoobj9vOjMtbykmMjU1fWZ1bmN0aW9uIEFlKGUsdCxyLG4sbyxpKXtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gVGUoZSx0LHIsbixvKXtyZXR1cm4gb3x8QWUoZSwwLHIsNCkseihlLHQscixuLDIzLDQpLHIrNH1mdW5jdGlvbiBSZShlLHQscixuLG8pe3JldHVybiBvfHxBZShlLDAsciw4KSx6KGUsdCxyLG4sNTIsOCkscis4fVgucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj10aGlzLmxlbmd0aDtpZigoZT1+fmUpPDA/KGUrPW4pPDAmJihlPTApOmU+biYmKGU9biksKHQ9dm9pZCAwPT09dD9uOn5+dCk8MD8odCs9bik8MCYmKHQ9MCk6dD5uJiYodD1uKSx0PGUmJih0PWUpLFguVFlQRURfQVJSQVlfU1VQUE9SVCkocj10aGlzLnN1YmFycmF5KGUsdCkpLl9fcHJvdG9fXz1YLnByb3RvdHlwZTtlbHNle3ZhciBvPXQtZTtyPW5ldyBYKG8sdm9pZCAwKTtmb3IodmFyIGk9MDtpPG87KytpKXJbaV09dGhpc1tpK2VdfXJldHVybiByfSxYLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8eGUoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxvPTEsaT0wOysraTx0JiYobyo9MjU2KTspbis9dGhpc1tlK2ldKm87cmV0dXJuIG59LFgucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHx4ZShlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxvPTE7dD4wJiYobyo9MjU2KTspbis9dGhpc1tlKy0tdF0qbztyZXR1cm4gbn0sWC5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsMSx0aGlzLmxlbmd0aCksdGhpc1tlXX0sWC5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh9LFgucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHx4ZShlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxYLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw0LHRoaXMubGVuZ3RoKSwodGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNikrMTY3NzcyMTYqdGhpc1tlKzNdfSxYLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW2VdKyh0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM10pfSxYLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHx4ZShlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLG89MSxpPTA7KytpPHQmJihvKj0yNTYpOyluKz10aGlzW2UraV0qbztyZXR1cm4gbj49KG8qPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LFgucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fHhlKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXQsbz0xLGk9dGhpc1tlKy0tbl07bj4wJiYobyo9MjU2KTspaSs9dGhpc1tlKy0tbl0qbztyZXR1cm4gaT49KG8qPTEyOCkmJihpLT1NYXRoLnBvdygyLDgqdCkpLGl9LFgucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LFgucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7dHx8eGUoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sWC5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oZSx0KXt0fHx4ZShlLDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZSsxXXx0aGlzW2VdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxYLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHx4ZShlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sWC5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LFgucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsNCx0aGlzLmxlbmd0aCksVyh0aGlzLGUsITAsMjMsNCl9LFgucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsNCx0aGlzLmxlbmd0aCksVyh0aGlzLGUsITEsMjMsNCl9LFgucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHx4ZShlLDgsdGhpcy5sZW5ndGgpLFcodGhpcyxlLCEwLDUyLDgpfSxYLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw4LHRoaXMubGVuZ3RoKSxXKHRoaXMsZSwhMSw1Miw4KX0sWC5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxfZSh0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBvPTEsaT0wO2Zvcih0aGlzW3RdPTI1NSZlOysraTxyJiYobyo9MjU2KTspdGhpc1t0K2ldPWUvbyYyNTU7cmV0dXJuIHQrcn0sWC5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxfZSh0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBvPXItMSxpPTE7Zm9yKHRoaXNbdCtvXT0yNTUmZTstLW8+PTAmJihpKj0yNTYpOyl0aGlzW3Qrb109ZS9pJjI1NTtyZXR1cm4gdCtyfSxYLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fF9lKHRoaXMsZSx0LDEsMjU1LDApLFguVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksdGhpc1t0XT0yNTUmZSx0KzF9LFgucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsMiw2NTUzNSwwKSxYLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpTZSh0aGlzLGUsdCwhMCksdCsyfSxYLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fF9lKHRoaXMsZSx0LDIsNjU1MzUsMCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6U2UodGhpcyxlLHQsITEpLHQrMn0sWC5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxfZSh0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3QrM109ZT4+PjI0LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdF09MjU1JmUpOkVlKHRoaXMsZSx0LCEwKSx0KzR9LFgucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLFguVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpFZSh0aGlzLGUsdCwhMSksdCs0fSxYLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIG89TWF0aC5wb3coMiw4KnItMSk7X2UodGhpcyxlLHQscixvLTEsLW8pfXZhciBpPTAsYT0xLHM9MDtmb3IodGhpc1t0XT0yNTUmZTsrK2k8ciYmKGEqPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QraS0xXSYmKHM9MSksdGhpc1t0K2ldPShlL2E+PjApLXMmMjU1O3JldHVybiB0K3J9LFgucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgbz1NYXRoLnBvdygyLDgqci0xKTtfZSh0aGlzLGUsdCxyLG8tMSwtbyl9dmFyIGk9ci0xLGE9MSxzPTA7Zm9yKHRoaXNbdCtpXT0yNTUmZTstLWk+PTAmJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K2krMV0mJihzPTEpLHRoaXNbdCtpXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxYLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsMSwxMjcsLTEyOCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSxlPDAmJihlPTI1NStlKzEpLHRoaXNbdF09MjU1JmUsdCsxfSxYLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLFguVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOlNlKHRoaXMsZSx0LCEwKSx0KzJ9LFgucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxfZSh0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6U2UodGhpcyxlLHQsITEpLHQrMn0sWC5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fF9lKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOkVlKHRoaXMsZSx0LCEwKSx0KzR9LFgucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxfZSh0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLFguVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpFZSh0aGlzLGUsdCwhMSksdCs0fSxYLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBUZSh0aGlzLGUsdCwhMCxyKX0sWC5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gVGUodGhpcyxlLHQsITEscil9LFgucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBSZSh0aGlzLGUsdCwhMCxyKX0sWC5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFJlKHRoaXMsZSx0LCExLHIpfSxYLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHJ8fChyPTApLG58fDA9PT1ufHwobj10aGlzLmxlbmd0aCksdD49ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSx0fHwodD0wKSxuPjAmJm48ciYmKG49ciksbj09PXIpcmV0dXJuIDA7aWYoMD09PWUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYocjwwfHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtuPnRoaXMubGVuZ3RoJiYobj10aGlzLmxlbmd0aCksZS5sZW5ndGgtdDxuLXImJihuPWUubGVuZ3RoLXQrcik7dmFyIG8saT1uLXI7aWYodGhpcz09PWUmJnI8dCYmdDxuKWZvcihvPWktMTtvPj0wOy0tbyllW28rdF09dGhpc1tvK3JdO2Vsc2UgaWYoaTwxZTN8fCFYLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKG89MDtvPGk7KytvKWVbbyt0XT10aGlzW28rcl07ZWxzZSBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChlLHRoaXMuc3ViYXJyYXkocixyK2kpLHQpO3JldHVybiBpfSxYLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0PyhuPXQsdD0wLHI9dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgciYmKG49cixyPXRoaXMubGVuZ3RoKSwxPT09ZS5sZW5ndGgpe3ZhciBvPWUuY2hhckNvZGVBdCgwKTtvPDI1NiYmKGU9byl9aWYodm9pZCAwIT09biYmInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIG4mJiFYLmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlJiYoZSY9MjU1KTtpZih0PDB8fHRoaXMubGVuZ3RoPHR8fHRoaXMubGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKHI8PXQpcmV0dXJuIHRoaXM7dmFyIGk7aWYodD4+Pj0wLHI9dm9pZCAwPT09cj90aGlzLmxlbmd0aDpyPj4+MCxlfHwoZT0wKSwibnVtYmVyIj09dHlwZW9mIGUpZm9yKGk9dDtpPHI7KytpKXRoaXNbaV09ZTtlbHNle3ZhciBhPW5lKGUpP2U6T2UobmV3IFgoZSxuKS50b1N0cmluZygpKSxzPWEubGVuZ3RoO2ZvcihpPTA7aTxyLXQ7KytpKXRoaXNbaSt0XT1hW2klc119cmV0dXJuIHRoaXN9O3ZhciBDZT0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBQZShlKXtyZXR1cm4gZTwxNj8iMCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gT2UoZSx0KXt2YXIgcjt0PXR8fDEvMDtmb3IodmFyIG49ZS5sZW5ndGgsbz1udWxsLGk9W10sYT0wO2E8bjsrK2Epe2lmKChyPWUuY2hhckNvZGVBdChhKSk+NTUyOTUmJnI8NTczNDQpe2lmKCFvKXtpZihyPjU2MzE5KXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoYSsxPT09bil7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfW89cjtjb250aW51ZX1pZihyPDU2MzIwKXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSksbz1yO2NvbnRpbnVlfXI9NjU1MzYrKG8tNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgbyYmKHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2lmKG89bnVsbCxyPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7aS5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigodC09Mik8MClicmVhaztpLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7aS5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigodC09NCk8MClicmVhaztpLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBpfWZ1bmN0aW9uIERlKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxyLG4sbyxpLGE7Tnx8RigpO3ZhciBzPWUubGVuZ3RoO2lmKHMlND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO2k9Ij0iPT09ZVtzLTJdPzI6Ij0iPT09ZVtzLTFdPzE6MCxhPW5ldyBxKDMqcy80LWkpLG49aT4wP3MtNDpzO3ZhciB1PTA7Zm9yKHQ9MCxyPTA7dDxuO3QrPTQscis9MylvPUJbZS5jaGFyQ29kZUF0KHQpXTw8MTh8QltlLmNoYXJDb2RlQXQodCsxKV08PDEyfEJbZS5jaGFyQ29kZUF0KHQrMildPDw2fEJbZS5jaGFyQ29kZUF0KHQrMyldLGFbdSsrXT1vPj4xNiYyNTUsYVt1KytdPW8+PjgmMjU1LGFbdSsrXT0yNTUmbztyZXR1cm4gMj09PWk/KG89QltlLmNoYXJDb2RlQXQodCldPDwyfEJbZS5jaGFyQ29kZUF0KHQrMSldPj40LGFbdSsrXT0yNTUmbyk6MT09PWkmJihvPUJbZS5jaGFyQ29kZUF0KHQpXTw8MTB8QltlLmNoYXJDb2RlQXQodCsxKV08PDR8QltlLmNoYXJDb2RlQXQodCsyKV0+PjIsYVt1KytdPW8+PjgmMjU1LGFbdSsrXT0yNTUmbyksYX0oZnVuY3Rpb24oZSl7aWYoKGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0oZSkucmVwbGFjZShDZSwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9MDspZSs9Ij0iO3JldHVybiBlfShlKSl9ZnVuY3Rpb24gSWUoZSx0LHIsbil7Zm9yKHZhciBvPTA7bzxuJiYhKG8rcj49dC5sZW5ndGh8fG8+PWUubGVuZ3RoKTsrK28pdFtvK3JdPWVbb107cmV0dXJuIG99ZnVuY3Rpb24gVWUoZSl7cmV0dXJuISFlLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX12YXIgTWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHI9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLG49MDtuPHIubGVuZ3RoO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5hcHBseSh0LHIpfX0sTGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBqZShlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09TGUuY2FsbChlKX1mdW5jdGlvbiBIZShlKXtyZXR1cm4gdm9pZCAwPT09ZX1mdW5jdGlvbiBCZShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT09bihlKX1mdW5jdGlvbiBxZShlKXtpZigiW29iamVjdCBPYmplY3RdIiE9PUxlLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiBudWxsPT09dHx8dD09PU9iamVjdC5wcm90b3R5cGV9ZnVuY3Rpb24gTmUoZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PUxlLmNhbGwoZSl9ZnVuY3Rpb24gRmUoZSx0KXtpZihudWxsIT1lKWlmKCJvYmplY3QiIT09bihlKSYmKGU9W2VdKSxqZShlKSlmb3IodmFyIHI9MCxvPWUubGVuZ3RoO3I8bztyKyspdC5jYWxsKG51bGwsZVtyXSxyLGUpO2Vsc2UgZm9yKHZhciBpIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJnQuY2FsbChudWxsLGVbaV0saSxlKX12YXIgS2U9e2lzQXJyYXk6amUsaXNBcnJheUJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09TGUuY2FsbChlKX0saXNCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiYhSGUoZSkmJm51bGwhPT1lLmNvbnN0cnVjdG9yJiYhSGUoZS5jb25zdHJ1Y3RvcikmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfSxpc0Zvcm1EYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJmUgaW5zdGFuY2VvZiBGb3JtRGF0YX0saXNBcnJheUJ1ZmZlclZpZXc6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVyLmlzVmlldyhlKTplJiZlLmJ1ZmZlciYmZS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcn0saXNTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9LGlzT2JqZWN0OkJlLGlzUGxhaW5PYmplY3Q6cWUsaXNVbmRlZmluZWQ6SGUsaXNEYXRlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IERhdGVdIj09PUxlLmNhbGwoZSl9LGlzRmlsZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1MZS5jYWxsKGUpfSxpc0Jsb2I6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09TGUuY2FsbChlKX0saXNGdW5jdGlvbjpOZSxpc1N0cmVhbTpmdW5jdGlvbihlKXtyZXR1cm4gQmUoZSkmJk5lKGUucGlwZSl9LGlzVVJMU2VhcmNoUGFyYW1zOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zJiZlIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zfSxpc1N0YW5kYXJkQnJvd3NlckVudjpmdW5jdGlvbigpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcnx8IlJlYWN0TmF0aXZlIiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTmF0aXZlU2NyaXB0IiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTlMiIT09bmF2aWdhdG9yLnByb2R1Y3QpJiYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQpfSxmb3JFYWNoOkZlLG1lcmdlOmZ1bmN0aW9uIGUoKXt2YXIgdD17fTtmdW5jdGlvbiByKHIsbil7cWUodFtuXSkmJnFlKHIpP3Rbbl09ZSh0W25dLHIpOnFlKHIpP3Rbbl09ZSh7fSxyKTpqZShyKT90W25dPXIuc2xpY2UoKTp0W25dPXJ9Zm9yKHZhciBuPTAsbz1hcmd1bWVudHMubGVuZ3RoO248bztuKyspRmUoYXJndW1lbnRzW25dLHIpO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBGZSh0LChmdW5jdGlvbih0LG4pe2Vbbl09ciYmImZ1bmN0aW9uIj09dHlwZW9mIHQ/TWUodCxyKTp0fSkpLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24oZSl7cmV0dXJuIDY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApJiYoZT1lLnNsaWNlKDEpKSxlfX07ZnVuY3Rpb24gWWUoZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9dmFyIFdlPWZ1bmN0aW9uKGUsdCxyKXtpZighdClyZXR1cm4gZTt2YXIgbjtpZihyKW49cih0KTtlbHNlIGlmKEtlLmlzVVJMU2VhcmNoUGFyYW1zKHQpKW49dC50b1N0cmluZygpO2Vsc2V7dmFyIG89W107S2UuZm9yRWFjaCh0LChmdW5jdGlvbihlLHQpe251bGwhPWUmJihLZS5pc0FycmF5KGUpP3QrPSJbXSI6ZT1bZV0sS2UuZm9yRWFjaChlLChmdW5jdGlvbihlKXtLZS5pc0RhdGUoZSk/ZT1lLnRvSVNPU3RyaW5nKCk6S2UuaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxvLnB1c2goWWUodCkrIj0iK1llKGUpKX0pKSl9KSksbj1vLmpvaW4oIiYiKX1pZihuKXt2YXIgaT1lLmluZGV4T2YoIiMiKTstMSE9PWkmJihlPWUuc2xpY2UoMCxpKSksZSs9KC0xPT09ZS5pbmRleE9mKCI/Iik/Ij8iOiImIikrbn1yZXR1cm4gZX07ZnVuY3Rpb24gemUoKXt0aGlzLmhhbmRsZXJzPVtdfXplLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ISFyJiZyLnN5bmNocm9ub3VzLHJ1bldoZW46cj9yLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LHplLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX0semUucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7S2UuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLChmdW5jdGlvbih0KXtudWxsIT09dCYmZSh0KX0pKX07dmFyIEplPXplO2Z1bmN0aW9uIEdlKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gVmUoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfXZhciAkZT1HZSxYZT1WZTtmdW5jdGlvbiBaZShlKXtpZigkZT09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigoJGU9PT1HZXx8ISRlKSYmc2V0VGltZW91dClyZXR1cm4gJGU9c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiAkZShlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gJGUuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuICRlLmNhbGwodGhpcyxlLDApfX19ImZ1bmN0aW9uIj09dHlwZW9mIGouc2V0VGltZW91dCYmKCRlPXNldFRpbWVvdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiBqLmNsZWFyVGltZW91dCYmKFhlPWNsZWFyVGltZW91dCk7dmFyIFFlLGV0PVtdLHR0PSExLHJ0PS0xO2Z1bmN0aW9uIG50KCl7dHQmJlFlJiYodHQ9ITEsUWUubGVuZ3RoP2V0PVFlLmNvbmNhdChldCk6cnQ9LTEsZXQubGVuZ3RoJiZvdCgpKX1mdW5jdGlvbiBvdCgpe2lmKCF0dCl7dmFyIGU9WmUobnQpO3R0PSEwO2Zvcih2YXIgdD1ldC5sZW5ndGg7dDspe2ZvcihRZT1ldCxldD1bXTsrK3J0PHQ7KVFlJiZRZVtydF0ucnVuKCk7cnQ9LTEsdD1ldC5sZW5ndGh9UWU9bnVsbCx0dD0hMSxmdW5jdGlvbihlKXtpZihYZT09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChYZT09PVZlfHwhWGUpJiZjbGVhclRpbWVvdXQpcmV0dXJuIFhlPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e1hlKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gWGUuY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiBYZS5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIGl0KGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9aXQucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9O2Z1bmN0aW9uIGF0KCl7fXZhciBzdD1hdCx1dD1hdCxjdD1hdCxmdD1hdCxodD1hdCxsdD1hdCxwdD1hdDt2YXIgZHQ9ai5wZXJmb3JtYW5jZXx8e30sdnQ9ZHQubm93fHxkdC5tb3pOb3d8fGR0Lm1zTm93fHxkdC5vTm93fHxkdC53ZWJraXROb3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O3ZhciBndD1uZXcgRGF0ZTt2YXIgeXQ9e25leHRUaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0xXT1hcmd1bWVudHNbcl07ZXQucHVzaChuZXcgaXQoZSx0KSksMSE9PWV0Lmxlbmd0aHx8dHR8fFplKG90KX0sdGl0bGU6ImJyb3dzZXIiLGJyb3dzZXI6ITAsZW52Ont9LGFyZ3Y6W10sdmVyc2lvbjoiIix2ZXJzaW9uczp7fSxvbjpzdCxhZGRMaXN0ZW5lcjp1dCxvbmNlOmN0LG9mZjpmdCxyZW1vdmVMaXN0ZW5lcjpodCxyZW1vdmVBbGxMaXN0ZW5lcnM6bHQsZW1pdDpwdCxiaW5kaW5nOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sY3dkOmZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxjaGRpcjpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSx1bWFzazpmdW5jdGlvbigpe3JldHVybiAwfSxocnRpbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9LjAwMSp2dC5jYWxsKGR0KSxyPU1hdGguZmxvb3IodCksbj1NYXRoLmZsb29yKHQlMSoxZTkpO3JldHVybiBlJiYoci09ZVswXSwobi09ZVsxXSk8MCYmKHItLSxuKz0xZTkpKSxbcixuXX0scGxhdGZvcm06ImJyb3dzZXIiLHJlbGVhc2U6e30sY29uZmlnOnt9LHVwdGltZTpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZS1ndCkvMWUzfX0sbXQ9eXQsd3Q9ZnVuY3Rpb24oZSx0KXtLZS5mb3JFYWNoKGUsKGZ1bmN0aW9uKHIsbil7biE9PXQmJm4udG9VcHBlckNhc2UoKT09PXQudG9VcHBlckNhc2UoKSYmKGVbdF09cixkZWxldGUgZVtuXSl9KSl9LGJ0PWZ1bmN0aW9uKGUsdCxyLG4sbyl7cmV0dXJuIGUuY29uZmlnPXQsciYmKGUuY29kZT1yKSxlLnJlcXVlc3Q9bixlLnJlc3BvbnNlPW8sZS5pc0F4aW9zRXJyb3I9ITAsZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6dGhpcy5jb25maWcsY29kZTp0aGlzLmNvZGV9fSxlfSxrdD1mdW5jdGlvbihlLHQscixuLG8pe3ZhciBpPW5ldyBFcnJvcihlKTtyZXR1cm4gYnQoaSx0LHIsbixvKX0seHQ9S2UuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT97d3JpdGU6ZnVuY3Rpb24oZSx0LHIsbixvLGkpe3ZhciBhPVtdO2EucHVzaChlKyI9IitlbmNvZGVVUklDb21wb25lbnQodCkpLEtlLmlzTnVtYmVyKHIpJiZhLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShyKS50b0dNVFN0cmluZygpKSxLZS5pc1N0cmluZyhuKSYmYS5wdXNoKCJwYXRoPSIrbiksS2UuaXNTdHJpbmcobykmJmEucHVzaCgiZG9tYWluPSIrbyksITA9PT1pJiZhLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1hLmpvaW4oIjsgIil9LHJlYWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2UrIik9KFteO10qKSIpKTtyZXR1cm4gdD9kZWNvZGVVUklDb21wb25lbnQodFszXSk6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKGUpe3RoaXMud3JpdGUoZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZTpmdW5jdGlvbigpe30scmVhZDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXt9fSxfdD1bImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdLFN0PUtlLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/ZnVuY3Rpb24oKXt2YXIgZSx0PS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gbihlKXt2YXIgbj1lO3JldHVybiB0JiYoci5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLG49ci5ocmVmKSxyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbikse2hyZWY6ci5ocmVmLHByb3RvY29sOnIucHJvdG9jb2w/ci5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6ci5ob3N0LHNlYXJjaDpyLnNlYXJjaD9yLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnIuaGFzaD9yLmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTpyLmhvc3RuYW1lLHBvcnQ6ci5wb3J0LHBhdGhuYW1lOiIvIj09PXIucGF0aG5hbWUuY2hhckF0KDApP3IucGF0aG5hbWU6Ii8iK3IucGF0aG5hbWV9fXJldHVybiBlPW4od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKHQpe3ZhciByPUtlLmlzU3RyaW5nKHQpP24odCk6dDtyZXR1cm4gci5wcm90b2NvbD09PWUucHJvdG9jb2wmJnIuaG9zdD09PWUuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sRXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe3ZhciBuPWUuZGF0YSxvPWUuaGVhZGVycyxpPWUucmVzcG9uc2VUeXBlO0tlLmlzRm9ybURhdGEobikmJmRlbGV0ZSBvWyJDb250ZW50LVR5cGUiXTt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoZS5hdXRoKXt2YXIgcz1lLmF1dGgudXNlcm5hbWV8fCIiLHU9ZS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlLmF1dGgucGFzc3dvcmQpKToiIjtvLkF1dGhvcml6YXRpb249IkJhc2ljICIrYnRvYShzKyI6Iit1KX12YXIgYyxmLGg9KGM9ZS5iYXNlVVJMLGY9ZS51cmwsYyYmIS9eKFthLXpdW2EtelxkXCtcLVwuXSo6KT9cL1wvL2kudGVzdChmKT9mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZSgvXC8rJC8sIiIpKyIvIit0LnJlcGxhY2UoL15cLysvLCIiKTplfShjLGYpOmYpO2Z1bmN0aW9uIGwoKXtpZihhKXt2YXIgbj0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIGE/ZnVuY3Rpb24oZSl7dmFyIHQscixuLG89e307cmV0dXJuIGU/KEtlLmZvckVhY2goZS5zcGxpdCgiXG4iKSwoZnVuY3Rpb24oZSl7aWYobj1lLmluZGV4T2YoIjoiKSx0PUtlLnRyaW0oZS5zdWJzdHIoMCxuKSkudG9Mb3dlckNhc2UoKSxyPUtlLnRyaW0oZS5zdWJzdHIobisxKSksdCl7aWYob1t0XSYmX3QuaW5kZXhPZih0KT49MClyZXR1cm47b1t0XT0ic2V0LWNvb2tpZSI9PT10PyhvW3RdP29bdF06W10pLmNvbmNhdChbcl0pOm9bdF0/b1t0XSsiLCAiK3I6cn19KSksbyk6b30oYS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbCxvPXtkYXRhOmkmJiJ0ZXh0IiE9PWkmJiJqc29uIiE9PWk/YS5yZXNwb25zZTphLnJlc3BvbnNlVGV4dCxzdGF0dXM6YS5zdGF0dXMsc3RhdHVzVGV4dDphLnN0YXR1c1RleHQsaGVhZGVyczpuLGNvbmZpZzplLHJlcXVlc3Q6YX07IWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztyLnN0YXR1cyYmbiYmIW4oci5zdGF0dXMpP3Qoa3QoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIityLnN0YXR1cyxyLmNvbmZpZyxudWxsLHIucmVxdWVzdCxyKSk6ZShyKX0odCxyLG8pLGE9bnVsbH19aWYoYS5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCksV2UoaCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxhLnRpbWVvdXQ9ZS50aW1lb3V0LCJvbmxvYWRlbmQiaW4gYT9hLm9ubG9hZGVuZD1sOmEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7YSYmND09PWEucmVhZHlTdGF0ZSYmKDAhPT1hLnN0YXR1c3x8YS5yZXNwb25zZVVSTCYmMD09PWEucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQobCl9LGEub25hYm9ydD1mdW5jdGlvbigpe2EmJihyKGt0KCJSZXF1ZXN0IGFib3J0ZWQiLGUsIkVDT05OQUJPUlRFRCIsYSkpLGE9bnVsbCl9LGEub25lcnJvcj1mdW5jdGlvbigpe3Ioa3QoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCxhKSksYT1udWxsfSxhLm9udGltZW91dD1mdW5jdGlvbigpe3ZhciB0PSJ0aW1lb3V0IG9mICIrZS50aW1lb3V0KyJtcyBleGNlZWRlZCI7ZS50aW1lb3V0RXJyb3JNZXNzYWdlJiYodD1lLnRpbWVvdXRFcnJvck1lc3NhZ2UpLHIoa3QodCxlLGUudHJhbnNpdGlvbmFsJiZlLnRyYW5zaXRpb25hbC5jbGFyaWZ5VGltZW91dEVycm9yPyJFVElNRURPVVQiOiJFQ09OTkFCT1JURUQiLGEpKSxhPW51bGx9LEtlLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpe3ZhciBwPShlLndpdGhDcmVkZW50aWFsc3x8U3QoaCkpJiZlLnhzcmZDb29raWVOYW1lP3h0LnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO3AmJihvW2UueHNyZkhlYWRlck5hbWVdPXApfSJzZXRSZXF1ZXN0SGVhZGVyImluIGEmJktlLmZvckVhY2gobywoZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1uJiYiY29udGVudC10eXBlIj09PXQudG9Mb3dlckNhc2UoKT9kZWxldGUgb1t0XTphLnNldFJlcXVlc3RIZWFkZXIodCxlKX0pKSxLZS5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fChhLndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSxpJiYianNvbiIhPT1pJiYoYS5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcyYmYS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vbkRvd25sb2FkUHJvZ3Jlc3MpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJmEudXBsb2FkJiZhLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSxlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnByb21pc2UudGhlbigoZnVuY3Rpb24oZSl7YSYmKGEuYWJvcnQoKSxyKGUpLGE9bnVsbCl9KSksbnx8KG49bnVsbCksYS5zZW5kKG4pfSkpfSxBdD17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIFR0KGUsdCl7IUtlLmlzVW5kZWZpbmVkKGUpJiZLZS5pc1VuZGVmaW5lZChlWyJDb250ZW50LVR5cGUiXSkmJihlWyJDb250ZW50LVR5cGUiXT10KX12YXIgUnQsQ3Q9e3RyYW5zaXRpb25hbDp7c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX0sYWRhcHRlcjooKCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3R8fHZvaWQgMCE9PW10JiYiW29iamVjdCBwcm9jZXNzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobXQpKSYmKFJ0PUV0KSxSdCksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtyZXR1cm4gd3QodCwiQWNjZXB0Iiksd3QodCwiQ29udGVudC1UeXBlIiksS2UuaXNGb3JtRGF0YShlKXx8S2UuaXNBcnJheUJ1ZmZlcihlKXx8S2UuaXNCdWZmZXIoZSl8fEtlLmlzU3RyZWFtKGUpfHxLZS5pc0ZpbGUoZSl8fEtlLmlzQmxvYihlKT9lOktlLmlzQXJyYXlCdWZmZXJWaWV3KGUpP2UuYnVmZmVyOktlLmlzVVJMU2VhcmNoUGFyYW1zKGUpPyhUdCh0LCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpLGUudG9TdHJpbmcoKSk6S2UuaXNPYmplY3QoZSl8fHQmJiJhcHBsaWNhdGlvbi9qc29uIj09PXRbIkNvbnRlbnQtVHlwZSJdPyhUdCh0LCJhcHBsaWNhdGlvbi9qc29uIiksZnVuY3Rpb24oZSx0LHIpe2lmKEtlLmlzU3RyaW5nKGUpKXRyeXtyZXR1cm4odHx8SlNPTi5wYXJzZSkoZSksS2UudHJpbShlKX1jYXRjaChlKXtpZigiU3ludGF4RXJyb3IiIT09ZS5uYW1lKXRocm93IGV9cmV0dXJuKHJ8fEpTT04uc3RyaW5naWZ5KShlKX0oZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50cmFuc2l0aW9uYWwscj10JiZ0LnNpbGVudEpTT05QYXJzaW5nLG49dCYmdC5mb3JjZWRKU09OUGFyc2luZyxvPSFyJiYianNvbiI9PT10aGlzLnJlc3BvbnNlVHlwZTtpZihvfHxuJiZLZS5pc1N0cmluZyhlKSYmZS5sZW5ndGgpdHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKGUpe2lmKG8pe2lmKCJTeW50YXhFcnJvciI9PT1lLm5hbWUpdGhyb3cgYnQoZSx0aGlzLCJFX0pTT05fUEFSU0UiKTt0aHJvdyBlfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfX07Q3QuaGVhZGVycz17Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fSxLZS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLChmdW5jdGlvbihlKXtDdC5oZWFkZXJzW2VdPXt9fSkpLEtlLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7Q3QuaGVhZGVyc1tlXT1LZS5tZXJnZShBdCl9KSk7dmFyIFB0PUN0LE90PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzfHxQdDtyZXR1cm4gS2UuZm9yRWFjaChyLChmdW5jdGlvbihyKXtlPXIuY2FsbChuLGUsdCl9KSksZX0sRHQ9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUuX19DQU5DRUxfXyl9O2Z1bmN0aW9uIEl0KGUpe2UuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpfXZhciBVdD1mdW5jdGlvbihlKXtyZXR1cm4gSXQoZSksZS5oZWFkZXJzPWUuaGVhZGVyc3x8e30sZS5kYXRhPU90LmNhbGwoZSxlLmRhdGEsZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVxdWVzdCksZS5oZWFkZXJzPUtlLm1lcmdlKGUuaGVhZGVycy5jb21tb258fHt9LGUuaGVhZGVyc1tlLm1ldGhvZF18fHt9LGUuaGVhZGVycyksS2UuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSwoZnVuY3Rpb24odCl7ZGVsZXRlIGUuaGVhZGVyc1t0XX0pKSwoZS5hZGFwdGVyfHxQdC5hZGFwdGVyKShlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gSXQoZSksdC5kYXRhPU90LmNhbGwoZSx0LmRhdGEsdC5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpLHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIER0KHQpfHwoSXQoZSksdCYmdC5yZXNwb25zZSYmKHQucmVzcG9uc2UuZGF0YT1PdC5jYWxsKGUsdC5yZXNwb25zZS5kYXRhLHQucmVzcG9uc2UuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSkpLFByb21pc2UucmVqZWN0KHQpfSkpfSxNdD1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHI9e30sbj1bInVybCIsIm1ldGhvZCIsImRhdGEiXSxvPVsiaGVhZGVycyIsImF1dGgiLCJwcm94eSIsInBhcmFtcyJdLGk9WyJiYXNlVVJMIiwidHJhbnNmb3JtUmVxdWVzdCIsInRyYW5zZm9ybVJlc3BvbnNlIiwicGFyYW1zU2VyaWFsaXplciIsInRpbWVvdXQiLCJ0aW1lb3V0TWVzc2FnZSIsIndpdGhDcmVkZW50aWFscyIsImFkYXB0ZXIiLCJyZXNwb25zZVR5cGUiLCJ4c3JmQ29va2llTmFtZSIsInhzcmZIZWFkZXJOYW1lIiwib25VcGxvYWRQcm9ncmVzcyIsIm9uRG93bmxvYWRQcm9ncmVzcyIsImRlY29tcHJlc3MiLCJtYXhDb250ZW50TGVuZ3RoIiwibWF4Qm9keUxlbmd0aCIsIm1heFJlZGlyZWN0cyIsInRyYW5zcG9ydCIsImh0dHBBZ2VudCIsImh0dHBzQWdlbnQiLCJjYW5jZWxUb2tlbiIsInNvY2tldFBhdGgiLCJyZXNwb25zZUVuY29kaW5nIl0sYT1bInZhbGlkYXRlU3RhdHVzIl07ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBLZS5pc1BsYWluT2JqZWN0KGUpJiZLZS5pc1BsYWluT2JqZWN0KHQpP0tlLm1lcmdlKGUsdCk6S2UuaXNQbGFpbk9iamVjdCh0KT9LZS5tZXJnZSh7fSx0KTpLZS5pc0FycmF5KHQpP3Quc2xpY2UoKTp0fWZ1bmN0aW9uIHUobil7S2UuaXNVbmRlZmluZWQodFtuXSk/S2UuaXNVbmRlZmluZWQoZVtuXSl8fChyW25dPXModm9pZCAwLGVbbl0pKTpyW25dPXMoZVtuXSx0W25dKX1LZS5mb3JFYWNoKG4sKGZ1bmN0aW9uKGUpe0tlLmlzVW5kZWZpbmVkKHRbZV0pfHwocltlXT1zKHZvaWQgMCx0W2VdKSl9KSksS2UuZm9yRWFjaChvLHUpLEtlLmZvckVhY2goaSwoZnVuY3Rpb24obil7S2UuaXNVbmRlZmluZWQodFtuXSk/S2UuaXNVbmRlZmluZWQoZVtuXSl8fChyW25dPXModm9pZCAwLGVbbl0pKTpyW25dPXModm9pZCAwLHRbbl0pfSkpLEtlLmZvckVhY2goYSwoZnVuY3Rpb24obil7biBpbiB0P3Jbbl09cyhlW25dLHRbbl0pOm4gaW4gZSYmKHJbbl09cyh2b2lkIDAsZVtuXSkpfSkpO3ZhciBjPW4uY29uY2F0KG8pLmNvbmNhdChpKS5jb25jYXQoYSksZj1PYmplY3Qua2V5cyhlKS5jb25jYXQoT2JqZWN0LmtleXModCkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT1jLmluZGV4T2YoZSl9KSk7cmV0dXJuIEtlLmZvckVhY2goZix1KSxyfSxMdD17bmFtZToiYXhpb3MiLHZlcnNpb246IjAuMjEuNCIsZGVzY3JpcHRpb246IlByb21pc2UgYmFzZWQgSFRUUCBjbGllbnQgZm9yIHRoZSBicm93c2VyIGFuZCBub2RlLmpzIixtYWluOiJpbmRleC5qcyIsc2NyaXB0czp7dGVzdDoiZ3J1bnQgdGVzdCIsc3RhcnQ6Im5vZGUgLi9zYW5kYm94L3NlcnZlci5qcyIsYnVpbGQ6Ik5PREVfRU5WPXByb2R1Y3Rpb24gZ3J1bnQgYnVpbGQiLHByZXZlcnNpb246Im5wbSB0ZXN0Iix2ZXJzaW9uOiJucG0gcnVuIGJ1aWxkICYmIGdydW50IHZlcnNpb24gJiYgZ2l0IGFkZCAtQSBkaXN0ICYmIGdpdCBhZGQgQ0hBTkdFTE9HLm1kIGJvd2VyLmpzb24gcGFja2FnZS5qc29uIixwb3N0dmVyc2lvbjoiZ2l0IHB1c2ggJiYgZ2l0IHB1c2ggLS10YWdzIixleGFtcGxlczoibm9kZSAuL2V4YW1wbGVzL3NlcnZlci5qcyIsY292ZXJhbGxzOiJjYXQgY292ZXJhZ2UvbGNvdi5pbmZvIHwgLi9ub2RlX21vZHVsZXMvY292ZXJhbGxzL2Jpbi9jb3ZlcmFsbHMuanMiLGZpeDoiZXNsaW50IC0tZml4IGxpYi8qKi8qLmpzIn0scmVwb3NpdG9yeTp7dHlwZToiZ2l0Iix1cmw6Imh0dHBzOi8vZ2l0aHViLmNvbS9heGlvcy9heGlvcy5naXQifSxrZXl3b3JkczpbInhociIsImh0dHAiLCJhamF4IiwicHJvbWlzZSIsIm5vZGUiXSxhdXRob3I6Ik1hdHQgWmFicmlza2llIixsaWNlbnNlOiJNSVQiLGJ1Z3M6e3VybDoiaHR0cHM6Ly9naXRodWIuY29tL2F4aW9zL2F4aW9zL2lzc3VlcyJ9LGhvbWVwYWdlOiJodHRwczovL2F4aW9zLWh0dHAuY29tIixkZXZEZXBlbmRlbmNpZXM6e2NvdmVyYWxsczoiXjMuMC4wIiwiZXM2LXByb21pc2UiOiJeNC4yLjQiLGdydW50OiJeMS4zLjAiLCJncnVudC1iYW5uZXIiOiJeMC42LjAiLCJncnVudC1jbGkiOiJeMS4yLjAiLCJncnVudC1jb250cmliLWNsZWFuIjoiXjEuMS4wIiwiZ3J1bnQtY29udHJpYi13YXRjaCI6Il4xLjAuMCIsImdydW50LWVzbGludCI6Il4yMy4wLjAiLCJncnVudC1rYXJtYSI6Il40LjAuMCIsImdydW50LW1vY2hhLXRlc3QiOiJeMC4xMy4zIiwiZ3J1bnQtdHMiOiJeNi4wLjAtYmV0YS4xOSIsImdydW50LXdlYnBhY2siOiJeNC4wLjIiLCJpc3RhbmJ1bC1pbnN0cnVtZW50ZXItbG9hZGVyIjoiXjEuMC4wIiwiamFzbWluZS1jb3JlIjoiXjIuNC4xIixrYXJtYToiXjYuMy4yIiwia2FybWEtY2hyb21lLWxhdW5jaGVyIjoiXjMuMS4wIiwia2FybWEtZmlyZWZveC1sYXVuY2hlciI6Il4yLjEuMCIsImthcm1hLWphc21pbmUiOiJeMS4xLjEiLCJrYXJtYS1qYXNtaW5lLWFqYXgiOiJeMC4xLjEzIiwia2FybWEtc2FmYXJpLWxhdW5jaGVyIjoiXjEuMC4wIiwia2FybWEtc2F1Y2UtbGF1bmNoZXIiOiJeNC4zLjYiLCJrYXJtYS1zaW5vbiI6Il4xLjAuNSIsImthcm1hLXNvdXJjZW1hcC1sb2FkZXIiOiJeMC4zLjgiLCJrYXJtYS13ZWJwYWNrIjoiXjQuMC4yIiwibG9hZC1ncnVudC10YXNrcyI6Il4zLjUuMiIsbWluaW1pc3Q6Il4xLjIuMCIsbW9jaGE6Il44LjIuMSIsc2lub246Il40LjUuMCIsInRlcnNlci13ZWJwYWNrLXBsdWdpbiI6Il40LjIuMyIsdHlwZXNjcmlwdDoiXjQuMC41IiwidXJsLXNlYXJjaC1wYXJhbXMiOiJeMC4xMC4wIix3ZWJwYWNrOiJeNC40NC4yIiwid2VicGFjay1kZXYtc2VydmVyIjoiXjMuMTEuMCJ9LGJyb3dzZXI6eyIuL2xpYi9hZGFwdGVycy9odHRwLmpzIjoiLi9saWIvYWRhcHRlcnMveGhyLmpzIn0sanNkZWxpdnI6ImRpc3QvYXhpb3MubWluLmpzIix1bnBrZzoiZGlzdC9heGlvcy5taW4uanMiLHR5cGluZ3M6Ii4vaW5kZXguZC50cyIsZGVwZW5kZW5jaWVzOnsiZm9sbG93LXJlZGlyZWN0cyI6Il4xLjE0LjAifSxidW5kbGVzaXplOlt7cGF0aDoiLi9kaXN0L2F4aW9zLm1pbi5qcyIsdGhyZXNob2xkOiI1a0IifV19LGp0PXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtqdFtlXT1mdW5jdGlvbihyKXtyZXR1cm4gbihyKT09PWV8fCJhIisodDwxPyJuICI6IiAiKStlfX0pKTt2YXIgSHQ9e30sQnQ9THQudmVyc2lvbi5zcGxpdCgiLiIpO2Z1bmN0aW9uIHF0KGUsdCl7Zm9yKHZhciByPXQ/dC5zcGxpdCgiLiIpOkJ0LG49ZS5zcGxpdCgiLiIpLG89MDtvPDM7bysrKXtpZihyW29dPm5bb10pcmV0dXJuITA7aWYocltvXTxuW29dKXJldHVybiExfXJldHVybiExfWp0LnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7dmFyIG49dCYmcXQodCk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiJbQXhpb3MgdiIrTHQudmVyc2lvbisiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2UrIiciK3QrKHI/Ii4gIityOiIiKX1yZXR1cm4gZnVuY3Rpb24ocixpLGEpe2lmKCExPT09ZSl0aHJvdyBuZXcgRXJyb3IobyhpLCIgaGFzIGJlZW4gcmVtb3ZlZCBpbiAiK3QpKTtyZXR1cm4gbiYmIUh0W2ldJiYoSHRbaV09ITAsY29uc29sZS53YXJuKG8oaSwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSwhZXx8ZShyLGksYSl9fTt2YXIgTnQ9e2lzT2xkZXJWZXJzaW9uOnF0LGFzc2VydE9wdGlvbnM6ZnVuY3Rpb24oZSx0LHIpe2lmKCJvYmplY3QiIT09bihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Zm9yKHZhciBvPU9iamVjdC5rZXlzKGUpLGk9by5sZW5ndGg7aS0tID4wOyl7dmFyIGE9b1tpXSxzPXRbYV07aWYocyl7dmFyIHU9ZVthXSxjPXZvaWQgMD09PXV8fHModSxhLGUpO2lmKCEwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gIithKyIgbXVzdCBiZSAiK2MpfWVsc2UgaWYoITAhPT1yKXRocm93IEVycm9yKCJVbmtub3duIG9wdGlvbiAiK2EpfX0sdmFsaWRhdG9yczpqdH0sRnQ9TnQudmFsaWRhdG9ycztmdW5jdGlvbiBLdChlKXt0aGlzLmRlZmF1bHRzPWUsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IEplLHJlc3BvbnNlOm5ldyBKZX19S3QucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBlPyhlPWFyZ3VtZW50c1sxXXx8e30pLnVybD1hcmd1bWVudHNbMF06ZT1lfHx7fSwoZT1NdCh0aGlzLmRlZmF1bHRzLGUpKS5tZXRob2Q/ZS5tZXRob2Q9ZS5tZXRob2QudG9Mb3dlckNhc2UoKTp0aGlzLmRlZmF1bHRzLm1ldGhvZD9lLm1ldGhvZD10aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpOmUubWV0aG9kPSJnZXQiO3ZhciB0PWUudHJhbnNpdGlvbmFsO3ZvaWQgMCE9PXQmJk50LmFzc2VydE9wdGlvbnModCx7c2lsZW50SlNPTlBhcnNpbmc6RnQudHJhbnNpdGlvbmFsKEZ0LmJvb2xlYW4sIjEuMC4wIiksZm9yY2VkSlNPTlBhcnNpbmc6RnQudHJhbnNpdGlvbmFsKEZ0LmJvb2xlYW4sIjEuMC4wIiksY2xhcmlmeVRpbWVvdXRFcnJvcjpGdC50cmFuc2l0aW9uYWwoRnQuYm9vbGVhbiwiMS4wLjAiKX0sITEpO3ZhciByPVtdLG49ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKChmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdC5ydW5XaGVuJiYhMT09PXQucnVuV2hlbihlKXx8KG49biYmdC5zeW5jaHJvbm91cyxyLnVuc2hpZnQodC5mdWxmaWxsZWQsdC5yZWplY3RlZCkpfSkpO3ZhciBvLGk9W107aWYodGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aS5wdXNoKGUuZnVsZmlsbGVkLGUucmVqZWN0ZWQpfSkpLCFuKXt2YXIgYT1bVXQsdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoYSxyKSxhPWEuY29uY2F0KGkpLG89UHJvbWlzZS5yZXNvbHZlKGUpO2EubGVuZ3RoOylvPW8udGhlbihhLnNoaWZ0KCksYS5zaGlmdCgpKTtyZXR1cm4gb31mb3IodmFyIHM9ZTtyLmxlbmd0aDspe3ZhciB1PXIuc2hpZnQoKSxjPXIuc2hpZnQoKTt0cnl7cz11KHMpfWNhdGNoKGUpe2MoZSk7YnJlYWt9fXRyeXtvPVV0KHMpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX1mb3IoO2kubGVuZ3RoOylvPW8udGhlbihpLnNoaWZ0KCksaS5zaGlmdCgpKTtyZXR1cm4gb30sS3QucHJvdG90eXBlLmdldFVyaT1mdW5jdGlvbihlKXtyZXR1cm4gZT1NdCh0aGlzLmRlZmF1bHRzLGUpLFdlKGUudXJsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlw/LywiIil9LEtlLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLChmdW5jdGlvbihlKXtLdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KE10KHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KSksS2UuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXtLdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyLG4pe3JldHVybiB0aGlzLnJlcXVlc3QoTXQobnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6cn0pKX19KSk7dmFyIFl0PUt0O2Z1bmN0aW9uIFd0KGUpe3RoaXMubWVzc2FnZT1lfVd0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDYW5jZWwiKyh0aGlzLm1lc3NhZ2U/IjogIit0aGlzLm1lc3NhZ2U6IiIpfSxXdC5wcm90b3R5cGUuX19DQU5DRUxfXz0hMDt2YXIgenQ9V3Q7ZnVuY3Rpb24gSnQoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dD1lfSkpO3ZhciByPXRoaXM7ZSgoZnVuY3Rpb24oZSl7ci5yZWFzb258fChyLnJlYXNvbj1uZXcgenQoZSksdChyLnJlYXNvbikpfSkpfUp0LnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259LEp0LnNvdXJjZT1mdW5jdGlvbigpe3ZhciBlLHQ9bmV3IEp0KChmdW5jdGlvbih0KXtlPXR9KSk7cmV0dXJue3Rva2VuOnQsY2FuY2VsOmV9fTt2YXIgR3Q9SnQ7ZnVuY3Rpb24gVnQoZSl7dmFyIHQ9bmV3IFl0KGUpLHI9TWUoWXQucHJvdG90eXBlLnJlcXVlc3QsdCk7cmV0dXJuIEtlLmV4dGVuZChyLFl0LnByb3RvdHlwZSx0KSxLZS5leHRlbmQocix0KSxyfXZhciAkdD1WdChQdCk7JHQuQXhpb3M9WXQsJHQuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBWdChNdCgkdC5kZWZhdWx0cyxlKSl9LCR0LkNhbmNlbD16dCwkdC5DYW5jZWxUb2tlbj1HdCwkdC5pc0NhbmNlbD1EdCwkdC5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfSwkdC5zcHJlYWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KG51bGwsdCl9fSwkdC5pc0F4aW9zRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PT1uKGUpJiYhMD09PWUuaXNBeGlvc0Vycm9yfTt2YXIgWHQ9JHQsWnQ9JHQ7WHQuZGVmYXVsdD1adDt2YXIgUXQsZXIsdHI9WHQ7ZnVuY3Rpb24gcnIoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gbnIoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7Ik9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKCJNYXAiPT09cnx8IlNldCI9PT1yKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKCJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QocikpcmV0dXJuIG5yKGUsdCl9KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxvPWZ1bmN0aW9uKCl7fTtyZXR1cm57czpvLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjpvfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksYT0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gYT1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXthfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBucihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIG9yKGUsdCl7dmFyIHI9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYobj1uLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBpcihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9vcihPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2IoZSx0LHJbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOm9yKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGFyKGUpe3ZhciB0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0KLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCglDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCglQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKCXB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4KCglUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAoJUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZCglBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCglJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KCUxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SCglPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SCglQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgoJKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPU8oZSk7aWYodCl7dmFyIG89Tyh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLG8pfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gQyh0aGlzLHIpfX1mdW5jdGlvbiBzcihlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBhKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9vKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihhLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX0oZXI9UXR8fChRdD17fSkpLmZvcm1Qb3N0PSJmb3JtX3Bvc3QiLGVyLnF1ZXJ5PSJxdWVyeSI7dmFyIHVyOyFmdW5jdGlvbihlKXtlLkNvbmZpZ0RhdGE9ImNvbmZpZ19kYXRhIixlLk9JRENQcm92aWRlck1ldGFEYXRhPSJvaWRjX3Byb3ZpZGVyX21ldGFfZGF0YSIsZS5TZXNzaW9uRGF0YT0ic2Vzc2lvbl9kYXRhIixlLlRlbXBvcmFyeURhdGE9InRlbXBvcmFyeV9kYXRhIn0odXJ8fCh1cj17fSkpO3ZhciBjcixmcj0icmVmcmVzaF90b2tlbl90aW1lciI7IWZ1bmN0aW9uKGUpe2UuUmVhY3ROYXRpdmU9IlJFQUNUX05BVElWRSIsZS5Ccm93c2VyPSJCUk9XU0VSIixlLk5vZGU9Ik5PREUifShjcnx8KGNyPXt9KSk7dmFyIGhyPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKGUsbixvLGksYSxzKXt2YXIgdTtyZXR1cm4gXyh0aGlzLHIpLCh1PXQuY2FsbCh0aGlzLG51bGwhPWk/aTpudWxsPT1zP3ZvaWQgMDpzLm1lc3NhZ2UpKS5uYW1lPXUuY29uc3RydWN0b3IubmFtZSx1LmNvZGU9ZSx1LmZpbGU9bix1Lm1ldGhvZD1vLHUuZGVzY3JpcHRpb249YSx1LmVycm9yPXMsT2JqZWN0LnNldFByb3RvdHlwZU9mKEUodSksKHRoaXMgaW5zdGFuY2VvZiByP3RoaXMuY29uc3RydWN0b3I6dm9pZCAwKS5wcm90b3R5cGUpLHV9cmV0dXJuIHJ9KEwoRXJyb3IpKSxscj1mdW5jdGlvbihlKXtUKHIsZSk7dmFyIHQ9YXIocik7ZnVuY3Rpb24gcihlLG4sbyxpLGEscyx1LGMsZil7dmFyIGg7cmV0dXJuIF8odGhpcyxyKSwoaD10LmNhbGwodGhpcyxlLG4sbyxpLGEpKS5uYW1lPWguY29uc3RydWN0b3IubmFtZSxoLmNvZGU9ZSxoLmZpbGU9bixoLm1ldGhvZD1vLGguZGVzY3JpcHRpb249YSxoLm5ldHdvcmtFcnJvckNvZGU9cyxoLm5ldHdvcmtFcnJvck1lc3NhZ2U9dSxoLnN0YXR1cz1jLGgubmV0d29ya0Vycm9yRGF0YT1mLGh9cmV0dXJuIHJ9KGhyKSxwcj0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dm9pZCAwIT09aj9qOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2Z1bmN0aW9uIGRyKGUsdCxyKXtyZXR1cm4gZShyPXtwYXRoOnQsZXhwb3J0czp7fSxyZXF1aXJlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJEeW5hbWljIHJlcXVpcmVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBieSBAcm9sbHVwL3BsdWdpbi1jb21tb25qcyIpfShudWxsPT10JiZyLnBhdGgpfX0sci5leHBvcnRzKSxyLmV4cG9ydHN9dmFyIHZyPXZvaWQgMCE9PWo/ajoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30sZ3I9W10seXI9W10sbXI9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXksd3I9ITE7ZnVuY3Rpb24gYnIoKXt3cj0hMDtmb3IodmFyIGU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3QpZ3JbdF09ZVt0XSx5cltlLmNoYXJDb2RlQXQodCldPXQ7eXJbIi0iLmNoYXJDb2RlQXQoMCldPTYyLHlyWyJfIi5jaGFyQ29kZUF0KDApXT02M31mdW5jdGlvbiBrcihlLHQscil7Zm9yKHZhciBuLG8saT1bXSxhPXQ7YTxyO2ErPTMpbj0oZVthXTw8MTYpKyhlW2ErMV08PDgpK2VbYSsyXSxpLnB1c2goZ3JbKG89bik+PjE4JjYzXStncltvPj4xMiY2M10rZ3Jbbz4+NiY2M10rZ3JbNjMmb10pO3JldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIHhyKGUpe3ZhciB0O3dyfHxicigpO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXIlMyxvPSIiLGk9W10sYT0xNjM4MyxzPTAsdT1yLW47czx1O3MrPWEpaS5wdXNoKGtyKGUscyxzK2E+dT91OnMrYSkpO3JldHVybiAxPT09bj8odD1lW3ItMV0sbys9Z3JbdD4+Ml0sbys9Z3JbdDw8NCY2M10sbys9Ij09Iik6Mj09PW4mJih0PShlW3ItMl08PDgpK2Vbci0xXSxvKz1nclt0Pj4xMF0sbys9Z3JbdD4+NCY2M10sbys9Z3JbdDw8MiY2M10sbys9Ij0iKSxpLnB1c2gobyksaS5qb2luKCIiKX1mdW5jdGlvbiBfcihlLHQscixuLG8pe3ZhciBpLGEscz04Km8tbi0xLHU9KDE8PHMpLTEsYz11Pj4xLGY9LTcsaD1yP28tMTowLGw9cj8tMToxLHA9ZVt0K2hdO2ZvcihoKz1sLGk9cCYoMTw8LWYpLTEscD4+PS1mLGYrPXM7Zj4wO2k9MjU2KmkrZVt0K2hdLGgrPWwsZi09OCk7Zm9yKGE9aSYoMTw8LWYpLTEsaT4+PS1mLGYrPW47Zj4wO2E9MjU2KmErZVt0K2hdLGgrPWwsZi09OCk7aWYoMD09PWkpaT0xLWM7ZWxzZXtpZihpPT09dSlyZXR1cm4gYT9OYU46MS8wKihwPy0xOjEpO2ErPU1hdGgucG93KDIsbiksaS09Y31yZXR1cm4ocD8tMToxKSphKk1hdGgucG93KDIsaS1uKX1mdW5jdGlvbiBTcihlLHQscixuLG8saSl7dmFyIGEscyx1LGM9OCppLW8tMSxmPSgxPDxjKS0xLGg9Zj4+MSxsPTIzPT09bz9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6aS0xLGQ9bj8xOi0xLHY9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PU1hdGguYWJzKHQpLGlzTmFOKHQpfHx0PT09MS8wPyhzPWlzTmFOKHQpPzE6MCxhPWYpOihhPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLHQqKHU9TWF0aC5wb3coMiwtYSkpPDEmJihhLS0sdSo9MiksKHQrPWEraD49MT9sL3U6bCpNYXRoLnBvdygyLDEtaCkpKnU+PTImJihhKyssdS89MiksYStoPj1mPyhzPTAsYT1mKTphK2g+PTE/KHM9KHQqdS0xKSpNYXRoLnBvdygyLG8pLGErPWgpOihzPXQqTWF0aC5wb3coMixoLTEpKk1hdGgucG93KDIsbyksYT0wKSk7bz49ODtlW3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsby09OCk7Zm9yKGE9YTw8b3xzLGMrPW87Yz4wO2VbcitwXT0yNTUmYSxwKz1kLGEvPTI1NixjLT04KTtlW3IrcC1kXXw9MTI4KnZ9dmFyIEVyPXt9LnRvU3RyaW5nLEFyPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PUVyLmNhbGwoZSl9O1ByLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwPT09dnIuVFlQRURfQVJSQVlfU1VQUE9SVHx8dnIuVFlQRURfQVJSQVlfU1VQUE9SVDt2YXIgVHI9UnIoKTtmdW5jdGlvbiBScigpe3JldHVybiBQci5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiBDcihlLHQpe2lmKFJyKCk8dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgiKTtyZXR1cm4gUHIuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSkuX19wcm90b19fPVByLnByb3RvdHlwZToobnVsbD09PWUmJihlPW5ldyBQcih0KSksZS5sZW5ndGg9dCksZX1mdW5jdGlvbiBQcihlLHQscil7aWYoIShQci5UWVBFRF9BUlJBWV9TVVBQT1JUfHx0aGlzIGluc3RhbmNlb2YgUHIpKXJldHVybiBuZXcgUHIoZSx0LHIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gSXIodGhpcyxlKX1yZXR1cm4gT3IodGhpcyxlLHQscil9ZnVuY3Rpb24gT3IoZSx0LHIsbil7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/ZnVuY3Rpb24oZSx0LHIsbil7aWYodC5ieXRlTGVuZ3RoLHI8MHx8dC5ieXRlTGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHMiKTtpZih0LmJ5dGVMZW5ndGg8cisobnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTtyZXR1cm4gdD12b2lkIDA9PT1yJiZ2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCxyKTpuZXcgVWludDhBcnJheSh0LHIsbiksUHIuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT10KS5fX3Byb3RvX189UHIucHJvdG90eXBlOmU9VXIoZSx0KSxlfShlLHQscixuKToic3RyaW5nIj09dHlwZW9mIHQ/ZnVuY3Rpb24oZSx0LHIpe2lmKCJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yfHwocj0idXRmOCIpLCFQci5pc0VuY29kaW5nKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJlbmNvZGluZyIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpO3ZhciBuPTB8anIodCxyKSxvPShlPUNyKGUsbikpLndyaXRlKHQscik7cmV0dXJuIG8hPT1uJiYoZT1lLnNsaWNlKDAsbykpLGV9KGUsdCxyKTpmdW5jdGlvbihlLHQpe2lmKExyKHQpKXt2YXIgcj0wfE1yKHQubGVuZ3RoKTtyZXR1cm4gMD09PShlPUNyKGUscikpLmxlbmd0aHx8dC5jb3B5KGUsMCwwLHIpLGV9aWYodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8Imxlbmd0aCJpbiB0KXJldHVybiJudW1iZXIiIT10eXBlb2YgdC5sZW5ndGh8fChuPXQubGVuZ3RoKSE9bj9DcihlLDApOlVyKGUsdCk7aWYoIkJ1ZmZlciI9PT10LnR5cGUmJkFyKHQuZGF0YSkpcmV0dXJuIFVyKGUsdC5kYXRhKX12YXIgbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9KGUsdCl9ZnVuY3Rpb24gRHIoZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJyk7aWYoZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKX1mdW5jdGlvbiBJcihlLHQpe2lmKERyKHQpLGU9Q3IoZSx0PDA/MDowfE1yKHQpKSwhUHIuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IodmFyIHI9MDtyPHQ7KytyKWVbcl09MDtyZXR1cm4gZX1mdW5jdGlvbiBVcihlLHQpe3ZhciByPXQubGVuZ3RoPDA/MDowfE1yKHQubGVuZ3RoKTtlPUNyKGUscik7Zm9yKHZhciBuPTA7bjxyO24rPTEpZVtuXT0yNTUmdFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBNcihlKXtpZihlPj1ScigpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitScigpLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8ZX1mdW5jdGlvbiBMcihlKXtyZXR1cm4hKG51bGw9PWV8fCFlLl9pc0J1ZmZlcil9ZnVuY3Rpb24ganIoZSx0KXtpZihMcihlKSlyZXR1cm4gZS5sZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyYmKEFycmF5QnVmZmVyLmlzVmlldyhlKXx8ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm4gZS5ieXRlTGVuZ3RoOyJzdHJpbmciIT10eXBlb2YgZSYmKGU9IiIrZSk7dmFyIHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKHZhciBuPSExOzspc3dpdGNoKHQpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHI7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlIHZvaWQgMDpyZXR1cm4gZm4oZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMipyO2Nhc2UiaGV4IjpyZXR1cm4gcj4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiBobihlKS5sZW5ndGg7ZGVmYXVsdDppZihuKXJldHVybiBmbihlKS5sZW5ndGg7dD0oIiIrdCkudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBIcihlLHQscil7dmFyIG49ITE7aWYoKHZvaWQgMD09PXR8fHQ8MCkmJih0PTApLHQ+dGhpcy5sZW5ndGgpcmV0dXJuIiI7aWYoKHZvaWQgMD09PXJ8fHI+dGhpcy5sZW5ndGgpJiYocj10aGlzLmxlbmd0aCkscjw9MClyZXR1cm4iIjtpZigocj4+Pj0wKTw9KHQ+Pj49MCkpcmV0dXJuIiI7Zm9yKGV8fChlPSJ1dGY4Iik7Oylzd2l0Y2goZSl7Y2FzZSJoZXgiOnJldHVybiBacih0aGlzLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gVnIodGhpcyx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiAkcih0aGlzLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gWHIodGhpcyx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gR3IodGhpcyx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gUXIodGhpcyx0LHIpO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2UpO2U9KGUrIiIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gQnIoZSx0LHIpe3ZhciBuPWVbdF07ZVt0XT1lW3JdLGVbcl09bn1mdW5jdGlvbiBxcihlLHQscixuLG8pe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIHI/KG49cixyPTApOnI+MjE0NzQ4MzY0Nz9yPTIxNDc0ODM2NDc6cjwtMjE0NzQ4MzY0OCYmKHI9LTIxNDc0ODM2NDgpLHI9K3IsaXNOYU4ocikmJihyPW8/MDplLmxlbmd0aC0xKSxyPDAmJihyPWUubGVuZ3RoK3IpLHI+PWUubGVuZ3RoKXtpZihvKXJldHVybi0xO3I9ZS5sZW5ndGgtMX1lbHNlIGlmKHI8MCl7aWYoIW8pcmV0dXJuLTE7cj0wfWlmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9UHIuZnJvbSh0LG4pKSxMcih0KSlyZXR1cm4gMD09PXQubGVuZ3RoPy0xOk5yKGUsdCxyLG4sbyk7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0Jj0yNTUsUHIuVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/bz9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSx0LHIpOk5yKGUsW3RdLHIsbixvKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBOcihlLHQscixuLG8pe3ZhciBpLGE9MSxzPWUubGVuZ3RoLHU9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKCJ1Y3MyIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTthPTIscy89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiAxPT09YT9lW3RdOmUucmVhZFVJbnQxNkJFKHQqYSl9aWYobyl7dmFyIGY9LTE7Zm9yKGk9cjtpPHM7aSsrKWlmKGMoZSxpKT09PWModCwtMT09PWY/MDppLWYpKXtpZigtMT09PWYmJihmPWkpLGktZisxPT09dSlyZXR1cm4gZiphfWVsc2UtMSE9PWYmJihpLT1pLWYpLGY9LTF9ZWxzZSBmb3Iocit1PnMmJihyPXMtdSksaT1yO2k+PTA7aS0tKXtmb3IodmFyIGg9ITAsbD0wO2w8dTtsKyspaWYoYyhlLGkrbCkhPT1jKHQsbCkpe2g9ITE7YnJlYWt9aWYoaClyZXR1cm4gaX1yZXR1cm4tMX1mdW5jdGlvbiBGcihlLHQscixuKXtyPU51bWJlcihyKXx8MDt2YXIgbz1lLmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5vJiYobj1vKTpuPW87dmFyIGk9dC5sZW5ndGg7aWYoaSUyIT0wKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO24+aS8yJiYobj1pLzIpO2Zvcih2YXIgYT0wO2E8bjsrK2Epe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqYSwyKSwxNik7aWYoaXNOYU4ocykpcmV0dXJuIGE7ZVtyK2FdPXN9cmV0dXJuIGF9ZnVuY3Rpb24gS3IoZSx0LHIsbil7cmV0dXJuIGxuKGZuKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIFlyKGUsdCxyLG4pe3JldHVybiBsbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KytyKXQucHVzaCgyNTUmZS5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gdH0odCksZSxyLG4pfWZ1bmN0aW9uIFdyKGUsdCxyLG4pe3JldHVybiBZcihlLHQscixuKX1mdW5jdGlvbiB6cihlLHQscixuKXtyZXR1cm4gbG4oaG4odCksZSxyLG4pfWZ1bmN0aW9uIEpyKGUsdCxyLG4pe3JldHVybiBsbihmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLG8saT1bXSxhPTA7YTxlLmxlbmd0aCYmISgodC09Mik8MCk7KythKW49KHI9ZS5jaGFyQ29kZUF0KGEpKT4+OCxvPXIlMjU2LGkucHVzaChvKSxpLnB1c2gobik7cmV0dXJuIGl9KHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIEdyKGUsdCxyKXtyZXR1cm4gMD09PXQmJnI9PT1lLmxlbmd0aD94cihlKTp4cihlLnNsaWNlKHQscikpfWZ1bmN0aW9uIFZyKGUsdCxyKXtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbj1bXSxvPXQ7bzxyOyl7dmFyIGksYSxzLHUsYz1lW29dLGY9bnVsbCxoPWM+MjM5PzQ6Yz4yMjM/MzpjPjE5MT8yOjE7aWYobytoPD1yKXN3aXRjaChoKXtjYXNlIDE6YzwxMjgmJihmPWMpO2JyZWFrO2Nhc2UgMjoxMjg9PSgxOTImKGk9ZVtvKzFdKSkmJih1PSgzMSZjKTw8Nnw2MyZpKT4xMjcmJihmPXUpO2JyZWFrO2Nhc2UgMzppPWVbbysxXSxhPWVbbysyXSwxMjg9PSgxOTImaSkmJjEyOD09KDE5MiZhKSYmKHU9KDE1JmMpPDwxMnwoNjMmaSk8PDZ8NjMmYSk+MjA0NyYmKHU8NTUyOTZ8fHU+NTczNDMpJiYoZj11KTticmVhaztjYXNlIDQ6aT1lW28rMV0sYT1lW28rMl0scz1lW28rM10sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImYSkmJjEyOD09KDE5MiZzKSYmKHU9KDE1JmMpPDwxOHwoNjMmaSk8PDEyfCg2MyZhKTw8Nnw2MyZzKT42NTUzNSYmdTwxMTE0MTEyJiYoZj11KX1udWxsPT09Zj8oZj02NTUzMyxoPTEpOmY+NjU1MzUmJihmLT02NTUzNixuLnB1c2goZj4+PjEwJjEwMjN8NTUyOTYpLGY9NTYzMjB8MTAyMyZmKSxuLnB1c2goZiksbys9aH1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodDw9NDA5NilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZSk7Zm9yKHZhciByPSIiLG49MDtuPHQ7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUuc2xpY2UobixuKz00MDk2KSk7cmV0dXJuIHJ9KG4pfWZ1bmN0aW9uICRyKGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbz10O288cjsrK28pbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVtvXSk7cmV0dXJuIG59ZnVuY3Rpb24gWHIoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBvPXQ7bzxyOysrbyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbb10pO3JldHVybiBufWZ1bmN0aW9uIFpyKGUsdCxyKXt2YXIgbj1lLmxlbmd0aDsoIXR8fHQ8MCkmJih0PTApLCghcnx8cjwwfHxyPm4pJiYocj1uKTtmb3IodmFyIG89IiIsaT10O2k8cjsrK2kpbys9Y24oZVtpXSk7cmV0dXJuIG99ZnVuY3Rpb24gUXIoZSx0LHIpe2Zvcih2YXIgbj1lLnNsaWNlKHQsciksbz0iIixpPTA7aTxuLmxlbmd0aDtpKz0yKW8rPVN0cmluZy5mcm9tQ2hhckNvZGUobltpXSsyNTYqbltpKzFdKTtyZXR1cm4gb31mdW5jdGlvbiBlbihlLHQscil7aWYoZSUxIT0wfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKGUrdD5yKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24gdG4oZSx0LHIsbixvLGkpe2lmKCFMcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5vfHx0PGkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gcm4oZSx0LHIsbil7dDwwJiYodD02NTUzNSt0KzEpO2Zvcih2YXIgbz0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciwyKTtvPGk7KytvKWVbcitvXT0odCYyNTU8PDgqKG4/bzoxLW8pKT4+PjgqKG4/bzoxLW8pfWZ1bmN0aW9uIG5uKGUsdCxyLG4pe3Q8MCYmKHQ9NDI5NDk2NzI5NSt0KzEpO2Zvcih2YXIgbz0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciw0KTtvPGk7KytvKWVbcitvXT10Pj4+OCoobj9vOjMtbykmMjU1fWZ1bmN0aW9uIG9uKGUsdCxyLG4sbyxpKXtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gYW4oZSx0LHIsbixvKXtyZXR1cm4gb3x8b24oZSwwLHIsNCksU3IoZSx0LHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gc24oZSx0LHIsbixvKXtyZXR1cm4gb3x8b24oZSwwLHIsOCksU3IoZSx0LHIsbiw1Miw4KSxyKzh9UHIucG9vbFNpemU9ODE5MixQci5fYXVnbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX189UHIucHJvdG90eXBlLGV9LFByLmZyb209ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBPcihudWxsLGUsdCxyKX0sUHIuVFlQRURfQVJSQVlfU1VQUE9SVCYmKFByLnByb3RvdHlwZS5fX3Byb3RvX189VWludDhBcnJheS5wcm90b3R5cGUsUHIuX19wcm90b19fPVVpbnQ4QXJyYXkpLFByLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIERyKHQpLHQ8PTA/Q3IoZSx0KTp2b2lkIDAhPT1yPyJzdHJpbmciPT10eXBlb2Ygbj9DcihlLHQpLmZpbGwocixuKTpDcihlLHQpLmZpbGwocik6Q3IoZSx0KX0obnVsbCxlLHQscil9LFByLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe3JldHVybiBJcihudWxsLGUpfSxQci5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7cmV0dXJuIElyKG51bGwsZSl9LFByLmlzQnVmZmVyPXBuLFByLmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtpZighTHIoZSl8fCFMcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzIik7aWYoZT09PXQpcmV0dXJuIDA7Zm9yKHZhciByPWUubGVuZ3RoLG49dC5sZW5ndGgsbz0wLGk9TWF0aC5taW4ocixuKTtvPGk7KytvKWlmKGVbb10hPT10W29dKXtyPWVbb10sbj10W29dO2JyZWFrfXJldHVybiByPG4/LTE6bjxyPzE6MH0sUHIuaXNFbmNvZGluZz1mdW5jdGlvbihlKXtzd2l0Y2goU3RyaW5nKGUpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sUHIuY29uY2F0PWZ1bmN0aW9uKGUsdCl7aWYoIUFyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIFByLmFsbG9jKDApO3ZhciByO2lmKHZvaWQgMD09PXQpZm9yKHQ9MCxyPTA7cjxlLmxlbmd0aDsrK3IpdCs9ZVtyXS5sZW5ndGg7dmFyIG49UHIuYWxsb2NVbnNhZmUodCksbz0wO2ZvcihyPTA7cjxlLmxlbmd0aDsrK3Ipe3ZhciBpPWVbcl07aWYoIUxyKGkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpLmNvcHkobixvKSxvKz1pLmxlbmd0aH1yZXR1cm4gbn0sUHIuYnl0ZUxlbmd0aD1qcixQci5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLFByLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTIpQnIodGhpcyx0LHQrMSk7cmV0dXJuIHRoaXN9LFByLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTQhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTQpQnIodGhpcyx0LHQrMyksQnIodGhpcyx0KzEsdCsyKTtyZXR1cm4gdGhpc30sUHIucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9OClCcih0aGlzLHQsdCs3KSxCcih0aGlzLHQrMSx0KzYpLEJyKHRoaXMsdCsyLHQrNSksQnIodGhpcyx0KzMsdCs0KTtyZXR1cm4gdGhpc30sUHIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9MHx0aGlzLmxlbmd0aDtyZXR1cm4gMD09PWU/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/VnIodGhpcywwLGUpOkhyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sUHIucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihlKXtpZighTHIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09ZXx8MD09PVByLmNvbXBhcmUodGhpcyxlKX0sUHIucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgZT0iIjtyZXR1cm4gdGhpcy5sZW5ndGg+MCYmKGU9dGhpcy50b1N0cmluZygiaGV4IiwwLDUwKS5tYXRjaCgvLnsyfS9nKS5qb2luKCIgIiksdGhpcy5sZW5ndGg+NTAmJihlKz0iIC4uLiAiKSksIjxCdWZmZXIgIitlKyI+In0sUHIucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24oZSx0LHIsbixvKXtpZighTHIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO2lmKHZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PXImJihyPWU/ZS5sZW5ndGg6MCksdm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09byYmKG89dGhpcy5sZW5ndGgpLHQ8MHx8cj5lLmxlbmd0aHx8bjwwfHxvPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihuPj1vJiZ0Pj1yKXJldHVybiAwO2lmKG4+PW8pcmV0dXJuLTE7aWYodD49cilyZXR1cm4gMTtpZih0aGlzPT09ZSlyZXR1cm4gMDtmb3IodmFyIGk9KG8+Pj49MCktKG4+Pj49MCksYT0ocj4+Pj0wKS0odD4+Pj0wKSxzPU1hdGgubWluKGksYSksdT10aGlzLnNsaWNlKG4sbyksYz1lLnNsaWNlKHQsciksZj0wO2Y8czsrK2YpaWYodVtmXSE9PWNbZl0pe2k9dVtmXSxhPWNbZl07YnJlYWt9cmV0dXJuIGk8YT8tMTphPGk/MTowfSxQci5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGUsdCxyKX0sUHIucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBxcih0aGlzLGUsdCxyLCEwKX0sUHIucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gcXIodGhpcyxlLHQsciwhMSl9LFByLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQscixuKXtpZih2b2lkIDA9PT10KW49InV0ZjgiLHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2UgaWYodm9pZCAwPT09ciYmInN0cmluZyI9PXR5cGVvZiB0KW49dCxyPXRoaXMubGVuZ3RoLHQ9MDtlbHNle2lmKCFpc0Zpbml0ZSh0KSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIik7dHw9MCxpc0Zpbml0ZShyKT8ocnw9MCx2b2lkIDA9PT1uJiYobj0idXRmOCIpKToobj1yLHI9dm9pZCAwKX12YXIgbz10aGlzLmxlbmd0aC10O2lmKCh2b2lkIDA9PT1yfHxyPm8pJiYocj1vKSxlLmxlbmd0aD4wJiYocjwwfHx0PDApfHx0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO258fChuPSJ1dGY4Iik7Zm9yKHZhciBpPSExOzspc3dpdGNoKG4pe2Nhc2UiaGV4IjpyZXR1cm4gRnIodGhpcyxlLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gS3IodGhpcyxlLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIFlyKHRoaXMsZSx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIFdyKHRoaXMsZSx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4genIodGhpcyxlLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBKcih0aGlzLGUsdCxyKTtkZWZhdWx0OmlmKGkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKTtuPSgiIituKS50b0xvd2VyQ2FzZSgpLGk9ITB9fSxQci5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fSxQci5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksUHIuVFlQRURfQVJSQVlfU1VQUE9SVCkocj10aGlzLnN1YmFycmF5KGUsdCkpLl9fcHJvdG9fXz1Qci5wcm90b3R5cGU7ZWxzZXt2YXIgbz10LWU7cj1uZXcgUHIobyx2b2lkIDApO2Zvcih2YXIgaT0wO2k8bzsrK2kpcltpXT10aGlzW2krZV19cmV0dXJuIHJ9LFByLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8ZW4oZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxvPTEsaT0wOysraTx0JiYobyo9MjU2KTspbis9dGhpc1tlK2ldKm87cmV0dXJuIG59LFByLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8ZW4oZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlKy0tdF0sbz0xO3Q+MCYmKG8qPTI1Nik7KW4rPXRoaXNbZSstLXRdKm87cmV0dXJuIG59LFByLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8ZW4oZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxQci5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fGVuKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh9LFByLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8ZW4oZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdPDw4fHRoaXNbZSsxXX0sUHIucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxlbihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LFByLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8ZW4oZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW2VdKyh0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM10pfSxQci5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8ZW4oZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxvPTEsaT0wOysraTx0JiYobyo9MjU2KTspbis9dGhpc1tlK2ldKm87cmV0dXJuIG4+PShvKj0xMjgpJiYobi09TWF0aC5wb3coMiw4KnQpKSxufSxQci5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8ZW4oZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxvPTEsaT10aGlzW2UrLS1uXTtuPjAmJihvKj0yNTYpOylpKz10aGlzW2UrLS1uXSpvO3JldHVybiBpPj0obyo9MTI4KSYmKGktPU1hdGgucG93KDIsOCp0KSksaX0sUHIucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fGVuKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LFByLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fGVuKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlXXx0aGlzW2UrMV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LFByLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihlLHQpe3R8fGVuKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LFByLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxlbihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sUHIucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fGVuKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXTw8MjR8dGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdfSxQci5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8ZW4oZSw0LHRoaXMubGVuZ3RoKSxfcih0aGlzLGUsITAsMjMsNCl9LFByLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxlbihlLDQsdGhpcy5sZW5ndGgpLF9yKHRoaXMsZSwhMSwyMyw0KX0sUHIucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxlbihlLDgsdGhpcy5sZW5ndGgpLF9yKHRoaXMsZSwhMCw1Miw4KX0sUHIucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxlbihlLDgsdGhpcy5sZW5ndGgpLF9yKHRoaXMsZSwhMSw1Miw4KX0sUHIucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4pe2U9K2UsdHw9MCxyfD0wLG58fHRuKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIG89MSxpPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytpPHImJihvKj0yNTYpOyl0aGlzW3QraV09ZS9vJjI1NTtyZXR1cm4gdCtyfSxQci5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7ZT0rZSx0fD0wLHJ8PTAsbnx8dG4odGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgbz1yLTEsaT0xO2Zvcih0aGlzW3Qrb109MjU1JmU7LS1vPj0wJiYoaSo9MjU2KTspdGhpc1t0K29dPWUvaSYyNTU7cmV0dXJuIHQrcn0sUHIucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8dG4odGhpcyxlLHQsMSwyNTUsMCksUHIuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksdGhpc1t0XT0yNTUmZSx0KzF9LFByLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fHRuKHRoaXMsZSx0LDIsNjU1MzUsMCksUHIuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOnJuKHRoaXMsZSx0LCEwKSx0KzJ9LFByLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fHRuKHRoaXMsZSx0LDIsNjU1MzUsMCksUHIuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOnJuKHRoaXMsZSx0LCExKSx0KzJ9LFByLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fHRuKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3QrM109ZT4+PjI0LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdF09MjU1JmUpOm5uKHRoaXMsZSx0LCEwKSx0KzR9LFByLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fHRuKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj4yNCx0aGlzW3QrMV09ZT4+PjE2LHRoaXNbdCsyXT1lPj4+OCx0aGlzW3QrM109MjU1JmUpOm5uKHRoaXMsZSx0LCExKSx0KzR9LFByLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIG89TWF0aC5wb3coMiw4KnItMSk7dG4odGhpcyxlLHQscixvLTEsLW8pfXZhciBpPTAsYT0xLHM9MDtmb3IodGhpc1t0XT0yNTUmZTsrK2k8ciYmKGEqPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QraS0xXSYmKHM9MSksdGhpc1t0K2ldPShlL2E+PjApLXMmMjU1O3JldHVybiB0K3J9LFByLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIG89TWF0aC5wb3coMiw4KnItMSk7dG4odGhpcyxlLHQscixvLTEsLW8pfXZhciBpPXItMSxhPTEscz0wO2Zvcih0aGlzW3QraV09MjU1JmU7LS1pPj0wJiYoYSo9MjU2KTspZTwwJiYwPT09cyYmMCE9PXRoaXNbdCtpKzFdJiYocz0xKSx0aGlzW3QraV09KGUvYT4+MCktcyYyNTU7cmV0dXJuIHQrcn0sUHIucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHx0bih0aGlzLGUsdCwxLDEyNywtMTI4KSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSxlPDAmJihlPTI1NStlKzEpLHRoaXNbdF09MjU1JmUsdCsxfSxQci5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fHRuKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCk6cm4odGhpcyxlLHQsITApLHQrMn0sUHIucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHx0bih0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksUHIuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOnJuKHRoaXMsZSx0LCExKSx0KzJ9LFByLnByb3RvdHlwZS53cml0ZUludDMyTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8dG4odGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOm5uKHRoaXMsZSx0LCEwKSx0KzR9LFByLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8dG4odGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj4yNCx0aGlzW3QrMV09ZT4+PjE2LHRoaXNbdCsyXT1lPj4+OCx0aGlzW3QrM109MjU1JmUpOm5uKHRoaXMsZSx0LCExKSx0KzR9LFByLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBhbih0aGlzLGUsdCwhMCxyKX0sUHIucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGFuKHRoaXMsZSx0LCExLHIpfSxQci5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHNuKHRoaXMsZSx0LCEwLHIpfSxQci5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHNuKHRoaXMsZSx0LCExLHIpfSxQci5wcm90b3R5cGUuY29weT1mdW5jdGlvbihlLHQscixuKXtpZihyfHwocj0wKSxufHwwPT09bnx8KG49dGhpcy5sZW5ndGgpLHQ+PWUubGVuZ3RoJiYodD1lLmxlbmd0aCksdHx8KHQ9MCksbj4wJiZuPHImJihuPXIpLG49PT1yKXJldHVybiAwO2lmKDA9PT1lLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKHQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKHI8MHx8cj49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihuPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzIik7bj50aGlzLmxlbmd0aCYmKG49dGhpcy5sZW5ndGgpLGUubGVuZ3RoLXQ8bi1yJiYobj1lLmxlbmd0aC10K3IpO3ZhciBvLGk9bi1yO2lmKHRoaXM9PT1lJiZyPHQmJnQ8bilmb3Iobz1pLTE7bz49MDstLW8pZVtvK3RdPXRoaXNbbytyXTtlbHNlIGlmKGk8MWUzfHwhUHIuVFlQRURfQVJSQVlfU1VQUE9SVClmb3Iobz0wO288aTsrK28pZVtvK3RdPXRoaXNbbytyXTtlbHNlIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGUsdGhpcy5zdWJhcnJheShyLHIraSksdCk7cmV0dXJuIGl9LFByLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0PyhuPXQsdD0wLHI9dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgciYmKG49cixyPXRoaXMubGVuZ3RoKSwxPT09ZS5sZW5ndGgpe3ZhciBvPWUuY2hhckNvZGVBdCgwKTtvPDI1NiYmKGU9byl9aWYodm9pZCAwIT09biYmInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIG4mJiFQci5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbil9ZWxzZSJudW1iZXIiPT10eXBlb2YgZSYmKGUmPTI1NSk7aWYodDwwfHx0aGlzLmxlbmd0aDx0fHx0aGlzLmxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihyPD10KXJldHVybiB0aGlzO3ZhciBpO2lmKHQ+Pj49MCxyPXZvaWQgMD09PXI/dGhpcy5sZW5ndGg6cj4+PjAsZXx8KGU9MCksIm51bWJlciI9PXR5cGVvZiBlKWZvcihpPXQ7aTxyOysraSl0aGlzW2ldPWU7ZWxzZXt2YXIgYT1McihlKT9lOmZuKG5ldyBQcihlLG4pLnRvU3RyaW5nKCkpLHM9YS5sZW5ndGg7Zm9yKGk9MDtpPHItdDsrK2kpdGhpc1tpK3RdPWFbaSVzXX1yZXR1cm4gdGhpc307dmFyIHVuPS9bXitcLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIGNuKGUpe3JldHVybiBlPDE2PyIwIitlLnRvU3RyaW5nKDE2KTplLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBmbihlLHQpe3ZhciByO3Q9dHx8MS8wO2Zvcih2YXIgbj1lLmxlbmd0aCxvPW51bGwsaT1bXSxhPTA7YTxuOysrYSl7aWYoKHI9ZS5jaGFyQ29kZUF0KGEpKT41NTI5NSYmcjw1NzM0NCl7aWYoIW8pe2lmKHI+NTYzMTkpeyh0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZihhKzE9PT1uKXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9bz1yO2NvbnRpbnVlfWlmKHI8NTYzMjApeyh0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KSxvPXI7Y29udGludWV9cj02NTUzNisoby01NTI5Njw8MTB8ci01NjMyMCl9ZWxzZSBvJiYodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7aWYobz1udWxsLHI8MTI4KXtpZigodC09MSk8MClicmVhaztpLnB1c2gocil9ZWxzZSBpZihyPDIwNDgpe2lmKCh0LT0yKTwwKWJyZWFrO2kucHVzaChyPj42fDE5Miw2MyZyfDEyOCl9ZWxzZSBpZihyPDY1NTM2KXtpZigodC09Myk8MClicmVhaztpLnB1c2gocj4+MTJ8MjI0LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX1lbHNle2lmKCEocjwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpO2lmKCh0LT00KTwwKWJyZWFrO2kucHVzaChyPj4xOHwyNDAscj4+MTImNjN8MTI4LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX19cmV0dXJuIGl9ZnVuY3Rpb24gaG4oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0LHIsbixvLGksYTt3cnx8YnIoKTt2YXIgcz1lLmxlbmd0aDtpZihzJTQ+MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTtpPSI9Ij09PWVbcy0yXT8yOiI9Ij09PWVbcy0xXT8xOjAsYT1uZXcgbXIoMypzLzQtaSksbj1pPjA/cy00OnM7dmFyIHU9MDtmb3IodD0wLHI9MDt0PG47dCs9NCxyKz0zKW89eXJbZS5jaGFyQ29kZUF0KHQpXTw8MTh8eXJbZS5jaGFyQ29kZUF0KHQrMSldPDwxMnx5cltlLmNoYXJDb2RlQXQodCsyKV08PDZ8eXJbZS5jaGFyQ29kZUF0KHQrMyldLGFbdSsrXT1vPj4xNiYyNTUsYVt1KytdPW8+PjgmMjU1LGFbdSsrXT0yNTUmbztyZXR1cm4gMj09PWk/KG89eXJbZS5jaGFyQ29kZUF0KHQpXTw8Mnx5cltlLmNoYXJDb2RlQXQodCsxKV0+PjQsYVt1KytdPTI1NSZvKToxPT09aSYmKG89eXJbZS5jaGFyQ29kZUF0KHQpXTw8MTB8eXJbZS5jaGFyQ29kZUF0KHQrMSldPDw0fHlyW2UuY2hhckNvZGVBdCh0KzIpXT4+MixhW3UrK109bz4+OCYyNTUsYVt1KytdPTI1NSZvKSxhfShmdW5jdGlvbihlKXtpZigoZT1mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltP2UudHJpbSgpOmUucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfShlKS5yZXBsYWNlKHVuLCIiKSkubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDtlLmxlbmd0aCU0IT0wOyllKz0iPSI7cmV0dXJuIGV9KGUpKX1mdW5jdGlvbiBsbihlLHQscixuKXtmb3IodmFyIG89MDtvPG4mJiEobytyPj10Lmxlbmd0aHx8bz49ZS5sZW5ndGgpOysrbyl0W28rcl09ZVtvXTtyZXR1cm4gb31mdW5jdGlvbiBwbihlKXtyZXR1cm4gbnVsbCE9ZSYmKCEhZS5faXNCdWZmZXJ8fGRuKGUpfHxmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5yZWFkRmxvYXRMRSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuc2xpY2UmJmRuKGUuc2xpY2UoMCwwKSl9KGUpKX1mdW5jdGlvbiBkbihlKXtyZXR1cm4hIWUuY29uc3RydWN0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfXZhciB2bj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxCdWZmZXI6UHIsSU5TUEVDVF9NQVhfQllURVM6NTAsU2xvd0J1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4rZSE9ZSYmKGU9MCksUHIuYWxsb2MoK2UpfSxpc0J1ZmZlcjpwbixrTWF4TGVuZ3RoOlRyfSksZ249ZHIoKGZ1bmN0aW9uKGUsdCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxyPXQlNDtpZighcilyZXR1cm4gZTt2YXIgbj10LG89NC1yLGk9dCtvLGE9UHIuYWxsb2MoaSk7Zm9yKGEud3JpdGUoZSk7by0tOylhLndyaXRlKCI9IixuKyspO3JldHVybiBhLnRvU3RyaW5nKCl9fSkpLHluPWRyKChmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9InV0ZjgiKSxQci5pc0J1ZmZlcihlKT9vKGUudG9TdHJpbmcoImJhc2U2NCIpKTpvKFByLmZyb20oZSx0KS50b1N0cmluZygiYmFzZTY0IikpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIGU9ZS50b1N0cmluZygpLGduLmRlZmF1bHQoZSkucmVwbGFjZSgvXC0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUucmVwbGFjZSgvPS9nLCIiKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1yO2kuZW5jb2RlPXIsaS5kZWNvZGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9InV0ZjgiKSxQci5mcm9tKG4oZSksImJhc2U2NCIpLnRvU3RyaW5nKHQpfSxpLnRvQmFzZTY0PW4saS5mcm9tQmFzZTY0PW8saS50b0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4gUHIuZnJvbShuKGUpLCJiYXNlNjQiKX0sdC5kZWZhdWx0PWl9KSksbW49ZHIoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz15bi5kZWZhdWx0LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0c30pKSx3bj1kcigoZnVuY3Rpb24oZSx0KXt2YXIgcjtlLmV4cG9ydHM9KHI9cnx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciByO3JldHVybiBlLnByb3RvdHlwZT10LHI9bmV3IGUsZS5wcm90b3R5cGU9bnVsbCxyfX0oKSxuPXt9LG89bi5saWI9e30saT1vLkJhc2U9e2V4dGVuZDpmdW5jdGlvbihlKXt2YXIgdD1yKHRoaXMpO3JldHVybiBlJiZ0Lm1peEluKGUpLHQuaGFzT3duUHJvcGVydHkoImluaXQiKSYmdGhpcy5pbml0IT09dC5pbml0fHwodC5pbml0PWZ1bmN0aW9uKCl7dC4kc3VwZXIuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSx0LmluaXQucHJvdG90eXBlPXQsdC4kc3VwZXI9dGhpcyx0fSxjcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmV4dGVuZCgpO3JldHVybiBlLmluaXQuYXBwbHkoZSxhcmd1bWVudHMpLGV9LGluaXQ6ZnVuY3Rpb24oKXt9LG1peEluOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWUuaGFzT3duUHJvcGVydHkodCkmJih0aGlzW3RdPWVbdF0pO2UuaGFzT3duUHJvcGVydHkoInRvU3RyaW5nIikmJih0aGlzLnRvU3RyaW5nPWUudG9TdHJpbmcpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXQucHJvdG90eXBlLmV4dGVuZCh0aGlzKX19LGE9by5Xb3JkQXJyYXk9aS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24oZSx0KXtlPXRoaXMud29yZHM9ZXx8W10sdGhpcy5zaWdCeXRlcz1udWxsIT10P3Q6NCplLmxlbmd0aH0sdG9TdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuKGV8fHUpLnN0cmluZ2lmeSh0aGlzKX0sY29uY2F0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMud29yZHMscj1lLndvcmRzLG49dGhpcy5zaWdCeXRlcyxvPWUuc2lnQnl0ZXM7aWYodGhpcy5jbGFtcCgpLG4lNClmb3IodmFyIGk9MDtpPG87aSsrKXt2YXIgYT1yW2k+Pj4yXT4+PjI0LWklNCo4JjI1NTt0W24raT4+PjJdfD1hPDwyNC0obitpKSU0Kjh9ZWxzZSBmb3IoaT0wO2k8bztpKz00KXRbbitpPj4+Ml09cltpPj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPW8sdGhpc30sY2xhbXA6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLndvcmRzLHI9dGhpcy5zaWdCeXRlczt0W3I+Pj4yXSY9NDI5NDk2NzI5NTw8MzItciU0KjgsdC5sZW5ndGg9ZS5jZWlsKHIvNCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGU9aS5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiBlLndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksZX0scmFuZG9tOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcixuPVtdLG89ZnVuY3Rpb24odCl7dD10O3ZhciByPTk4NzY1NDMyMSxuPTQyOTQ5NjcyOTU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89KChyPTM2OTY5Kig2NTUzNSZyKSsocj4+MTYpJm4pPDwxNikrKHQ9MThlMyooNjU1MzUmdCkrKHQ+PjE2KSZuKSZuO3JldHVybiBvLz00Mjk0OTY3Mjk2LChvKz0uNSkqKGUucmFuZG9tKCk+LjU/MTotMSl9fSxpPTA7aTx0O2krPTQpe3ZhciBzPW8oNDI5NDk2NzI5Nioocnx8ZS5yYW5kb20oKSkpO3I9OTg3NjU0MDcxKnMoKSxuLnB1c2goNDI5NDk2NzI5NipzKCl8MCl9cmV0dXJuIG5ldyBhLmluaXQobix0KX19KSxzPW4uZW5jPXt9LHU9cy5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS53b3JkcyxyPWUuc2lnQnl0ZXMsbj1bXSxvPTA7bzxyO28rKyl7dmFyIGk9dFtvPj4+Ml0+Pj4yNC1vJTQqOCYyNTU7bi5wdXNoKChpPj4+NCkudG9TdHJpbmcoMTYpKSxuLnB1c2goKDE1JmkpLnRvU3RyaW5nKDE2KSl9cmV0dXJuIG4uam9pbigiIil9LHBhcnNlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmxlbmd0aCxyPVtdLG49MDtuPHQ7bis9MilyW24+Pj4zXXw9cGFyc2VJbnQoZS5zdWJzdHIobiwyKSwxNik8PDI0LW4lOCo0O3JldHVybiBuZXcgYS5pbml0KHIsdC8yKX19LGM9cy5MYXRpbjE9e3N0cmluZ2lmeTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS53b3JkcyxyPWUuc2lnQnl0ZXMsbj1bXSxvPTA7bzxyO28rKyl7dmFyIGk9dFtvPj4+Ml0+Pj4yNC1vJTQqOCYyNTU7bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoaSkpfXJldHVybiBuLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgscj1bXSxuPTA7bjx0O24rKylyW24+Pj4yXXw9KDI1NSZlLmNoYXJDb2RlQXQobikpPDwyNC1uJTQqODtyZXR1cm4gbmV3IGEuaW5pdChyLHQpfX0sZj1zLlV0Zjg9e3N0cmluZ2lmeTpmdW5jdGlvbihlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoYy5zdHJpbmdpZnkoZSkpKX1jYXRjaChlKXt0aHJvdyBuZXcgRXJyb3IoIk1hbGZvcm1lZCBVVEYtOCBkYXRhIil9fSxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm4gYy5wYXJzZSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpKX19LGg9by5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtPWkuZXh0ZW5kKHtyZXNldDpmdW5jdGlvbigpe3RoaXMuX2RhdGE9bmV3IGEuaW5pdCx0aGlzLl9uRGF0YUJ5dGVzPTB9LF9hcHBlbmQ6ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBlJiYoZT1mLnBhcnNlKGUpKSx0aGlzLl9kYXRhLmNvbmNhdChlKSx0aGlzLl9uRGF0YUJ5dGVzKz1lLnNpZ0J5dGVzfSxfcHJvY2VzczpmdW5jdGlvbih0KXt2YXIgcj10aGlzLl9kYXRhLG49ci53b3JkcyxvPXIuc2lnQnl0ZXMsaT10aGlzLmJsb2NrU2l6ZSxzPW8vKDQqaSksdT0ocz10P2UuY2VpbChzKTplLm1heCgoMHxzKS10aGlzLl9taW5CdWZmZXJTaXplLDApKSppLGM9ZS5taW4oNCp1LG8pO2lmKHUpe2Zvcih2YXIgZj0wO2Y8dTtmKz1pKXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKG4sZik7dmFyIGg9bi5zcGxpY2UoMCx1KTtyLnNpZ0J5dGVzLT1jfXJldHVybiBuZXcgYS5pbml0KGgsYyl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGU9aS5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiBlLl9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSxlfSxfbWluQnVmZmVyU2l6ZTowfSksbD0oby5IYXNoZXI9aC5leHRlbmQoe2NmZzppLmV4dGVuZCgpLGluaXQ6ZnVuY3Rpb24oZSl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKGUpLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtoLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSx1cGRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2FwcGVuZChlKSx0aGlzLl9wcm9jZXNzKCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJnRoaXMuX2FwcGVuZChlKSx0aGlzLl9kb0ZpbmFsaXplKCl9LGJsb2NrU2l6ZToxNixfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LHIpe3JldHVybiBuZXcgZS5pbml0KHIpLmZpbmFsaXplKHQpfX0sX2NyZWF0ZUhtYWNIZWxwZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscil7cmV0dXJuIG5ldyBsLkhNQUMuaW5pdChlLHIpLmZpbmFsaXplKHQpfX19KSxuLmFsZ289e30pO3JldHVybiBufShNYXRoKSxyKX0pKSxibj1kcigoZnVuY3Rpb24oZSx0KXt2YXIgcjtlLmV4cG9ydHM9KHI9d24sZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciBlPXIubGliLldvcmRBcnJheSx0PWUuaW5pdDsoZS5pbml0PWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmKGU9bmV3IFVpbnQ4QXJyYXkoZSkpLChlIGluc3RhbmNlb2YgSW50OEFycmF5fHwidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5JiZlIGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXl8fGUgaW5zdGFuY2VvZiBJbnQxNkFycmF5fHxlIGluc3RhbmNlb2YgVWludDE2QXJyYXl8fGUgaW5zdGFuY2VvZiBJbnQzMkFycmF5fHxlIGluc3RhbmNlb2YgVWludDMyQXJyYXl8fGUgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXl8fGUgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpJiYoZT1uZXcgVWludDhBcnJheShlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKSksZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2Zvcih2YXIgcj1lLmJ5dGVMZW5ndGgsbj1bXSxvPTA7bzxyO28rKyluW28+Pj4yXXw9ZVtvXTw8MjQtbyU0Kjg7dC5jYWxsKHRoaXMsbixyKX1lbHNlIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSkucHJvdG90eXBlPWV9fSgpLHIubGliLldvcmRBcnJheSl9KSksa249ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsImRlZmF1bHQiKT9lLmRlZmF1bHQ6ZX0oZHIoKGZ1bmN0aW9uKGUpeyFmdW5jdGlvbih0LHIpe3ZhciBuPXt9OyFmdW5jdGlvbihlKXtlLl9fZXNNb2R1bGU9ITAsZS5kaWdlc3RMZW5ndGg9MzIsZS5ibG9ja1NpemU9NjQ7dmFyIHQ9bmV3IFVpbnQzMkFycmF5KFsxMTE2MzUyNDA4LDE4OTk0NDc0NDEsMzA0OTMyMzQ3MSwzOTIxMDA5NTczLDk2MTk4NzE2MywxNTA4OTcwOTkzLDI0NTM2MzU3NDgsMjg3MDc2MzIyMSwzNjI0MzgxMDgwLDMxMDU5ODQwMSw2MDcyMjUyNzgsMTQyNjg4MTk4NywxOTI1MDc4Mzg4LDIxNjIwNzgyMDYsMjYxNDg4ODEwMywzMjQ4MjIyNTgwLDM4MzUzOTA0MDEsNDAyMjIyNDc3NCwyNjQzNDcwNzgsNjA0ODA3NjI4LDc3MDI1NTk4MywxMjQ5MTUwMTIyLDE1NTUwODE2OTIsMTk5NjA2NDk4NiwyNTU0MjIwODgyLDI4MjE4MzQzNDksMjk1Mjk5NjgwOCwzMjEwMzEzNjcxLDMzMzY1NzE4OTEsMzU4NDUyODcxMSwxMTM5MjY5OTMsMzM4MjQxODk1LDY2NjMwNzIwNSw3NzM1Mjk5MTIsMTI5NDc1NzM3MiwxMzk2MTgyMjkxLDE2OTUxODM3MDAsMTk4NjY2MTA1MSwyMTc3MDI2MzUwLDI0NTY5NTYwMzcsMjczMDQ4NTkyMSwyODIwMzAyNDExLDMyNTk3MzA4MDAsMzM0NTc2NDc3MSwzNTE2MDY1ODE3LDM2MDAzNTI4MDQsNDA5NDU3MTkwOSwyNzU0MjMzNDQsNDMwMjI3NzM0LDUwNjk0ODYxNiw2NTkwNjA1NTYsODgzOTk3ODc3LDk1ODEzOTU3MSwxMzIyODIyMjE4LDE1MzcwMDIwNjMsMTc0Nzg3Mzc3OSwxOTU1NTYyMjIyLDIwMjQxMDQ4MTUsMjIyNzczMDQ1MiwyMzYxODUyNDI0LDI0Mjg0MzY0NzQsMjc1NjczNDE4NywzMjA0MDMxNDc5LDMzMjkzMjUyOThdKTtmdW5jdGlvbiByKGUscixuLG8saSl7Zm9yKHZhciBhLHMsdSxjLGYsaCxsLHAsZCx2LGcseSxtO2k+PTY0Oyl7Zm9yKGE9clswXSxzPXJbMV0sdT1yWzJdLGM9clszXSxmPXJbNF0saD1yWzVdLGw9cls2XSxwPXJbN10sdj0wO3Y8MTY7disrKWc9bys0KnYsZVt2XT0oMjU1Jm5bZ10pPDwyNHwoMjU1Jm5bZysxXSk8PDE2fCgyNTUmbltnKzJdKTw8OHwyNTUmbltnKzNdO2Zvcih2PTE2O3Y8NjQ7disrKXk9KChkPWVbdi0yXSk+Pj4xN3xkPDwxNSleKGQ+Pj4xOXxkPDwxMyleZD4+PjEwLG09KChkPWVbdi0xNV0pPj4+N3xkPDwyNSleKGQ+Pj4xOHxkPDwxNCleZD4+PjMsZVt2XT0oeStlW3YtN118MCkrKG0rZVt2LTE2XXwwKTtmb3Iodj0wO3Y8NjQ7disrKXk9KCgoZj4+PjZ8Zjw8MjYpXihmPj4+MTF8Zjw8MjEpXihmPj4+MjV8Zjw8NykpKyhmJmhefmYmbCl8MCkrKHArKHRbdl0rZVt2XXwwKXwwKXwwLG09KChhPj4+MnxhPDwzMCleKGE+Pj4xM3xhPDwxOSleKGE+Pj4yMnxhPDwxMCkpKyhhJnNeYSZ1XnMmdSl8MCxwPWwsbD1oLGg9ZixmPWMreXwwLGM9dSx1PXMscz1hLGE9eSttfDA7clswXSs9YSxyWzFdKz1zLHJbMl0rPXUsclszXSs9YyxyWzRdKz1mLHJbNV0rPWgscls2XSs9bCxyWzddKz1wLG8rPTY0LGktPTY0fXJldHVybiBvfXZhciBuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuZGlnZXN0TGVuZ3RoPWUuZGlnZXN0TGVuZ3RoLHRoaXMuYmxvY2tTaXplPWUuYmxvY2tTaXplLHRoaXMuc3RhdGU9bmV3IEludDMyQXJyYXkoOCksdGhpcy50ZW1wPW5ldyBJbnQzMkFycmF5KDY0KSx0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgxMjgpLHRoaXMuYnVmZmVyTGVuZ3RoPTAsdGhpcy5ieXRlc0hhc2hlZD0wLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5yZXNldCgpfXJldHVybiB0LnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXRlWzBdPTE3NzkwMzM3MDMsdGhpcy5zdGF0ZVsxXT0zMTQ0MTM0Mjc3LHRoaXMuc3RhdGVbMl09MTAxMzkwNDI0Mix0aGlzLnN0YXRlWzNdPTI3NzM0ODA3NjIsdGhpcy5zdGF0ZVs0XT0xMzU5ODkzMTE5LHRoaXMuc3RhdGVbNV09MjYwMDgyMjkyNCx0aGlzLnN0YXRlWzZdPTUyODczNDYzNSx0aGlzLnN0YXRlWzddPTE1NDE0NTkyMjUsdGhpcy5idWZmZXJMZW5ndGg9MCx0aGlzLmJ5dGVzSGFzaGVkPTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzfSx0LnByb3RvdHlwZS5jbGVhbj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5idWZmZXIubGVuZ3RoO2UrKyl0aGlzLmJ1ZmZlcltlXT0wO2ZvcihlPTA7ZTx0aGlzLnRlbXAubGVuZ3RoO2UrKyl0aGlzLnRlbXBbZV09MDt0aGlzLnJlc2V0KCl9LHQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMD09PXQmJih0PWUubGVuZ3RoKSx0aGlzLmZpbmlzaGVkKXRocm93IG5ldyBFcnJvcigiU0hBMjU2OiBjYW4ndCB1cGRhdGUgYmVjYXVzZSBoYXNoIHdhcyBmaW5pc2hlZC4iKTt2YXIgbj0wO2lmKHRoaXMuYnl0ZXNIYXNoZWQrPXQsdGhpcy5idWZmZXJMZW5ndGg+MCl7Zm9yKDt0aGlzLmJ1ZmZlckxlbmd0aDw2NCYmdD4wOyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lW24rK10sdC0tOzY0PT09dGhpcy5idWZmZXJMZW5ndGgmJihyKHRoaXMudGVtcCx0aGlzLnN0YXRlLHRoaXMuYnVmZmVyLDAsNjQpLHRoaXMuYnVmZmVyTGVuZ3RoPTApfWZvcih0Pj02NCYmKG49cih0aGlzLnRlbXAsdGhpcy5zdGF0ZSxlLG4sdCksdCU9NjQpO3Q+MDspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZVtuKytdLHQtLTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmZpbmlzaGVkKXt2YXIgdD10aGlzLmJ5dGVzSGFzaGVkLG49dGhpcy5idWZmZXJMZW5ndGgsbz10LzUzNjg3MDkxMnwwLGk9dDw8MyxhPXQlNjQ8NTY/NjQ6MTI4O3RoaXMuYnVmZmVyW25dPTEyODtmb3IodmFyIHM9bisxO3M8YS04O3MrKyl0aGlzLmJ1ZmZlcltzXT0wO3RoaXMuYnVmZmVyW2EtOF09bz4+PjI0JjI1NSx0aGlzLmJ1ZmZlclthLTddPW8+Pj4xNiYyNTUsdGhpcy5idWZmZXJbYS02XT1vPj4+OCYyNTUsdGhpcy5idWZmZXJbYS01XT1vPj4+MCYyNTUsdGhpcy5idWZmZXJbYS00XT1pPj4+MjQmMjU1LHRoaXMuYnVmZmVyW2EtM109aT4+PjE2JjI1NSx0aGlzLmJ1ZmZlclthLTJdPWk+Pj44JjI1NSx0aGlzLmJ1ZmZlclthLTFdPWk+Pj4wJjI1NSxyKHRoaXMudGVtcCx0aGlzLnN0YXRlLHRoaXMuYnVmZmVyLDAsYSksdGhpcy5maW5pc2hlZD0hMH1mb3Iocz0wO3M8ODtzKyspZVs0KnMrMF09dGhpcy5zdGF0ZVtzXT4+PjI0JjI1NSxlWzQqcysxXT10aGlzLnN0YXRlW3NdPj4+MTYmMjU1LGVbNCpzKzJdPXRoaXMuc3RhdGVbc10+Pj44JjI1NSxlWzQqcyszXT10aGlzLnN0YXRlW3NdPj4+MCYyNTU7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OEFycmF5KHRoaXMuZGlnZXN0TGVuZ3RoKTtyZXR1cm4gdGhpcy5maW5pc2goZSksZX0sdC5wcm90b3R5cGUuX3NhdmVTdGF0ZT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MDt0PHRoaXMuc3RhdGUubGVuZ3RoO3QrKyllW3RdPXRoaXMuc3RhdGVbdF19LHQucHJvdG90eXBlLl9yZXN0b3JlU3RhdGU9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9MDtyPHRoaXMuc3RhdGUubGVuZ3RoO3IrKyl0aGlzLnN0YXRlW3JdPWVbcl07dGhpcy5ieXRlc0hhc2hlZD10LHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5idWZmZXJMZW5ndGg9MH0sdH0oKTtlLkhhc2g9bjt2YXIgbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dGhpcy5pbm5lcj1uZXcgbix0aGlzLm91dGVyPW5ldyBuLHRoaXMuYmxvY2tTaXplPXRoaXMuaW5uZXIuYmxvY2tTaXplLHRoaXMuZGlnZXN0TGVuZ3RoPXRoaXMuaW5uZXIuZGlnZXN0TGVuZ3RoO3ZhciB0PW5ldyBVaW50OEFycmF5KHRoaXMuYmxvY2tTaXplKTtpZihlLmxlbmd0aD50aGlzLmJsb2NrU2l6ZSkobmV3IG4pLnVwZGF0ZShlKS5maW5pc2godCkuY2xlYW4oKTtlbHNlIGZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXRbcl09ZVtyXTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXRbcl1ePTU0O2Zvcih0aGlzLmlubmVyLnVwZGF0ZSh0KSxyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXV49MTA2O2Zvcih0aGlzLm91dGVyLnVwZGF0ZSh0KSx0aGlzLmlzdGF0ZT1uZXcgVWludDMyQXJyYXkoOCksdGhpcy5vc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMuaW5uZXIuX3NhdmVTdGF0ZSh0aGlzLmlzdGF0ZSksdGhpcy5vdXRlci5fc2F2ZVN0YXRlKHRoaXMub3N0YXRlKSxyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXT0wfXJldHVybiBlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlubmVyLl9yZXN0b3JlU3RhdGUodGhpcy5pc3RhdGUsdGhpcy5pbm5lci5ibG9ja1NpemUpLHRoaXMub3V0ZXIuX3Jlc3RvcmVTdGF0ZSh0aGlzLm9zdGF0ZSx0aGlzLm91dGVyLmJsb2NrU2l6ZSksdGhpc30sZS5wcm90b3R5cGUuY2xlYW49ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHRoaXMuaXN0YXRlLmxlbmd0aDtlKyspdGhpcy5vc3RhdGVbZV09dGhpcy5pc3RhdGVbZV09MDt0aGlzLmlubmVyLmNsZWFuKCksdGhpcy5vdXRlci5jbGVhbigpfSxlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaW5uZXIudXBkYXRlKGUpLHRoaXN9LGUucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vdXRlci5maW5pc2hlZD90aGlzLm91dGVyLmZpbmlzaChlKToodGhpcy5pbm5lci5maW5pc2goZSksdGhpcy5vdXRlci51cGRhdGUoZSx0aGlzLmRpZ2VzdExlbmd0aCkuZmluaXNoKGUpKSx0aGlzfSxlLnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLmRpZ2VzdExlbmd0aCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpLGV9LGV9KCk7ZnVuY3Rpb24gaShlKXt2YXIgdD0obmV3IG4pLnVwZGF0ZShlKSxyPXQuZGlnZXN0KCk7cmV0dXJuIHQuY2xlYW4oKSxyfWZ1bmN0aW9uIGEoZSx0KXt2YXIgcj1uZXcgbyhlKS51cGRhdGUodCksbj1yLmRpZ2VzdCgpO3JldHVybiByLmNsZWFuKCksbn1mdW5jdGlvbiBzKGUsdCxyLG4pe3ZhciBvPW5bMF07aWYoMD09PW8pdGhyb3cgbmV3IEVycm9yKCJoa2RmOiBjYW5ub3QgZXhwYW5kIG1vcmUiKTt0LnJlc2V0KCksbz4xJiZ0LnVwZGF0ZShlKSxyJiZ0LnVwZGF0ZShyKSx0LnVwZGF0ZShuKSx0LmZpbmlzaChlKSxuWzBdKyt9ZS5ITUFDPW8sZS5oYXNoPWksZS5kZWZhdWx0PWksZS5obWFjPWE7dmFyIHU9bmV3IFVpbnQ4QXJyYXkoZS5kaWdlc3RMZW5ndGgpO2UuaGtkZj1mdW5jdGlvbihlLHQscixuKXt2b2lkIDA9PT10JiYodD11KSx2b2lkIDA9PT1uJiYobj0zMik7Zm9yKHZhciBpPW5ldyBVaW50OEFycmF5KFsxXSksYz1hKHQsZSksZj1uZXcgbyhjKSxoPW5ldyBVaW50OEFycmF5KGYuZGlnZXN0TGVuZ3RoKSxsPWgubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkobiksZD0wO2Q8bjtkKyspbD09PWgubGVuZ3RoJiYocyhoLGYscixpKSxsPTApLHBbZF09aFtsKytdO3JldHVybiBmLmNsZWFuKCksaC5maWxsKDApLGkuZmlsbCgwKSxwfSxlLnBia2RmMj1mdW5jdGlvbihlLHQscixuKXtmb3IodmFyIGk9bmV3IG8oZSksYT1pLmRpZ2VzdExlbmd0aCxzPW5ldyBVaW50OEFycmF5KDQpLHU9bmV3IFVpbnQ4QXJyYXkoYSksYz1uZXcgVWludDhBcnJheShhKSxmPW5ldyBVaW50OEFycmF5KG4pLGg9MDtoKmE8bjtoKyspe3ZhciBsPWgrMTtzWzBdPWw+Pj4yNCYyNTUsc1sxXT1sPj4+MTYmMjU1LHNbMl09bD4+PjgmMjU1LHNbM109bD4+PjAmMjU1LGkucmVzZXQoKSxpLnVwZGF0ZSh0KSxpLnVwZGF0ZShzKSxpLmZpbmlzaChjKTtmb3IodmFyIHA9MDtwPGE7cCsrKXVbcF09Y1twXTtmb3IocD0yO3A8PXI7cCsrKXtpLnJlc2V0KCksaS51cGRhdGUoYykuZmluaXNoKGMpO2Zvcih2YXIgZD0wO2Q8YTtkKyspdVtkXV49Y1tkXX1mb3IocD0wO3A8YSYmaCphK3A8bjtwKyspZltoKmErcF09dVtwXX1mb3IoaD0wO2g8YTtoKyspdVtoXT1jW2hdPTA7Zm9yKGg9MDtoPDQ7aCsrKXNbaF09MDtyZXR1cm4gaS5jbGVhbigpLGZ9fShuKTt2YXIgbz1uLmRlZmF1bHQ7Zm9yKHZhciBpIGluIG4pb1tpXT1uW2ldO2UuZXhwb3J0cz1vfSgpfSkpKTtmdW5jdGlvbiB4bigpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIF9uKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX12YXIgU249eG4sRW49X247ZnVuY3Rpb24gQW4oZSl7aWYoU249PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKFNuPT09eG58fCFTbikmJnNldFRpbWVvdXQpcmV0dXJuIFNuPXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gU24oZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIFNuLmNhbGwobnVsbCxlLDApfWNhdGNoKHQpe3JldHVybiBTbi5jYWxsKHRoaXMsZSwwKX19fSJmdW5jdGlvbiI9PXR5cGVvZiB2ci5zZXRUaW1lb3V0JiYoU249c2V0VGltZW91dCksImZ1bmN0aW9uIj09dHlwZW9mIHZyLmNsZWFyVGltZW91dCYmKEVuPWNsZWFyVGltZW91dCk7dmFyIFRuLFJuPVtdLENuPSExLFBuPS0xO2Z1bmN0aW9uIE9uKCl7Q24mJlRuJiYoQ249ITEsVG4ubGVuZ3RoP1JuPVRuLmNvbmNhdChSbik6UG49LTEsUm4ubGVuZ3RoJiZEbigpKX1mdW5jdGlvbiBEbigpe2lmKCFDbil7dmFyIGU9QW4oT24pO0NuPSEwO2Zvcih2YXIgdD1Sbi5sZW5ndGg7dDspe2ZvcihUbj1SbixSbj1bXTsrK1BuPHQ7KVRuJiZUbltQbl0ucnVuKCk7UG49LTEsdD1Sbi5sZW5ndGh9VG49bnVsbCxDbj0hMSxmdW5jdGlvbihlKXtpZihFbj09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChFbj09PV9ufHwhRW4pJiZjbGVhclRpbWVvdXQpcmV0dXJuIEVuPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e0VuKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gRW4uY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiBFbi5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIEluKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9SW4ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9O3ZhciBVbj12ci5wZXJmb3JtYW5jZXx8e30sTW49KFVuLm5vd3x8VW4ubW96Tm93fHxVbi5tc05vd3x8VW4ub05vd3x8VW4ud2Via2l0Tm93LG5ldyBEYXRlLGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0xXT1hcmd1bWVudHNbcl07Um4ucHVzaChuZXcgSW4oZSx0KSksMSE9PVJuLmxlbmd0aHx8Q258fEFuKERuKX0pLExuPWZ1bmN0aW9uKGUpe2lmKGUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUscik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixuLmdldD9uOntlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlW3JdfX0pfSkpLHR9KHZuKSxqbj1kcigoZnVuY3Rpb24oZSx0KXt2YXIgcj1Mbi5CdWZmZXI7ZnVuY3Rpb24gbihlLHQpe2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXX1mdW5jdGlvbiBvKGUsdCxuKXtyZXR1cm4gcihlLHQsbil9ci5mcm9tJiZyLmFsbG9jJiZyLmFsbG9jVW5zYWZlJiZyLmFsbG9jVW5zYWZlU2xvdz9lLmV4cG9ydHM9TG46KG4oTG4sdCksdC5CdWZmZXI9byksbihyLG8pLG8uZnJvbT1mdW5jdGlvbihlLHQsbil7aWYoIm51bWJlciI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIHIoZSx0LG4pfSxvLmFsbG9jPWZ1bmN0aW9uKGUsdCxuKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBvPXIoZSk7cmV0dXJuIHZvaWQgMCE9PXQ/InN0cmluZyI9PXR5cGVvZiBuP28uZmlsbCh0LG4pOm8uZmlsbCh0KTpvLmZpbGwoMCksb30sby5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiByKGUpfSxvLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBMbi5TbG93QnVmZmVyKGUpfX0pKSxIbj1kcigoZnVuY3Rpb24oZSl7dmFyIHQ9NjU1MzYscj1qbi5CdWZmZXIsbj1wci5jcnlwdG98fHByLm1zQ3J5cHRvO24mJm4uZ2V0UmFuZG9tVmFsdWVzP2UuZXhwb3J0cz1mdW5jdGlvbihlLG8pe2lmKGU+NDI5NDk2NzI5NSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciBpPXIuYWxsb2NVbnNhZmUoZSk7aWYoZT4wKWlmKGU+dClmb3IodmFyIGE9MDthPGU7YSs9dCluLmdldFJhbmRvbVZhbHVlcyhpLnNsaWNlKGEsYSt0KSk7ZWxzZSBuLmdldFJhbmRvbVZhbHVlcyhpKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbz9NbigoZnVuY3Rpb24oKXtvKG51bGwsaSl9KSk6aX06ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfX0pKSxCbj1uZXcgVGV4dEVuY29kZXIscW49bmV3IFRleHREZWNvZGVyLE5uPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZilyZXR1cm4gc2VsZjtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93O3Rocm93IG5ldyBFcnJvcigidW5hYmxlIHRvIGxvY2F0ZSBnbG9iYWwgb2JqZWN0Iil9KCksRm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtyZXR1cm4gdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkmJih0PXFuLmRlY29kZSh0KSksdD10LnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpLnJlcGxhY2UoL1xzL2csIiIpLG5ldyBVaW50OEFycmF5KE5uLmF0b2IodCkuc3BsaXQoIiIpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckNvZGVBdCgwKX0pKSl9LEtuPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBfKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZSkpLmNvZGU9IkVSUl9KT1NFX0dFTkVSSUMiLG4ubmFtZT1uLmNvbnN0cnVjdG9yLm5hbWUsRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UmJkVycm9yLmNhcHR1cmVTdGFja1RyYWNlKEUobiksbi5jb25zdHJ1Y3Rvciksbn1yZXR1cm4gcn0oTChFcnJvcikpLFluPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKGUpe3ZhciBuLG89YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ1bnNwZWNpZmllZCIsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06InVuc3BlY2lmaWVkIjtyZXR1cm4gXyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIixuLmNsYWltPW8sbi5yZWFzb249aSxufXJldHVybiByfShLbiksV249ZnVuY3Rpb24oZSl7VChyLGUpO3ZhciB0PWFyKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gXyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSk9TRV9BTEdfTk9UX0FMTE9XRUQiLGV9cmV0dXJuIHJ9KEtuKSx6bj1mdW5jdGlvbihlKXtUKHIsZSk7dmFyIHQ9YXIocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBfKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KT1NFX05PVF9TVVBQT1JURUQiLGV9cmV0dXJuIHJ9KEtuKSxKbj1mdW5jdGlvbihlKXtUKHIsZSk7dmFyIHQ9YXIocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBfKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV1NfSU5WQUxJRCIsZX1yZXR1cm4gcn0oS24pLEduPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIF8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXVF9JTlZBTElEIixlfXJldHVybiByfShLbiksVm49ZnVuY3Rpb24oZSl7VChyLGUpO3ZhciB0PWFyKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gXyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEIixlLm1lc3NhZ2U9InNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIixlfXJldHVybiByfShLbiksJG49ZnVuY3Rpb24oZSl7VChyLGUpO3ZhciB0PWFyKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gXyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldUX0VYUElSRUQiLGV9cmV0dXJuIHJ9KFluKSxYbj1Obi5jcnlwdG87ZnVuY3Rpb24gWm4oKXtpZighTm4uaXNTZWN1cmVDb250ZXh0JiYhTm4uY3J5cHRvLnN1YnRsZSl0aHJvdyBuZXcgS24oIldlYiBDcnlwdG9ncmFwaHkgQVBJIGlzIGF2YWlsYWJsZSBvbmx5IGluIFNlY3VyZSBDb250ZXh0cy4gU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TZWN1cml0eS9TZWN1cmVfQ29udGV4dHMiKX12YXIgUW49ZnVuY3Rpb24oKXt2YXIgZT14KGkubWFyaygoZnVuY3Rpb24gZSh0KXt2YXIgcixuLG8sYSxzLHUsYztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gbz1mdW5jdGlvbihlKXt2YXIgdCxyO3N3aXRjaChlLmt0eSl7Y2FzZSJvY3QiOnN3aXRjaChlLmFsZyl7Y2FzZSJIUzI1NiI6Y2FzZSJIUzM4NCI6Y2FzZSJIUzUxMiI6dD17bmFtZToiSE1BQyIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnN1YnN0cigtMykpfSxyPVsic2lnbiIsInZlcmlmeSJdO2JyZWFrO2Nhc2UiQTEyOENCQy1IUzI1NiI6Y2FzZSJBMTkyQ0JDLUhTMzg0IjpjYXNlIkEyNTZDQkMtSFM1MTIiOnRocm93IG5ldyB6bigiIi5jb25jYXQoZS5hbGcsIiBrZXlzIGNhbm5vdCBiZSBpbXBvcnRlZCBhcyBDcnlwdG9LZXkgaW5zdGFuY2VzIikpO2Nhc2UiQTEyOEdDTSI6Y2FzZSJBMTkyR0NNIjpjYXNlIkEyNTZHQ00iOmNhc2UiQTEyOEdDTUtXIjpjYXNlIkExOTJHQ01LVyI6Y2FzZSJBMjU2R0NNS1ciOnQ9e25hbWU6IkFFUy1HQ00ifSxyPVsiZW5jcnlwdCIsImRlY3J5cHQiXTticmVhaztjYXNlIkExMjhLVyI6Y2FzZSJBMTkyS1ciOmNhc2UiQTI1NktXIjp0PXtuYW1lOiJBRVMtS1cifSxyPVsid3JhcEtleSIsInVud3JhcEtleSJdO2JyZWFrO2Nhc2UiUEJFUzItSFMyNTYrQTEyOEtXIjpjYXNlIlBCRVMyLUhTMzg0K0ExOTJLVyI6Y2FzZSJQQkVTMi1IUzUxMitBMjU2S1ciOnQ9e25hbWU6IlBCS0RGMiJ9LHI9WyJkZXJpdmVCaXRzIl07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgem4oJ3Vuc3VwcG9ydGVkIG9yIGludmFsaWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UiUlNBIjpzd2l0Y2goZS5hbGcpe2Nhc2UiUFMyNTYiOmNhc2UiUFMzODQiOmNhc2UiUFM1MTIiOnQ9e25hbWU6IlJTQS1QU1MiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zdWJzdHIoLTMpKX0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjp0PXtuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnN1YnN0cigtMykpfSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiUlNBLU9BRVAiOmNhc2UiUlNBLU9BRVAtMjU2IjpjYXNlIlJTQS1PQUVQLTM4NCI6Y2FzZSJSU0EtT0FFUC01MTIiOnQ9e25hbWU6IlJTQS1PQUVQIixoYXNoOiJTSEEtIi5jb25jYXQocGFyc2VJbnQoZS5hbGcuc3Vic3RyKC0zKSwxMCl8fDEpfSxyPWUuZD9bImRlY3J5cHQiLCJ1bndyYXBLZXkiXTpbImVuY3J5cHQiLCJ3cmFwS2V5Il07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgem4oJ3Vuc3VwcG9ydGVkIG9yIGludmFsaWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UiRUMiOnN3aXRjaChlLmFsZyl7Y2FzZSJFUzI1NiI6Y2FzZSJFUzM4NCI6Y2FzZSJFUzUxMiI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6ZS5jcnZ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFQ0RILUVTIjpjYXNlIkVDREgtRVMrQTEyOEtXIjpjYXNlIkVDREgtRVMrQTE5MktXIjpjYXNlIkVDREgtRVMrQTI1NktXIjp0PXtuYW1lOiJFQ0RIIixuYW1lZEN1cnZlOmUuY3J2fSxyPWUuZD9bImRlcml2ZUJpdHMiXTpbXTticmVhaztkZWZhdWx0OnRocm93IG5ldyB6bigndW5zdXBwb3J0ZWQgb3IgaW52YWxpZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgem4oJ3Vuc3VwcG9ydGVkIG9yIGludmFsaWQgSldLICJrdHkiIChLZXkgVHlwZSkgUGFyYW1ldGVyIHZhbHVlJyl9cmV0dXJue2FsZ29yaXRobTp0LGtleVVzYWdlczpyfX0odCksYT1vLmFsZ29yaXRobSxzPW8ua2V5VXNhZ2VzLHU9Imp3ayIsYz1pcih7fSx0KSxlLmFicnVwdCgicmV0dXJuIiwoZGVsZXRlIGMuYWxnLCJQQktERjIiPT09YS5uYW1lJiYodT0icmF3IixjPUZuKHQuaykpLFpuKCksWG4uc3VidGxlLmltcG9ydEtleSh1LGMsYSxudWxsIT09KHI9dC5leHQpJiZ2b2lkIDAhPT1yJiZyLG51bGwhPT0obj10LmtleV9vcHMpJiZ2b2lkIDAhPT1uP246cykpKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCk7ZnVuY3Rpb24gZW8oZSl7cmV0dXJuISFlJiZlLmNvbnN0cnVjdG9yPT09T2JqZWN0fWZ1bmN0aW9uIHRvKGUsdCxyKXtyZXR1cm4gcm8uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHJvKCl7cmV0dXJuIHJvPXgoaS5tYXJrKChmdW5jdGlvbiBlKHQscixuKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihlbyh0KSl7ZS5uZXh0PTI7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcigiSldLIG11c3QgYmUgYW4gb2JqZWN0Iik7Y2FzZSAyOmlmKHJ8fChyPXQuYWxnKSwic3RyaW5nIj09dHlwZW9mIHImJnIpe2UubmV4dD00O2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoJyJhbGciIGFyZ3VtZW50IGlzIHJlcXVpcmVkIHdoZW4gImp3ay5hbGciIGlzIG5vdCBwcmVzZW50Jyk7Y2FzZSA0OmUudDA9dC5rdHksZS5uZXh0PSJvY3QiPT09ZS50MD83OiJSU0EiPT09ZS50MD8xMDoiRUMiPT09ZS50MHx8Ik9LUCI9PT1lLnQwPzEyOjEzO2JyZWFrO2Nhc2UgNzppZigic3RyaW5nIj09dHlwZW9mIHQuayYmdC5rKXtlLm5leHQ9OTticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCdtaXNzaW5nICJrIiAoS2V5IFZhbHVlKSBQYXJhbWV0ZXIgdmFsdWUnKTtjYXNlIDk6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChudWxsIT1ufHwobj0hMCE9PXQuZXh0KSxuP1FuKGlyKGlyKHt9LHQpLHt9LHthbGc6cixleHQ6ITF9KSk6Rm4odC5rKSkpO2Nhc2UgMTA6aWYodm9pZCAwPT09dC5vdGgpe2UubmV4dD0xMjticmVha310aHJvdyBuZXcgem4oJ1JTQSBKV0sgIm90aCIgKE90aGVyIFByaW1lcyBJbmZvKSBQYXJhbWV0ZXIgdmFsdWUgaXMgdW5zdXBwb3J0ZWQnKTtjYXNlIDEyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixRbihpcihpcih7fSx0KSx7fSx7YWxnOnJ9KSkpO2Nhc2UgMTM6dGhyb3cgbmV3IHpuKCd1bnN1cHBvcnRlZCAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkscm8uYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBubz1mdW5jdGlvbigpe3ZhciBlPXgoaS5tYXJrKChmdW5jdGlvbiBlKHQscixuLG8pe3ZhciBhO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKFpuKCksIShyIGluc3RhbmNlb2YgVWludDhBcnJheSkpe2UubmV4dD04O2JyZWFrfWlmKHQuc3RhcnRzV2l0aCgiSFMiKSl7ZS5uZXh0PTM7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcigic3ltbWV0cmljIGtleXMgYXJlIG9ubHkgYXBwbGljYWJsZSBmb3IgSE1BQy1iYXNlZCBhbGdvcml0aG1zIik7Y2FzZSAzOnJldHVybiBlLm5leHQ9NSxYbi5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLHIse2hhc2g6IlNIQS0iLmNvbmNhdCh0LnN1YnN0cigtMykpLG5hbWU6IkhNQUMifSwhMSxbInZlcmlmeSJdKTtjYXNlIDU6YT1lLnNlbnQsZS5uZXh0PTk7YnJlYWs7Y2FzZSA4OmE9cjtjYXNlIDk6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChmdW5jdGlvbihlLHQpe2lmKGUuc3RhcnRzV2l0aCgiSFMiKSl7dmFyIHI9cGFyc2VJbnQoZS5zdWJzdHIoLTMpLDEwKSxuPXQuYWxnb3JpdGhtLmxlbmd0aDtpZigibnVtYmVyIiE9dHlwZW9mIG58fG48cil0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChlLCIgcmVxdWlyZXMgc3ltbWV0cmljIGtleXMgdG8gYmUgIikuY29uY2F0KHIsIiBiaXRzIG9yIGxhcmdlciIpKX1pZihlLnN0YXJ0c1dpdGgoIlJTIil8fGUuc3RhcnRzV2l0aCgiUFMiKSl7dmFyIG89dC5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aDtpZigibnVtYmVyIiE9dHlwZW9mIG98fG88MjA0OCl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChlLCIgcmVxdWlyZXMga2V5IG1vZHVsdXNMZW5ndGggdG8gYmUgMjA0OCBiaXRzIG9yIGxhcmdlciIpKX19KHQsYSksWG4uc3VidGxlLnZlcmlmeShmdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZSJIUzI1NiI6cmV0dXJue2hhc2g6IlNIQS0yNTYiLG5hbWU6IkhNQUMifTtjYXNlIkhTMzg0IjpyZXR1cm57aGFzaDoiU0hBLTM4NCIsbmFtZToiSE1BQyJ9O2Nhc2UiSFM1MTIiOnJldHVybntoYXNoOiJTSEEtNTEyIixuYW1lOiJITUFDIn07Y2FzZSJQUzI1NiI6cmV0dXJue2hhc2g6IlNIQS0yNTYiLG5hbWU6IlJTQS1QU1MiLHNhbHRMZW5ndGg6MzJ9O2Nhc2UiUFMzODQiOnJldHVybntoYXNoOiJTSEEtMzg0IixuYW1lOiJSU0EtUFNTIixzYWx0TGVuZ3RoOjQ4fTtjYXNlIlBTNTEyIjpyZXR1cm57aGFzaDoiU0hBLTUxMiIsbmFtZToiUlNBLVBTUyIsc2FsdExlbmd0aDo2NH07Y2FzZSJSUzI1NiI6cmV0dXJue2hhc2g6IlNIQS0yNTYiLG5hbWU6IlJTQVNTQS1QS0NTMS12MV81In07Y2FzZSJSUzM4NCI6cmV0dXJue2hhc2g6IlNIQS0zODQiLG5hbWU6IlJTQVNTQS1QS0NTMS12MV81In07Y2FzZSJSUzUxMiI6cmV0dXJue2hhc2g6IlNIQS01MTIiLG5hbWU6IlJTQVNTQS1QS0NTMS12MV81In07Y2FzZSJFUzI1NiI6cmV0dXJue2hhc2g6IlNIQS0yNTYiLG5hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTI1NiJ9O2Nhc2UiRVMzODQiOnJldHVybntoYXNoOiJTSEEtMzg0IixuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC0zODQifTtjYXNlIkVTNTEyIjpyZXR1cm57aGFzaDoiU0hBLTUxMiIsbmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtNTIxIn07ZGVmYXVsdDp0aHJvdyBuZXcgem4oImFsZyAiLmNvbmNhdChlLCIgaXMgdW5zdXBwb3J0ZWQgZWl0aGVyIGJ5IEpPU0Ugb3IgeW91ciBqYXZhc2NyaXB0IHJ1bnRpbWUiKSl9fSh0KSxhLG4sbykpKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0LHIsbixvKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLG9vPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHZvaWQgMCE9PW4uY3JpdCYmdm9pZCAwPT09ci5jcml0KXRocm93IG5ldyBlKCciY3JpdCIgKENyaXRpY2FsKSBIZWFkZXIgUGFyYW1ldGVyIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpO2lmKCFyfHx2b2lkIDA9PT1yLmNyaXQpcmV0dXJuIG5ldyBTZXQ7aWYoIUFycmF5LmlzQXJyYXkoci5jcml0KXx8MD09PXIuY3JpdC5sZW5ndGh8fHIuY3JpdC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aH0pKSl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGFuIGFycmF5IG9mIG5vbi1lbXB0eSBzdHJpbmdzIHdoZW4gcHJlc2VudCcpO3ZhciBvLGk9cnIoci5jcml0KTt0cnl7Zm9yKGkucygpOyEobz1pLm4oKSkuZG9uZTspe3ZhciBhPW8udmFsdWU7aWYoIXQuaGFzKGEpKXRocm93IG5ldyB6bignRXh0ZW5zaW9uIEhlYWRlciBQYXJhbWV0ZXIgIicuY29uY2F0KGEsJyIgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uJykpO2lmKHZvaWQgMD09PW5bYV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdChhLCciIGlzIG1pc3NpbmcnKSk7aWYodC5nZXQoYSkmJnZvaWQgMD09PXJbYV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdChhLCciIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpKX19Y2F0Y2goZSl7aS5lKGUpfWZpbmFsbHl7aS5mKCl9cmV0dXJuIG5ldyBTZXQoci5jcml0KX0uYmluZCh2b2lkIDAsSm4sbmV3IE1hcChbWyJiNjQiLCEwXV0pKSxpbz1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMCE9PXQmJighQXJyYXkuaXNBcnJheSh0KXx8dC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV9KSkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyInLmNvbmNhdChlLCciIG9wdGlvbiBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MnKSk7aWYodClyZXR1cm4gbmV3IFNldCh0KX0uYmluZCh2b2lkIDAsImFsZ29yaXRobXMiKTtmdW5jdGlvbiBhbyhlLHQscil7cmV0dXJuIHNvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBzbygpe3JldHVybiBzbz14KGkubWFyaygoZnVuY3Rpb24gZSh0LHIsbil7dmFyIG8sYSxzLHUsYyxmLGgsbCxwLGQ7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoZW8odCkpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBKbigiRmxhdHRlbmVkIEpXUyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZih2b2lkIDAhPT10LnByb3RlY3RlZHx8dm9pZCAwIT09dC5oZWFkZXIpe2UubmV4dD00O2JyZWFrfXRocm93IG5ldyBKbignRmxhdHRlbmVkIEpXUyBtdXN0IGhhdmUgZWl0aGVyIG9mIHRoZSAicHJvdGVjdGVkIiBvciAiaGVhZGVyIiBtZW1iZXJzJyk7Y2FzZSA0OmlmKHZvaWQgMD09PXQucHJvdGVjdGVkfHwic3RyaW5nIj09dHlwZW9mIHQucHJvdGVjdGVkKXtlLm5leHQ9NjticmVha310aHJvdyBuZXcgSm4oIkpXUyBQcm90ZWN0ZWQgSGVhZGVyIGluY29ycmVjdCB0eXBlIik7Y2FzZSA2OmlmKHZvaWQgMCE9PXQucGF5bG9hZCl7ZS5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEpuKCJKV1MgUGF5bG9hZCBtaXNzaW5nIik7Y2FzZSA4OmlmKCJzdHJpbmciPT10eXBlb2YgdC5zaWduYXR1cmUpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgSm4oIkpXUyBTaWduYXR1cmUgbWlzc2luZyBvciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTA6aWYodm9pZCAwPT09dC5oZWFkZXJ8fGVvKHQuaGVhZGVyKSl7ZS5uZXh0PTEyO2JyZWFrfXRocm93IG5ldyBKbigiSldTIFVucHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTI6aWYobz17fSx0LnByb3RlY3RlZCYmKGE9Rm4odC5wcm90ZWN0ZWQpLG89SlNPTi5wYXJzZShxbi5kZWNvZGUoYSkpKSxmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3ZhciBuLG89dC5maWx0ZXIoQm9vbGVhbik7aWYoMD09PW8ubGVuZ3RofHwxPT09by5sZW5ndGgpcmV0dXJuITA7dmFyIGksYT1ycihvKTt0cnl7Zm9yKGEucygpOyEoaT1hLm4oKSkuZG9uZTspe3ZhciBzPWkudmFsdWUsdT1PYmplY3Qua2V5cyhzKTtpZihuJiYwIT09bi5zaXplKXt2YXIgYyxmPXJyKHUpO3RyeXtmb3IoZi5zKCk7IShjPWYubigpKS5kb25lOyl7dmFyIGg9Yy52YWx1ZTtpZihuLmhhcyhoKSlyZXR1cm4hMTtuLmFkZChoKX19Y2F0Y2goZSl7Zi5lKGUpfWZpbmFsbHl7Zi5mKCl9fWVsc2Ugbj1uZXcgU2V0KHUpfX1jYXRjaChlKXthLmUoZSl9ZmluYWxseXthLmYoKX1yZXR1cm4hMH0obyx0LmhlYWRlcikpe2UubmV4dD0xNjticmVha310aHJvdyBuZXcgSm4oIkpXUyBQcm90ZWN0ZWQgYW5kIEpXUyBVbnByb3RlY3RlZCBIZWFkZXIgUGFyYW1ldGVyIG5hbWVzIG11c3QgYmUgZGlzam9pbnQiKTtjYXNlIDE2OmlmKHM9aXIoaXIoe30sbyksdC5oZWFkZXIpLHU9ITAsIW9vKG8scykuaGFzKCJiNjQiKXx8ImJvb2xlYW4iPT10eXBlb2YodT1vLmI2NCkpe2UubmV4dD0yMDticmVha310aHJvdyBuZXcgSm4oJ1RoZSAiYjY0IiAoYmFzZTY0dXJsLWVuY29kZSBwYXlsb2FkKSBIZWFkZXIgUGFyYW1ldGVyIG11c3QgYmUgYSBib29sZWFuJyk7Y2FzZSAyMDppZigic3RyaW5nIj09dHlwZW9mKGM9cy5hbGcpJiZjKXtlLm5leHQ9MjM7YnJlYWt9dGhyb3cgbmV3IEpuKCdKV1MgImFsZyIgKEFsZ29yaXRobSkgSGVhZGVyIFBhcmFtZXRlciBtaXNzaW5nIG9yIGludmFsaWQnKTtjYXNlIDIzOmlmKCEoZj1uJiZpbyhuLmFsZ29yaXRobXMpKXx8Zi5oYXMoYykpe2UubmV4dD0yNjticmVha310aHJvdyBuZXcgV24oJyJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbm90IGFsbG93ZWQnKTtjYXNlIDI2OmlmKCF1KXtlLm5leHQ9MzE7YnJlYWt9aWYoInN0cmluZyI9PXR5cGVvZiB0LnBheWxvYWQpe2UubmV4dD0yOTticmVha310aHJvdyBuZXcgSm4oIkpXUyBQYXlsb2FkIG11c3QgYmUgYSBzdHJpbmciKTtjYXNlIDI5OmUubmV4dD0zMzticmVhaztjYXNlIDMxOmlmKCJzdHJpbmciPT10eXBlb2YgdC5wYXlsb2FkfHx0LnBheWxvYWQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtlLm5leHQ9MzM7YnJlYWt9dGhyb3cgbmV3IEpuKCJKV1MgUGF5bG9hZCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIFVpbnQ4QXJyYXkgaW5zdGFuY2UiKTtjYXNlIDMzOmlmKGUudDA9ImZ1bmN0aW9uIj09dHlwZW9mIHIsIWUudDApe2UubmV4dD0zODticmVha31yZXR1cm4gZS5uZXh0PTM3LHIobyx0KTtjYXNlIDM3OnI9ZS5zZW50O2Nhc2UgMzg6cmV0dXJuIGZ1bmN0aW9uKGUsdCl7aWYoZS5zdGFydHNXaXRoKCJIUyIpfHwiZGlyIj09PWV8fGUuc3RhcnRzV2l0aCgiUEJFUzIiKXx8ZS5tYXRjaCgvXkFcZHszfSg/OkdDTSlLVyQvKSl7aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fCJzZWNyZXQiPT09dC50eXBlKXJldHVybjt0aHJvdyBuZXcgVHlwZUVycm9yKCdDcnlwdG9LZXkgb3IgS2V5T2JqZWN0IGluc3RhbmNlcyBmb3Igc3ltbWV0cmljIGFsZ29yaXRobXMgbXVzdCBiZSBvZiB0eXBlICJzZWNyZXQiJyl9aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ3J5cHRvS2V5IG9yIEtleU9iamVjdCBpbnN0YW5jZXMgbXVzdCBiZSB1c2VkIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobXMiKTtpZigic2VjcmV0Ij09PXQudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCdDcnlwdG9LZXkgb3IgS2V5T2JqZWN0IGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG1zIG11c3Qgbm90IGJlIG9mIHR5cGUgInNlY3JldCInKX0oYyxyKSxoPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07dmFyIG49dC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdC5sZW5ndGh9KSwwKSxvPW5ldyBVaW50OEFycmF5KG4pLGk9MDtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbihlKXtvLnNldChlLGkpLGkrPWUubGVuZ3RofSkpLG99KEJuLmVuY29kZSh0LnByb3RlY3RlZHx8IiIpLEJuLmVuY29kZSgiLiIpLCJzdHJpbmciPT10eXBlb2YgdC5wYXlsb2FkP0JuLmVuY29kZSh0LnBheWxvYWQpOnQucGF5bG9hZCksbD1Gbih0LnNpZ25hdHVyZSksZS5uZXh0PTQyLG5vKGMscixsLGgpO2Nhc2UgNDI6aWYoZS5zZW50KXtlLm5leHQ9NDQ7YnJlYWt9dGhyb3cgbmV3IFZuO2Nhc2UgNDQ6cmV0dXJuIHA9dT9Gbih0LnBheWxvYWQpOiJzdHJpbmciPT10eXBlb2YgdC5wYXlsb2FkP0JuLmVuY29kZSh0LnBheWxvYWQpOnQucGF5bG9hZCxkPXtwYXlsb2FkOnB9LGUuYWJydXB0KCJyZXR1cm4iLCh2b2lkIDAhPT10LnByb3RlY3RlZCYmKGQucHJvdGVjdGVkSGVhZGVyPW8pLHZvaWQgMCE9PXQuaGVhZGVyJiYoZC51bnByb3RlY3RlZEhlYWRlcj10LmhlYWRlciksZCkpO2Nhc2UgNDc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSksc28uYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciB1bz0vXihcZCt8XGQrXC5cZCspID8oc2Vjb25kcz98c2Vjcz98c3xtaW51dGVzP3xtaW5zP3xtfGhvdXJzP3xocnM/fGh8ZGF5cz98ZHx3ZWVrcz98d3x5ZWFycz98eXJzP3x5KSQvaSxjbz1mdW5jdGlvbihlKXt2YXIgdD11by5leGVjKGUpO2lmKCF0KXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgdGltZSBwZXJpb2QgZm9ybWF0Iik7dmFyIHI9cGFyc2VGbG9hdCh0WzFdKTtzd2l0Y2godFsyXS50b0xvd2VyQ2FzZSgpKXtjYXNlInNlYyI6Y2FzZSJzZWNzIjpjYXNlInNlY29uZCI6Y2FzZSJzZWNvbmRzIjpjYXNlInMiOnJldHVybiBNYXRoLnJvdW5kKHIpO2Nhc2UibWludXRlIjpjYXNlIm1pbnV0ZXMiOmNhc2UibWluIjpjYXNlIm1pbnMiOmNhc2UibSI6cmV0dXJuIE1hdGgucm91bmQoNjAqcik7Y2FzZSJob3VyIjpjYXNlImhvdXJzIjpjYXNlImhyIjpjYXNlImhycyI6Y2FzZSJoIjpyZXR1cm4gTWF0aC5yb3VuZCgzNjAwKnIpO2Nhc2UiZGF5IjpjYXNlImRheXMiOmNhc2UiZCI6cmV0dXJuIE1hdGgucm91bmQoODY0MDAqcik7Y2FzZSJ3ZWVrIjpjYXNlIndlZWtzIjpjYXNlInciOnJldHVybiBNYXRoLnJvdW5kKDYwNDgwMCpyKTtkZWZhdWx0OnJldHVybiBNYXRoLnJvdW5kKDMxNTU3NjAwKnIpfX0sZm89ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eYXBwbGljYXRpb25cLy8sIiIpfSxobz1mdW5jdGlvbihlLHQpe3ZhciByLG89YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9LGk9by50eXA7aWYoaSYmKCJzdHJpbmciIT10eXBlb2YgZS50eXB8fGZvKGUudHlwKSE9PWZvKGkpKSl0aHJvdyBuZXcgWW4oJ3VuZXhwZWN0ZWQgInR5cCIgSldUIGhlYWRlciB2YWx1ZScsInR5cCIsImNoZWNrX2ZhaWxlZCIpO3RyeXtyPUpTT04ucGFyc2UocW4uZGVjb2RlKHQpKX1jYXRjaChlKXt9aWYoIm9iamVjdCIhPW4ocil8fCFyfHxBcnJheS5pc0FycmF5KHIpKXRocm93IG5ldyBHbigiSldUIENsYWltcyBTZXQgbXVzdCBiZSBhIHRvcC1sZXZlbCBKU09OIG9iamVjdCIpO3ZhciBhPW8uaXNzdWVyO2lmKGEmJiEoInN0cmluZyI9PXR5cGVvZiBhP1thXTphKS5pbmNsdWRlcyhyLmlzcykpdGhyb3cgbmV3IFluKCd1bmV4cGVjdGVkICJpc3MiIGNsYWltIHZhbHVlJywiaXNzIiwiY2hlY2tfZmFpbGVkIik7dmFyIHM9by5zdWJqZWN0O2lmKHMmJnIuc3ViIT09cyl0aHJvdyBuZXcgWW4oJ3VuZXhwZWN0ZWQgInN1YiIgY2xhaW0gdmFsdWUnLCJzdWIiLCJjaGVja19mYWlsZWQiKTt2YXIgdSxjLGYsaD1vLmF1ZGllbmNlO2lmKGgmJihjPSJzdHJpbmciPT10eXBlb2YgaD9baF06aCwhKCJzdHJpbmciPT10eXBlb2YodT1yLmF1ZCk/Yy5pbmNsdWRlcyh1KTpjLnNvbWUoU2V0LnByb3RvdHlwZS5oYXMuYmluZChuZXcgU2V0KHUpKSkpKSl0aHJvdyBuZXcgWW4oJ3VuZXhwZWN0ZWQgImF1ZCIgY2xhaW0gdmFsdWUnLCJhdWQiLCJjaGVja19mYWlsZWQiKTtzd2l0Y2gobihvLmNsb2NrVG9sZXJhbmNlKSl7Y2FzZSJzdHJpbmciOmY9Y28oby5jbG9ja1RvbGVyYW5jZSk7YnJlYWs7Y2FzZSJudW1iZXIiOmY9by5jbG9ja1RvbGVyYW5jZTticmVhaztjYXNlInVuZGVmaW5lZCI6Zj0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBjbG9ja1RvbGVyYW5jZSBvcHRpb24gdHlwZSIpfXZhciBsLHA9by5jdXJyZW50RGF0ZSxkPShsPXB8fG5ldyBEYXRlLE1hdGguZmxvb3IobC5nZXRUaW1lKCkvMWUzKSk7aWYodm9pZCAwIT09ci5pYXR8fG8ubWF4VG9rZW5BZ2Upe2lmKCJudW1iZXIiIT10eXBlb2Ygci5pYXQpdGhyb3cgbmV3IFluKCciaWF0IiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywiaWF0IiwiaW52YWxpZCIpO2lmKHZvaWQgMD09PXIuZXhwJiZyLmlhdD5kK2YpdGhyb3cgbmV3IFluKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkIChpdCBzaG91bGQgYmUgaW4gdGhlIHBhc3QpJywiaWF0IiwiY2hlY2tfZmFpbGVkIil9aWYodm9pZCAwIT09ci5uYmYpe2lmKCJudW1iZXIiIT10eXBlb2Ygci5uYmYpdGhyb3cgbmV3IFluKCcibmJmIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywibmJmIiwiaW52YWxpZCIpO2lmKHIubmJmPmQrZil0aHJvdyBuZXcgWW4oJyJuYmYiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJuYmYiLCJjaGVja19mYWlsZWQiKX1pZih2b2lkIDAhPT1yLmV4cCl7aWYoIm51bWJlciIhPXR5cGVvZiByLmV4cCl0aHJvdyBuZXcgWW4oJyJleHAiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJleHAiLCJpbnZhbGlkIik7aWYoci5leHA8PWQtZil0aHJvdyBuZXcgJG4oJyJleHAiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJleHAiLCJjaGVja19mYWlsZWQiKX1pZihvLm1heFRva2VuQWdlKXt2YXIgdj1kLXIuaWF0O2lmKHYtZj4oIm51bWJlciI9PXR5cGVvZiBvLm1heFRva2VuQWdlP28ubWF4VG9rZW5BZ2U6Y28oby5tYXhUb2tlbkFnZSkpKXRocm93IG5ldyAkbignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAodG9vIGZhciBpbiB0aGUgcGFzdCknLCJpYXQiLCJjaGVja19mYWlsZWQiKTtpZih2PDAtZil0aHJvdyBuZXcgWW4oJyJpYXQiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQgKGl0IHNob3VsZCBiZSBpbiB0aGUgcGFzdCknLCJpYXQiLCJjaGVja19mYWlsZWQiKX1yZXR1cm4gcn07ZnVuY3Rpb24gbG8oKXtyZXR1cm4gbG89eChpLm1hcmsoKGZ1bmN0aW9uIGUodCxyLG4pe3ZhciBvO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixmdW5jdGlvbigpe3ZhciBlPXgoaS5tYXJrKChmdW5jdGlvbiBlKHQscixuKXt2YXIgbyxhLHMsdSxjO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYodD1xbi5kZWNvZGUodCkpLCJzdHJpbmciPT10eXBlb2YgdCl7ZS5uZXh0PTI7YnJlYWt9dGhyb3cgbmV3IEpuKCJDb21wYWN0IEpXUyBtdXN0IGJlIGEgc3RyaW5nIG9yIFVpbnQ4QXJyYXkiKTtjYXNlIDI6aWYobz10LnNwbGl0KCIuIiksYT1vWzBdLHM9b1sxXSx1PW9bMl0sMz09PW8ubGVuZ3RoKXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgSm4oIkludmFsaWQgQ29tcGFjdCBKV1MiKTtjYXNlIDU6cmV0dXJuIGUubmV4dD03LGFvKHtwYXlsb2FkOnN8fHZvaWQgMCxwcm90ZWN0ZWQ6YXx8dm9pZCAwLHNpZ25hdHVyZTp1fHx2b2lkIDB9LHIsbik7Y2FzZSA3OnJldHVybiBjPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIix7cGF5bG9hZDpjLnBheWxvYWQscHJvdGVjdGVkSGVhZGVyOmMucHJvdGVjdGVkSGVhZGVyfSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0LHIsbil7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSh0LHIsbik7Y2FzZSAyOnJldHVybiBvPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIix7cGF5bG9hZDpobyhvLnByb3RlY3RlZEhlYWRlcixvLnBheWxvYWQsbikscHJvdGVjdGVkSGVhZGVyOm8ucHJvdGVjdGVkSGVhZGVyfSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpLGxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgcG89cmVxdWlyZSgic2VjdXJlLXJhbmRvbS1ieXRlcyIpLHZvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe18odGhpcyxlKX1yZXR1cm4gdyhlLG51bGwsW3trZXk6ImJhc2U2NFVSTEVuY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIG1uLmVuY29kZShlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9fSx7a2V5OiJnZXRDb2RlVmVyaWZpZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlIGNyLk5vZGU6cmV0dXJuIHRoaXMuYmFzZTY0VVJMRW5jb2RlKHBvKDMyKSk7Y2FzZSBjci5Ccm93c2VyOnJldHVybiB0aGlzLmJhc2U2NFVSTEVuY29kZShIbigzMikpO2Nhc2UgY3IuUmVhY3ROYXRpdmU6cmV0dXJuIHRoaXMuYmFzZTY0VVJMRW5jb2RlKGJuLnJhbmRvbSgzMikudG9TdHJpbmcoKSk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5iYXNlNjRVUkxFbmNvZGUoSG4oMzIpKX19fSx7a2V5OiJnZXRDb2RlQ2hhbGxlbmdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5iYXNlNjRVUkxFbmNvZGUobmV3IFgoa24oKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGUpKSkpfX0se2tleToiZ2V0U3VwcG9ydGVkU2lnbmF0dXJlQWxnb3JpdGhtcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bIlJTMjU2IiwiUlM1MTIiLCJSUzM4NCIsIlBTMjU2Il19fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZShtbi5kZWNvZGUoZSwidXRmOCIpKSxvPXJyKHQpO3RyeXtmb3Ioby5zKCk7IShyPW8ubigpKS5kb25lOyl7dmFyIGk9ci52YWx1ZTtpZihuLmtpZD09PWkua2lkKXJldHVybiB0byh7YWxnOmkuYWxnLGU6aS5lLGt0eTppLmt0eSxuOmkubn0pfX1jYXRjaChlKXtvLmUoZSl9ZmluYWxseXtvLmYoKX1yZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJDUllQVE9fVVRJTC1HVEZUSVQtSVYwMSIsImNyeXB0by11dGlscyIsImdldEpXS0ZvclRoZUlkVG9rZW4iLCJraWQgbm90IGZvdW5kLiIsIkZhaWxlZCB0byBmaW5kIHRoZSAna2lkJyBzcGVjaWZpZWQgaW4gdGhlIGlkX3Rva2VuLiAna2lkJyBmb3VuZCBpbiB0aGUgaGVhZGVyIDogIituLmtpZCsiLCBFeHBlY3RlZCB2YWx1ZXM6ICIrdC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmtpZH0pKS5qb2luKCIsICIpKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixvLGkpe3JldHVybiBmdW5jdGlvbihlLHQscil7cmV0dXJuIGxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oZSx0LHthbGdvcml0aG1zOnRoaXMuZ2V0U3VwcG9ydGVkU2lnbmF0dXJlQWxnb3JpdGhtcygpLGF1ZGllbmNlOnIsY2xvY2tUb2xlcmFuY2U6aSxpc3N1ZXI6bixzdWJqZWN0Om99KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJDUllQVE9fVVRJTC1JVklULUlWMDIiLCJjcnlwdG8tdXRpbHMiLCJpc1ZhbGlkSWRUb2tlbiIsIlZhbGlkYXRpbmcgSUQgdG9rZW4gZmFpbGVkIixlKSl9KSl9fSx7a2V5OiJkZWNvZGVJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt0cnl7dmFyIHQ9bW4uZGVjb2RlKGUuc3BsaXQoIi4iKVsxXSwidXRmOCIpO3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe3Rocm93IG5ldyBocigiQ1JZUFRPX1VUSUwtRElULUlWMDEiLCJjcnlwdG8tdXRpbHMiLCJkZWNvZGVJRFRva2VuIiwiRGVjb2RpbmcgSUQgdG9rZW4gZmFpbGVkLiIsZSl9fX1dKSxlfSgpLGdvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe18odGhpcyxlKX1yZXR1cm4gdyhlLG51bGwsW3trZXk6ImdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuLG8saT12by5kZWNvZGVJRFRva2VuKGUpLGE9dGhpcy5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQoaSkscz1udWxsIT09KHQ9bnVsbD09aT92b2lkIDA6aS51c2VybmFtZSkmJnZvaWQgMCE9PXQ/dDoiIix1PW51bGwhPT0ocj1pLmdpdmVuX25hbWUpJiZ2b2lkIDAhPT1yP3I6IiIsYz1udWxsIT09KG49aS5mYW1pbHlfbmFtZSkmJnZvaWQgMCE9PW4/bjoiIixmPXUmJmM/IiIuY29uY2F0KHUsIiAiKS5jb25jYXQoYyk6dXx8Y3x8IiIsaD1udWxsIT09KG89aS5wcmVmZXJyZWRfdXNlcm5hbWUpJiZ2b2lkIDAhPT1vP286ZjtyZXR1cm4gT2JqZWN0LmFzc2lnbih7ZGlzcGxheU5hbWU6aCx0ZW5hbnREb21haW46YSx1c2VybmFtZTpzfSx0aGlzLmZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZChpKSl9fSx7a2V5OiJmaWx0ZXJDbGFpbXNGcm9tSURUb2tlblBheWxvYWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5hc3NpZ24oe30sZSk7bnVsbD09dHx8ZGVsZXRlIHQuaXNzLG51bGw9PXR8fGRlbGV0ZSB0LmF1ZCxudWxsPT10fHxkZWxldGUgdC5leHAsbnVsbD09dHx8ZGVsZXRlIHQuaWF0LG51bGw9PXR8fGRlbGV0ZSB0LmFjcixudWxsPT10fHxkZWxldGUgdC5hbXIsbnVsbD09dHx8ZGVsZXRlIHQuYXpwLG51bGw9PXR8fGRlbGV0ZSB0LmF1dGhfdGltZSxudWxsPT10fHxkZWxldGUgdC5ub25jZSxudWxsPT10fHxkZWxldGUgdC5jX2hhc2gsbnVsbD09dHx8ZGVsZXRlIHQuYXRfaGFzaCxudWxsPT10fHxkZWxldGUgdC5uYmYsbnVsbD09dHx8ZGVsZXRlIHQuaXNrLG51bGw9PXR8fGRlbGV0ZSB0LnNpZDt2YXIgcj17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9eShlLDIpLG49dFswXSxvPXRbMV0saT1uLnNwbGl0KCJfIikubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiAwPT09dD9lOltlWzBdLnRvVXBwZXJDYXNlKCldLmNvbmNhdChsKGUuc2xpY2UoMSkpKS5qb2luKCIiKX0pKS5qb2luKCIiKTtyW2ldPW99KSkscn19LHtrZXk6ImdldFRva2VuUmVxdWVzdEhlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiIsIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9fX1dKSxlfSgpO2dvLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IkAiLHI9ZS5zdWIuc3BsaXQodCk7cmV0dXJuIHIubGVuZ3RoPjI/cltyLmxlbmd0aC0xXToiIn07dmFyIHlvLG1vLHdvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgcj10aGlzO18odGhpcyxlKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gc3Iocix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gc3Iocix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fXJldHVybiB3KGUsW3trZXk6InJlc29sdmVXZWxsS25vd25FbmRwb2ludCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9jb25maWcoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLHQud2VsbEtub3duRW5kcG9pbnQ/dC5zZXJ2ZXJPcmlnaW4rdC53ZWxsS25vd25FbmRwb2ludDp0LnNlcnZlck9yaWdpbisiL29hdXRoMi90b2tlbi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbiIpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVzb2x2ZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPXt9LHQubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gbj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKG4ub3ZlcnJpZGVXZWxsRW5kcG9pbnRDb25maWcmJm4uZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhuLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7clt0XT0obnVsbD09bj92b2lkIDA6bi5lbmRwb2ludHMpP24uZW5kcG9pbnRzW2VdOiIifSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxyKSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVzb2x2ZUZhbGxiYWNrRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXt9LGUubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4ocj1lLnNlbnQpLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxuPXthdXRob3JpemF0aW9uX2VuZHBvaW50OnIuc2VydmVyT3JpZ2luKyIvb2F1dGgyL2F1dGhvcml6ZSIsZW5kX3Nlc3Npb25fZW5kcG9pbnQ6ci5zZXJ2ZXJPcmlnaW4rIi9vaWRjL2xvZ291dCIsandrc191cmk6ci5zZXJ2ZXJPcmlnaW4rIi9vYXV0aDIvandrcyIsY2hlY2tfc2Vzc2lvbl9pZnJhbWU6ci5zZXJ2ZXJPcmlnaW4rIi9vaWRjL2NoZWNrc2Vzc2lvbiIscmV2b2NhdGlvbl9lbmRwb2ludDpyLnNlcnZlck9yaWdpbisiL29hdXRoMi9yZXZva2UiLHRva2VuX2VuZHBvaW50OnIuc2VydmVyT3JpZ2luKyIvb2F1dGgyL3Rva2VuIn0sZS5hYnJ1cHQoInJldHVybiIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLG4pKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InZhbGlkYXRlSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLG89dGhpcztyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiByPXQuc2VudC5qd2tzX3VyaSx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6cmV0dXJuIG49dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHImJjAhPT1yLnRyaW0oKS5sZW5ndGg/dHIuZ2V0KHIse3dpdGhDcmVkZW50aWFsczpudWxsPT1uP3ZvaWQgMDpuLnNlbmRDb29raWVzSW5SZXF1ZXN0c30pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBzcihvLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sbyxhPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoMjAwPT09dC5zdGF0dXMpe3IubmV4dD0yO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgaHIoIkFVVEhfSEVMUEVSLVZJVC1OUjAyIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIiwiSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgandrcyByZXR1cm5lZCAiK3Quc3RhdHVzKyIgLCB3aGljaCBpcyBpbnZhbGlkLiIpKSk7Y2FzZSAyOnJldHVybiByLm5leHQ9NCx0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgNDpyZXR1cm4gbj1yLnNlbnQuaXNzdWVyLHIubmV4dD03LHRoaXMucmVzb2x2ZVdlbGxLbm93bkVuZHBvaW50KCk7Y2FzZSA3OnJldHVybiBvPXIuc2VudC5zcGxpdCgiLy53ZWxsLWtub3duIilbMF0sci5hYnJ1cHQoInJldHVybiIsbiYmbj09PW8/dm8uZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0sdC5kYXRhLmtleXMpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBzcihhLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9dm8sci50MT1lLHIudDI9dCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6cmV0dXJuIHIudDM9ci5zZW50LmNsaWVudElELHIudDQ9bixyLnQ1PXZvLmRlY29kZUlEVG9rZW4oZSkuc3ViLHIubmV4dD0xMCx0aGlzLl9jb25maWcoKTtjYXNlIDEwOnJldHVybiByLnQ2PXIuc2VudC5jbG9ja1RvbGVyYW5jZSxyLmFicnVwdCgicmV0dXJuIixyLnQwLmlzVmFsaWRJZFRva2VuLmNhbGwoci50MCxyLnQxLHIudDIsci50MyxyLnQ0LHIudDUsci50NikudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgaHIoIkFVVEhfSEVMUEVSLVZJVC1FUzAzIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIix2b2lkIDAsdm9pZCAwLGUpKX0pKSk7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0hFTFBFUi1WSVQtRVMwNCIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsInZhbGlkYXRlSWRUb2tlbiIsdm9pZCAwLHZvaWQgMCxlKSl9KSk6UHJvbWlzZS5yZXNvbHZlKCExKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGxyKCJBVVRIX0hFTFBFUi1WSVQtTlIwNSIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsInZhbGlkYXRlSWRUb2tlbiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIiwiVGhlIHJlcXVlc3Qgc2VudCB0byBnZXQgdGhlIGp3a3MgZnJvbSB0aGUgc2VydmVyIGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRhdGEpKX0pKTpQcm9taXNlLnJlamVjdChuZXcgaHIoIkFVVEhfSEVMUEVSLVZJVC1ORjAxIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIiwiSldLUyBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gSldLUyBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBKV0tTIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZXBsYWNlQ3VzdG9tR3JhbnRUZW1wbGF0ZVRhZ3MiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sbyxhO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBuPSJvcGVuaWQiLHIubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gbz1yLnNlbnQsci5uZXh0PTYsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSA2OnJldHVybiBhPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIiwoby5zY29wZSYmby5zY29wZS5sZW5ndGg+MCYmKG8uc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxvLnNjb3BlLnB1c2goIm9wZW5pZCIpLG49by5zY29wZS5qb2luKCIgIikpLGUucmVwbGFjZSgie3t0b2tlbn19IixhLmFjY2Vzc190b2tlbikucmVwbGFjZSgie3t1c2VybmFtZX19Iixnby5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8oYS5pZF90b2tlbikudXNlcm5hbWUpLnJlcGxhY2UoInt7c2NvcGV9fSIsbikucmVwbGFjZSgie3tjbGllbnRJRH19IixvLmNsaWVudElEKS5yZXBsYWNlKCJ7e2NsaWVudFNlY3JldH19IixudWxsIT09KHQ9by5jbGllbnRTZWNyZXQpJiZ2b2lkIDAhPT10P3Q6IiIpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclVzZXJTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUubmV4dD00LHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhKCk7Y2FzZSA0OnJldHVybiBlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlU2Vzc2lvbkRhdGEoKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImhhbmRsZVRva2VuUmVzcG9uc2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbj10aGlzO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzKXt0Lm5leHQ9MjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0hFTFBFUi1IVFItTlIwMSIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsImhhbmRsZVRva2VuUmVzcG9uc2UiLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdG9rZW4gcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgdG9rZW4gcmV0dXJuZWQgIitlLnN0YXR1cysiICwgd2hpY2ggaXMgaW52YWxpZC4iKSkpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5fY29uZmlnKCk7Y2FzZSA0OmlmKCF0LnNlbnQudmFsaWRhdGVJRFRva2VuKXt0Lm5leHQ9NjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4oZS5kYXRhLmlkX3Rva2VuKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gc3Iobix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKCF0KXtyLm5leHQ9NTticmVha31yZXR1cm4gci5uZXh0PTMsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhKGUuZGF0YSk7Y2FzZSAzOnJldHVybiBuPXthY2Nlc3NUb2tlbjplLmRhdGEuYWNjZXNzX3Rva2VuLGV4cGlyZXNJbjplLmRhdGEuZXhwaXJlc19pbixpZFRva2VuOmUuZGF0YS5pZF90b2tlbixyZWZyZXNoVG9rZW46ZS5kYXRhLnJlZnJlc2hfdG9rZW4sc2NvcGU6ZS5kYXRhLnNjb3BlLHRva2VuVHlwZTplLmRhdGEudG9rZW5fdHlwZX0sci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKG4pKTtjYXNlIDU6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBocigiQVVUSF9IRUxQRVItSFRSLUlWMDIiLCJhdXRoZW50aWNhdGlvbi1oZWxwZXIiLCJoYW5kbGVUb2tlblJlc3BvbnNlIiwiVGhlIGlkIHRva2VuIHJldHVybmVkIGlzIG5vdCB2YWxpZC4iLCJUaGUgaWQgdG9rZW4gcmV0dXJuZWQgaGFzIGZhaWxlZCB0aGUgdmFsaWRhdGlvbiBjaGVjay4iKSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0hFTFBFUi1IQVQtRVMwMyIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsImhhbmRsZVRva2VuUmVzcG9uc2UiLHZvaWQgMCx2b2lkIDAsZSkpfSkpKTtjYXNlIDY6cmV0dXJuIHI9e2FjY2Vzc1Rva2VuOmUuZGF0YS5hY2Nlc3NfdG9rZW4sZXhwaXJlc0luOmUuZGF0YS5leHBpcmVzX2luLGlkVG9rZW46ZS5kYXRhLmlkX3Rva2VuLHJlZnJlc2hUb2tlbjplLmRhdGEucmVmcmVzaF90b2tlbixzY29wZTplLmRhdGEuc2NvcGUsdG9rZW5UeXBlOmUuZGF0YS50b2tlbl90eXBlfSx0Lm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEoZS5kYXRhKTtjYXNlIDk6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShyKSk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLGJvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgcj10aGlzO18odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlcj1uZXcgd28odCksdGhpcy5fZGF0YUxheWVyPXQsdGhpcy5fY29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJuIHNyKHIsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHNyKHIsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1yZXR1cm4gdyhlLFt7a2V5OiJnZXRBdXRob3JpemF0aW9uVVJMIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sbyxhLHMsdSxjLGYsaCxsLHAsZDtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyKCJhdXRob3JpemF0aW9uX2VuZHBvaW50Iik7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYobj10LnNlbnQsciYmMCE9PXIudHJpbSgpLmxlbmd0aCl7dC5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IGhyKCJBVVRIX0NPUkUtR0FVLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0QXV0aG9yaXphdGlvblVSTCIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgZm91bmQuIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIGZyb20gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OmlmKChvPW5ldyBVUkwocikpLnNlYXJjaFBhcmFtcy5hcHBlbmQoInJlc3BvbnNlX3R5cGUiLCJjb2RlIiksby5zZWFyY2hQYXJhbXMuYXBwZW5kKCJjbGllbnRfaWQiLG4uY2xpZW50SUQpLGE9Im9wZW5pZCIsbi5zY29wZSYmbi5zY29wZS5sZW5ndGg+MCYmKG4uc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxuLnNjb3BlLnB1c2goIm9wZW5pZCIpLGE9bi5zY29wZS5qb2luKCIgIikpLG8uc2VhcmNoUGFyYW1zLmFwcGVuZCgic2NvcGUiLGEpLG8uc2VhcmNoUGFyYW1zLmFwcGVuZCgicmVkaXJlY3RfdXJpIixuLnNpZ25JblJlZGlyZWN0VVJMKSxuLnJlc3BvbnNlTW9kZSYmby5zZWFyY2hQYXJhbXMuYXBwZW5kKCJyZXNwb25zZV9tb2RlIixuLnJlc3BvbnNlTW9kZSksIW4uZW5hYmxlUEtDRSl7dC5uZXh0PTE3O2JyZWFrfXJldHVybiBzPXZvLmdldENvZGVWZXJpZmllcihuLnJ1bnRpbWVFbnZpcm9ubWVudCksdT12by5nZXRDb2RlQ2hhbGxlbmdlKHMpLHQubmV4dD0xNSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigicGtjZV9jb2RlX3ZlcmlmaWVyIixzKTtjYXNlIDE1Om8uc2VhcmNoUGFyYW1zLmFwcGVuZCgiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIiwiUzI1NiIpLG8uc2VhcmNoUGFyYW1zLmFwcGVuZCgiY29kZV9jaGFsbGVuZ2UiLHUpO2Nhc2UgMTc6aWYobi5wcm9tcHQmJm8uc2VhcmNoUGFyYW1zLmFwcGVuZCgicHJvbXB0IixuLnByb21wdCksYz1lKWZvcihmPTAsaD1PYmplY3QuZW50cmllcyhjKTtmPGgubGVuZ3RoO2YrKylsPXkoaFtmXSwyKSxwPWxbMF0sZD1sWzFdLCIiIT1wJiYiIiE9ZCYmby5zZWFyY2hQYXJhbXMuYXBwZW5kKHAsZC50b1N0cmluZygpKTtyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsby50b1N0cmluZygpKTtjYXNlIDIxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZXF1ZXN0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixvLGEscyx1PXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBuPXIuc2VudC50b2tlbl9lbmRwb2ludCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYobz1yLnNlbnQsbiYmMCE9PW4udHJpbSgpLmxlbmd0aCl7ci5uZXh0PTg7YnJlYWt9cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBocigiQVVUSF9DT1JFLVJBVDEtTkYwMSIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXF1ZXN0QWNjZXNzVG9rZW4iLCJUb2tlbiBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIikpKTtjYXNlIDg6aWYoci50MD10LCFyLnQwKXtyLm5leHQ9MTI7YnJlYWt9cmV0dXJuIHIubmV4dD0xMix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIoInNlc3Npb25fc3RhdGUiLHQpO2Nhc2UgMTI6aWYoKGE9W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChvLmNsaWVudElEKSksby5jbGllbnRTZWNyZXQmJm8uY2xpZW50U2VjcmV0LnRyaW0oKS5sZW5ndGg+MCYmYS5wdXNoKCJjbGllbnRfc2VjcmV0PSIuY29uY2F0KG8uY2xpZW50U2VjcmV0KSkscz1lLGEucHVzaCgiY29kZT0iLmNvbmNhdChzKSksYS5wdXNoKCJncmFudF90eXBlPWF1dGhvcml6YXRpb25fY29kZSIpLGEucHVzaCgicmVkaXJlY3RfdXJpPSIuY29uY2F0KG8uc2lnbkluUmVkaXJlY3RVUkwpKSxyLnQxPW8uZW5hYmxlUEtDRSwhci50MSl7ci5uZXh0PTI5O2JyZWFrfXJldHVybiByLnQyPWEsci50Mz0iY29kZV92ZXJpZmllcj0iLHIubmV4dD0yNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigicGtjZV9jb2RlX3ZlcmlmaWVyIik7Y2FzZSAyNDpyZXR1cm4gci50ND1yLnNlbnQsci50NT1yLnQzLmNvbmNhdC5jYWxsKHIudDMsci50NCksci50Mi5wdXNoLmNhbGwoci50MixyLnQ1KSxyLm5leHQ9MjksdGhpcy5fZGF0YUxheWVyLnJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoInBrY2VfY29kZV92ZXJpZmllciIpO2Nhc2UgMjk6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHRyLnBvc3QobixhLmpvaW4oIiYiKSx7aGVhZGVyczpnby5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCksd2l0aENyZWRlbnRpYWxzOm8uc2VuZENvb2tpZXNJblJlcXVlc3RzfSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIHUuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgaHIoIkFVVEhfQ09SRS1SQVQxLUVTMDIiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEFjY2Vzc1Rva2VuIix2b2lkIDAsdm9pZCAwLGUpKX0pKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgbHIoIkFVVEhfQ09SRS1SQVQxLU5SMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEFjY2Vzc1Rva2VuIiwiUmVxdWVzdGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIiwiVGhlIHJlcXVlc3QgdG8gZ2V0IHRoZSBhY2Nlc3MgdG9rZW4gZnJvbSB0aGUgc2VydmVyIGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRhdGEpKX0pKSk7Y2FzZSAzMDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToicmVmcmVzaEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuLG8sYT10aGlzO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gdD1lLnNlbnQudG9rZW5fZW5kcG9pbnQsZS5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OnJldHVybiByPWUuc2VudCxlLm5leHQ9OCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoKTtjYXNlIDg6aWYoKG49ZS5zZW50KS5yZWZyZXNoX3Rva2VuKXtlLm5leHQ9MTE7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBocigiQVVUSF9DT1JFLVJBVDItTkYwMSIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZWZyZXNoQWNjZXNzVG9rZW4iLCJObyByZWZyZXNoIHRva2VuIGZvdW5kLiIsIlRoZXJlIHdhcyBubyByZWZyZXNoIHRva2VuIGZvdW5kLiBBc2dhcmRlbyBkb2Vzbid0IHJldHVybiBhIHJlZnJlc2ggdG9rZW4gaWYgdGhlIHJlZnJlc2ggdG9rZW4gZ3JhbnQgaXMgbm90IGVuYWJsZWQuIikpKTtjYXNlIDExOmlmKHQmJjAhPT10LnRyaW0oKS5sZW5ndGgpe2UubmV4dD0xMzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0NPUkUtUkFUMi1ORjAyIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlZnJlc2hBY2Nlc3NUb2tlbiIsIk5vIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgZm91bmQuIiwiTm8gcmVmcmVzaCB0b2tlbiBlbmRwb2ludCB3YXMgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSByZWZyZXNoIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpKSk7Y2FzZSAxMzpyZXR1cm4gbz1bXSxlLmFicnVwdCgicmV0dXJuIiwoby5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQoci5jbGllbnRJRCkpLG8ucHVzaCgicmVmcmVzaF90b2tlbj0iLmNvbmNhdChuLnJlZnJlc2hfdG9rZW4pKSxvLnB1c2goImdyYW50X3R5cGU9cmVmcmVzaF90b2tlbiIpLHIuY2xpZW50U2VjcmV0JiZyLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJm8ucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChyLmNsaWVudFNlY3JldCkpLHRyLnBvc3QodCxvLmpvaW4oIiYiKSx7aGVhZGVyczpnby5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCksd2l0aENyZWRlbnRpYWxzOnIuc2VuZENvb2tpZXNJblJlcXVlc3RzfSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGEuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgaHIoIkFVVEhfQ09SRS1SQVQyLUVTMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVmcmVzaEFjY2Vzc1Rva2VuIix2b2lkIDAsdm9pZCAwLGUpKX0pKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgbHIoIkFVVEhfQ09SRS1SQVQyLU5SMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVmcmVzaEFjY2Vzc1Rva2VuIiwiUmVmcmVzaCBhY2Nlc3MgdG9rZW4gcmVxdWVzdCBmYWlsZWQuIiwiVGhlIHJlcXVlc3QgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRhdGEpKX0pKSkpO2Nhc2UgMTU6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJldm9rZUFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuLG89dGhpcztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LnJldm9jYXRpb25fZW5kcG9pbnQsZS5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKHI9ZS5zZW50LHQmJjAhPT10LnRyaW0oKS5sZW5ndGgpe2UubmV4dD04O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgaHIoIkFVVEhfQ09SRS1SQVQzLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmV2b2tlQWNjZXNzVG9rZW4iLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IGZvdW5kLiIsIk5vIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKSkpO2Nhc2UgODpyZXR1cm4obj1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KHIuY2xpZW50SUQpKSxlLnQwPW4sZS50MT0idG9rZW49IixlLm5leHQ9MTQsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAxNDpyZXR1cm4gZS50Mj1lLnNlbnQuYWNjZXNzX3Rva2VuLGUudDM9ZS50MS5jb25jYXQuY2FsbChlLnQxLGUudDIpLGUudDAucHVzaC5jYWxsKGUudDAsZS50Myksbi5wdXNoKCJ0b2tlbl90eXBlX2hpbnQ9YWNjZXNzX3Rva2VuIiksZS5hYnJ1cHQoInJldHVybiIsdHIucG9zdCh0LG4uam9pbigiJiIpLHtoZWFkZXJzOmdvLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSx3aXRoQ3JlZGVudGlhbHM6ci5zZW5kQ29va2llc0luUmVxdWVzdHN9KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gMjAwIT09ZS5zdGF0dXM/UHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0NPUkUtUkFUMy1OUjAyIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJldm9rZUFjY2Vzc1Rva2VuIiwiSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHJldm9rZSBhY2Nlc3MgdG9rZW4gcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIHJldm9rZSB0aGUgYWNjZXNzIHRva2VuIHJldHVybmVkICIrZS5zdGF0dXMrIiAsIHdoaWNoIGlzIGludmFsaWQuIikpOihvLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YSgpLFByb21pc2UucmVzb2x2ZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGxyKCJBVVRIX0NPUkUtUkFUMy1OUjAzIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJldm9rZUFjY2Vzc1Rva2VuIiwiVGhlIHJlcXVlc3QgdG8gcmV2b2tlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIiwiVGhlIHJlcXVlc3Qgc2VudCB0byByZXZva2UgdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIixudWxsIT09KHQ9bnVsbD09ZT92b2lkIDA6ZS5jb2RlKSYmdm9pZCAwIT09dD90OiIiLG51bGw9PWU/dm9pZCAwOmUubWVzc2FnZSxudWxsPT09KHI9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuc3RhdHVzLG51bGw9PT0obj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5kYXRhKSl9KSkpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RDdXN0b21HcmFudCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLG8sYSxzPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYobj10LnNlbnQsKG89ZS50b2tlbkVuZHBvaW50JiYwIT09ZS50b2tlbkVuZHBvaW50LnRyaW0oKS5sZW5ndGg/ZS50b2tlbkVuZHBvaW50OnIudG9rZW5fZW5kcG9pbnQpJiYwIT09by50cmltKCkubGVuZ3RoKXt0Lm5leHQ9ODticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0NPUkUtUkNHLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEN1c3RvbUdyYW50IiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpKSk7Y2FzZSA4OnJldHVybiB0Lm5leHQ9MTAsUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXMoZS5kYXRhKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PXkoZSwyKSxyPXRbMF0sbj10WzFdO3JldHVybiBzcihzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlcGxhY2VDdXN0b21HcmFudFRlbXBsYXRlVGFncyhuKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChyLCI9IikuY29uY2F0KHQpKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSk7Y2FzZSAxMDppZih0LnQwPXQuc2VudC5qb2luKCImIiksdC50MT1PYmplY3QuYXNzaWduKHt9LGdvLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksdC50Mj1vLHQudDM9bi5zZW5kQ29va2llc0luUmVxdWVzdHMsYT17ZGF0YTp0LnQwLGhlYWRlcnM6dC50MSxtZXRob2Q6IlBPU1QiLHVybDp0LnQyLHdpdGhDcmVkZW50aWFsczp0LnQzfSx0LnQ0PWUuYXR0YWNoVG9rZW4sIXQudDQpe3QubmV4dD0yNjticmVha31yZXR1cm4gdC50NT1PYmplY3QsdC50Nj1PYmplY3QuYXNzaWduKHt9LGEuaGVhZGVycyksdC50Nz0iQmVhcmVyICIsdC5uZXh0PTIyLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMjI6dC50OD10LnNlbnQuYWNjZXNzX3Rva2VuLHQudDk9dC50Ny5jb25jYXQuY2FsbCh0LnQ3LHQudDgpLHQudDEwPXtBdXRob3JpemF0aW9uOnQudDl9LGEuaGVhZGVycz10LnQ1LmFzc2lnbi5jYWxsKHQudDUsdC50Nix0LnQxMCk7Y2FzZSAyNjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdHIoYSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIDIwMCE9PXQuc3RhdHVzP1Byb21pc2UucmVqZWN0KG5ldyBocigiQVVUSF9DT1JFLVJDRy1OUjAyIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlcXVlc3RDdXN0b21HcmFudCIsIkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0aGUgY3VzdG9tIGdyYW50IHJlcXVlc3QuIiwiVGhlIHJlcXVlc3Qgc2VudCB0byBnZXQgdGhlIGN1c3RvbSBncmFudCByZXR1cm5lZCAiK3Quc3RhdHVzKyIgLCB3aGljaCBpcyBpbnZhbGlkLiIpKTplLnJldHVybnNTZXNzaW9uP3MuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UodCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgaHIoIkFVVEhfQ09SRS1SQ0ctRVMwMyIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZvaWQgMCx2b2lkIDAsZSkpfSkpOlByb21pc2UucmVzb2x2ZSh0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgbHIoIkFVVEhfQ09SRS1SQ0ctTlIwNCIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXF1ZXN0Q3VzdG9tR3JhbnQiLCJUaGUgY3VzdG9tIGdyYW50IHJlcXVlc3QgZmFpbGVkLiIsIlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBjdXN0b20gZ3JhbnQgZmFpbGVkLiIsbnVsbCE9PSh0PW51bGw9PWU/dm9pZCAwOmUuY29kZSkmJnZvaWQgMCE9PXQ/dDoiIixudWxsPT1lP3ZvaWQgMDplLm1lc3NhZ2UsbnVsbD09PShyPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN0YXR1cyxudWxsPT09KG49bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZGF0YSkpfSkpKTtjYXNlIDI3OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LHI9Z28uZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKG51bGw9PXQ/dm9pZCAwOnQuaWRfdG9rZW4pLG49e2FsbG93ZWRTY29wZXM6dC5zY29wZSxzZXNzaW9uU3RhdGU6dC5zZXNzaW9uX3N0YXRlfSxlLmFicnVwdCgicmV0dXJuIiwoT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dm9pZCAwIT09cltlXSYmIiIhPT1yW2VdJiZudWxsIT09cltlXXx8ZGVsZXRlIHJbZV19KSksbj1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbikscikpKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMjpyZXR1cm4gdD1lLnNlbnQuaWRfdG9rZW4sZS5hYnJ1cHQoInJldHVybiIsdm8uZGVjb2RlSURUb2tlbih0KSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50LmlkX3Rva2VuKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG49dGhpcztyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZih0LnQwPSFlLCF0LnQwKXt0Lm5leHQ9NTticmVha31yZXR1cm4gdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDQ6dC50MD10LnNlbnQ7Y2FzZSA1OmlmKCF0LnQwKXt0Lm5leHQ9NzticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCEwKSk7Y2FzZSA3OnJldHVybiB0Lm5leHQ9OSx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlV2VsbEtub3duRW5kcG9pbnQoKTtjYXNlIDk6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHRyLmdldChyKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gc3Iobix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzKXt0Lm5leHQ9NDticmVha310LnQwPVByb21pc2UucmVqZWN0KG5ldyBocigiQVVUSF9DT1JFLUdPUE0tTlIwMSIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsIkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXF1ZXN0LiIsIlRoZSByZXF1ZXN0IHNlbnQgdG8gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgdG8gZ2V0IHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCAiK2Uuc3RhdHVzKyIgLCB3aGljaCBpcyBpbnZhbGlkLiIpKSx0Lm5leHQ9MTM7YnJlYWs7Y2FzZSA0OnJldHVybiB0LnQxPXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9Nyx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRW5kcG9pbnRzKGUuZGF0YSk7Y2FzZSA3OnJldHVybiB0LnQyPXQuc2VudCx0Lm5leHQ9MTAsdC50MS5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDEsdC50Mik7Y2FzZSAxMDpyZXR1cm4gdC5uZXh0PTEyLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSAxMjp0LnQwPVByb21pc2UucmVzb2x2ZSghMCk7Y2FzZSAxMzpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC50MCk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbigpe3JldHVybiBzcihuLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUudDA9dGhpcy5fZGF0YUxheWVyLGUubmV4dD0zLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVGYWxsYmFja0VuZHBvaW50cygpO2Nhc2UgMzpyZXR1cm4gZS50MT1lLnNlbnQsZS5uZXh0PTYsZS50MC5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKGUudDAsZS50MSk7Y2FzZSA2OnJldHVybiBlLm5leHQ9OCx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIsITApO2Nhc2UgODpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCEwKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiB0PWUuc2VudCxlLnQwPXQuYXV0aG9yaXphdGlvbl9lbmRwb2ludCxlLnQxPXQuY2hlY2tfc2Vzc2lvbl9pZnJhbWUsZS50Mj10LmVuZF9zZXNzaW9uX2VuZHBvaW50LGUudDM9dC5pbnRyb3NwZWN0aW9uX2VuZHBvaW50LGUudDQ9dC5pc3N1ZXIsZS50NT10Lmp3a3NfdXJpLGUudDY9dC5yZWdpc3RyYXRpb25fZW5kcG9pbnQsZS50Nz10LnJldm9jYXRpb25fZW5kcG9pbnQsZS50OD10LnRva2VuX2VuZHBvaW50LGUudDk9dC51c2VyaW5mb19lbmRwb2ludCxlLm5leHQ9MTUsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZVdlbGxLbm93bkVuZHBvaW50KCk7Y2FzZSAxNTpyZXR1cm4gZS50MTA9ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLHthdXRob3JpemF0aW9uRW5kcG9pbnQ6ZS50MCxjaGVja1Nlc3Npb25JZnJhbWU6ZS50MSxlbmRTZXNzaW9uRW5kcG9pbnQ6ZS50MixpbnRyb3NwZWN0aW9uRW5kcG9pbnQ6ZS50Myxpc3N1ZXI6ZS50NCxqd2tzVXJpOmUudDUscmVnaXN0cmF0aW9uRW5kcG9pbnQ6ZS50NixyZXZvY2F0aW9uRW5kcG9pbnQ6ZS50Nyx0b2tlbkVuZHBvaW50OmUudDgsdXNlcmluZm9FbmRwb2ludDplLnQ5LHdlbGxLbm93bkVuZHBvaW50OmUudDEwfSk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0LHI7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgbyxhLHMsdTtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6aWYobi50MT1lPW4uc2VudCxuLnQwPW51bGw9PT1uLnQxLG4udDApe24ubmV4dD02O2JyZWFrfW4udDA9dm9pZCAwPT09ZTtjYXNlIDY6aWYoIW4udDApe24ubmV4dD0xMDticmVha31uLnQyPXZvaWQgMCxuLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpuLnQyPWUuZW5kX3Nlc3Npb25fZW5kcG9pbnQ7Y2FzZSAxMTpyZXR1cm4gbz1uLnQyLG4ubmV4dD0xNCx0aGlzLl9jb25maWcoKTtjYXNlIDE0OmlmKGE9bi5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe24ubmV4dD0xNzticmVha310aHJvdyBuZXcgaHIoIkFVVEhfQ09SRS1HU09VLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0U2lnbk91dFVSTCIsIlNpZ24tb3V0IGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyBzaWduLW91dCBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBzaWduLW91dCBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDE3OnJldHVybiBuLm5leHQ9MTksdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAxOTppZihuLnQ0PXQ9bi5zZW50LG4udDM9bnVsbD09PW4udDQsbi50Myl7bi5uZXh0PTIzO2JyZWFrfW4udDM9dm9pZCAwPT09dDtjYXNlIDIzOmlmKCFuLnQzKXtuLm5leHQ9Mjc7YnJlYWt9bi50NT12b2lkIDAsbi5uZXh0PTI4O2JyZWFrO2Nhc2UgMjc6bi50NT10LmlkX3Rva2VuO2Nhc2UgMjg6aWYoKHM9bi50NSkmJjAhPT1zLnRyaW0oKS5sZW5ndGgpe24ubmV4dD0zMTticmVha310aHJvdyBuZXcgaHIoIkFVVEhfQ09SRS1HU09VLU5GMDIiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0U2lnbk91dFVSTCIsIklEIHRva2VuIG5vdCBmb3VuZC4iLCJObyBJRCB0b2tlbiBjb3VsZCBiZSBmb3VuZC4gRWl0aGVyIHRoZSBzZXNzaW9uIGluZm9ybWF0aW9uIGlzIGxvc3Qgb3IgeW91IGhhdmUgbm90IHNpZ25lZCBpbi4iKTtjYXNlIDMxOmlmKCh1PW51bGwhPT0ocj1udWxsPT1hP3ZvaWQgMDphLnNpZ25PdXRSZWRpcmVjdFVSTCkmJnZvaWQgMCE9PXI/cjpudWxsPT1hP3ZvaWQgMDphLnNpZ25JblJlZGlyZWN0VVJMKSYmMCE9PXUudHJpbSgpLmxlbmd0aCl7bi5uZXh0PTM0O2JyZWFrfXRocm93IG5ldyBocigiQVVUSF9DT1JFLUdTT1UtTkYwMyIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJnZXRTaWduT3V0VVJMIiwiTm8gc2lnbi1vdXQgcmVkaXJlY3QgVVJMIGZvdW5kLiIsIlRoZSBzaWduLW91dCByZWRpcmVjdCBVUkwgY2Fubm90IGJlIGZvdW5kIG9yIHRoZSBVUkwgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIE5vIHNpZ24taW4gcmVkaXJlY3QgVVJMIGhhcyBiZWVuIGZvdW5kIGVpdGhlci4gIik7Y2FzZSAzNDpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsIiIuY29uY2F0KG8sIj9pZF90b2tlbl9oaW50PSIpLmNvbmNhdChzLCImcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpPSIpLmNvbmNhdCh1LCImc3RhdGU9c2lnbl9vdXRfc3VjY2VzcyIpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJzaWduT3V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuZ2V0U2lnbk91dFVSTCgpO2Nhc2UgMjpyZXR1cm4gdD1lLnNlbnQsZS5hYnJ1cHQoInJldHVybiIsKHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmNsZWFyVXNlclNlc3Npb25EYXRhKCksdCkpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOmlmKHQudDE9ZT10LnNlbnQsdC50MD1udWxsPT09dC50MSx0LnQwKXt0Lm5leHQ9NjticmVha310LnQwPXZvaWQgMD09PWU7Y2FzZSA2OmlmKCF0LnQwKXt0Lm5leHQ9MTA7YnJlYWt9dC50Mj12b2lkIDAsdC5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6dC50Mj1lLmFjY2Vzc190b2tlbjtjYXNlIDExOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnQyKTtjYXNlIDEyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS50MD1Cb29sZWFuLGUubmV4dD0zLHRoaXMuZ2V0QWNjZXNzVG9rZW4oKTtjYXNlIDM6cmV0dXJuIGUudDE9ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLCgwLGUudDApKGUudDEpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJwa2NlX2NvZGVfdmVyaWZpZXIiKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJzZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoInBrY2VfY29kZV92ZXJpZmllciIsZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToidXBkYXRlQ29uZmlnIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0Q29uZmlnRGF0YShlKTtjYXNlIDI6aWYoIWUub3ZlcnJpZGVXZWxsRW5kcG9pbnRDb25maWcpe3QubmV4dD0xMzticmVha31pZih0LnQwPW51bGw9PWU/dm9pZCAwOmUuZW5kcG9pbnRzLCF0LnQwKXt0Lm5leHQ9MTE7YnJlYWt9cmV0dXJuIHQudDE9dGhpcy5fZGF0YUxheWVyLHQubmV4dD04LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVFbmRwb2ludHMoe30pO2Nhc2UgODpyZXR1cm4gdC50Mj10LnNlbnQsdC5uZXh0PTExLHQudDEuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbCh0LnQxLHQudDIpO2Nhc2UgMTE6dC5uZXh0PTE3O2JyZWFrO2Nhc2UgMTM6aWYodC50Mz1udWxsPT1lP3ZvaWQgMDplLmVuZHBvaW50cywhdC50Myl7dC5uZXh0PTE3O2JyZWFrfXJldHVybiB0Lm5leHQ9MTcsdGhpcy5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSghMCk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLGtvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe18odGhpcyxlKSx0aGlzLl9pZD10LHRoaXMuX3N0b3JlPXJ9cmV0dXJuIHcoZSxbe2tleToic2V0RGF0YUluQnVsayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBvLGEscyx1O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihuLnQxPXI9bi5zZW50LG4udDA9bnVsbCE9PW4udDEsIW4udDApe24ubmV4dD02O2JyZWFrfW4udDA9dm9pZCAwIT09cjtjYXNlIDY6aWYoIW4udDApe24ubmV4dD0xMDticmVha31uLnQyPXIsbi5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6bi50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIG89bi50MixhPW8mJkpTT04ucGFyc2Uobykscz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSksdCksdT1KU09OLnN0cmluZ2lmeShzKSxuLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLHUpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG47cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIG8oKXt2YXIgYSxzLHUsYztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYoby50MT1uPW8uc2VudCxvLnQwPW51bGwhPT1vLnQxLCFvLnQwKXtvLm5leHQ9NjticmVha31vLnQwPXZvaWQgMCE9PW47Y2FzZSA2OmlmKCFvLnQwKXtvLm5leHQ9MTA7YnJlYWt9by50Mj1uLG8ubmV4dD0xMTticmVhaztjYXNlIDEwOm8udDI9bnVsbDtjYXNlIDExOnJldHVybiBhPW8udDIscz1hJiZKU09OLnBhcnNlKGEpLHU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLGIoe30sdCxyKSksYz1KU09OLnN0cmluZ2lmeSh1KSxvLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLGMpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBvLnN0b3AoKX19KSxvLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIG8sYSxzLHU7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKG4udDE9cj1uLnNlbnQsbi50MD1udWxsIT09bi50MSwhbi50MCl7bi5uZXh0PTY7YnJlYWt9bi50MD12b2lkIDAhPT1yO2Nhc2UgNjppZighbi50MCl7bi5uZXh0PTEwO2JyZWFrfW4udDI9cixuLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpuLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gbz1uLnQyLGE9byYmSlNPTi5wYXJzZShvKSxkZWxldGUocz1PYmplY3QuYXNzaWduKHt9LGEpKVt0XSx1PUpTT04uc3RyaW5naWZ5KHMpLG4ubmV4dD0xOCx0aGlzLl9zdG9yZS5zZXREYXRhKGUsdSk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiX3Jlc29sdmVLZXkiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiIiLmNvbmNhdChlLCItIikuY29uY2F0KHRoaXMuX2lkKX19LHtrZXk6InNldENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KHVyLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkodXIuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleSh1ci5UZW1wb3JhcnlEYXRhKSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KHVyLlNlc3Npb25EYXRhKSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleSh1ci5Db25maWdEYXRhKSk7Y2FzZSAzOmlmKHQudDI9ZT10LnNlbnQsdC50MT1udWxsIT09dC50MiwhdC50MSl7dC5uZXh0PTc7YnJlYWt9dC50MT12b2lkIDAhPT1lO2Nhc2UgNzppZighdC50MSl7dC5uZXh0PTExO2JyZWFrfXQudDM9ZSx0Lm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTp0LnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gdC50ND10LnQzLHQuYWJydXB0KCJyZXR1cm4iLHQudDAucGFyc2UuY2FsbCh0LnQwLHQudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUpTT04sdC5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KHVyLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAzOmlmKHQudDI9ZT10LnNlbnQsdC50MT1udWxsIT09dC50MiwhdC50MSl7dC5uZXh0PTc7YnJlYWt9dC50MT12b2lkIDAhPT1lO2Nhc2UgNzppZighdC50MSl7dC5uZXh0PTExO2JyZWFrfXQudDM9ZSx0Lm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTp0LnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gdC50ND10LnQzLHQuYWJydXB0KCJyZXR1cm4iLHQudDAucGFyc2UuY2FsbCh0LnQwLHQudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuVGVtcG9yYXJ5RGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleSh1ci5TZXNzaW9uRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlQ29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuQ29uZmlnRGF0YSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KHVyLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleSh1ci5UZW1wb3JhcnlEYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuU2Vzc2lvbkRhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleSh1ci5Db25maWdEYXRhKSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiZKU09OLnBhcnNlKHIpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHImJkpTT04ucGFyc2UocilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KHVyLlRlbXBvcmFyeURhdGEpKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHImJkpTT04ucGFyc2UocilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleSh1ci5TZXNzaW9uRGF0YSkpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsciYmSlNPTi5wYXJzZShyKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJzZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleSh1ci5Db25maWdEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KHVyLk9JRENQcm92aWRlck1ldGFEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkodXIuVGVtcG9yYXJ5RGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleSh1ci5TZXNzaW9uRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleSh1ci5Db25maWdEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkodXIuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KHVyLlRlbXBvcmFyeURhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlU2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleSh1ci5TZXNzaW9uRGF0YSksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0pLGV9KCkseG89e2Nsb2NrVG9sZXJhbmNlOjMwMCxlbmFibGVQS0NFOiEwLHJlc3BvbnNlTW9kZTpRdC5xdWVyeSxzY29wZTpbIm9wZW5pZCJdLHNlbmRDb29raWVzSW5SZXF1ZXN0czohMCx2YWxpZGF0ZUlEVG9rZW46ITB9LF9vPWZ1bmN0aW9uKCl7Ci8qKgoJICAgICAgICogVGhpcyBpcyB0aGUgY29uc3RydWN0b3IgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiB0aGUgLgoJICAgICAgICoKCSAgICAgICAqIEBwYXJhbSB7U3RvcmV9IHN0b3JlIC0gVGhlIHN0b3JlIG9iamVjdC4KCSAgICAgICAqCgkgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICogYGBgCgkgICAgICAgKiBjb25zdCBfc3RvcmU6IFN0b3JlID0gbmV3IERhdGFTdG9yZSgpOwoJICAgICAgICogY29uc3QgYXV0aCA9IG5ldyBBc2dhcmRlb0F1dGhDbGllbnQ8Q3VzdG9tQ2xpZW50Q29uZmlnPihfc3RvcmUpOwoJICAgICAgICogYGBgCgkgICAgICAgKgoJICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2NvbnN0cnVjdG9yCgkgICAgICAgKiBAcHJlc2VydmUKCSAgICAgICAqLwpmdW5jdGlvbiBlKHQpe18odGhpcyxlKSxlLl9pbnN0YW5jZUlEP2UuX2luc3RhbmNlSUQrPTE6ZS5faW5zdGFuY2VJRD0wLHRoaXMuX2RhdGFMYXllcj1uZXcga28oImluc3RhbmNlXyIuY29uY2F0KGUuX2luc3RhbmNlSUQpLHQpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZT1uZXcgYm8odGhpcy5fZGF0YUxheWVyKX0KLyoqCgkgICAgICAgKgoJICAgICAgICogVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgdGhlIFNESyB3aXRoIHRoZSBjb25maWcgZGF0YS4KCSAgICAgICAqCgkgICAgICAgKiBAcGFyYW0ge0F1dGhDbGllbnRDb25maWc8VD59IGNvbmZpZyAtIFRoZSBjb25maWcgb2JqZWN0IHRvIGluaXRpYWxpemUgd2l0aC4KCSAgICAgICAqCgkgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICogY29uc3QgY29uZmlnID0gewoJICAgICAgICogICAgIHNpZ25JblJlZGlyZWN0VVJMOiAiaHR0cDovL2xvY2FsaG9zdDozMDAwL3NpZ24taW4iLAoJICAgICAgICogICAgIGNsaWVudElEOiAiY2xpZW50IElEIiwKCSAgICAgICAqICAgICBzZXJ2ZXJPcmlnaW46ICJodHRwczovL2xvY2FsaG9zdDo5NDQzIgoJICAgICAgICogfQoJICAgICAgICoKCSAgICAgICAqIGF3YWl0IGF1dGguaW5pdGlhbGl6ZShjb25maWcpOwoJICAgICAgICoKCSAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNpbml0aWFsaXplCgkgICAgICAgKgoJICAgICAgICogQHByZXNlcnZlCgkgICAgICAgKi9yZXR1cm4gdyhlLFt7a2V5OiJpbml0aWFsaXplIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyLG47cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIG8oKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30seG8pLGUpLHtzY29wZTpbXS5jb25jYXQobChudWxsIT09KHQ9eG8uc2NvcGUpJiZ2b2lkIDAhPT10P3Q6W10pLGwobnVsbCE9PShuPW51bGw9PT0ocj1lLnNjb3BlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiEobnVsbD09PSh0PW51bGw9PXhvP3ZvaWQgMDp4by5zY29wZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaW5jbHVkZXMoZSkpfSkpKSYmdm9pZCAwIT09bj9uOltdKSl9KSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyx0aGlzKX0pKSl9Ci8qKgoJICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBgRGF0YUxheWVyYCBvYmplY3QgdGhhdCBhbGxvd3MgeW91IHRvIGFjY2VzcyBhdXRoZW50aWNhdGlvbiBkYXRhLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcmV0dXJuIHtEYXRhTGF5ZXJ9IC0gVGhlIGBEYXRhTGF5ZXJgIG9iamVjdC4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGNvbnN0IGRhdGEgPSBhdXRoLmdldERhdGFMYXllcigpOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldERhdGFMYXllcgoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6ImdldERhdGFMYXllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YUxheWVyfQovKioKCSAgICAgICAgICogVGhpcyBpcyBhbiBhc3luYyBtZXRob2QgdGhhdCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGF1dGhvcml6YXRpb24gVVJMLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcGFyYW0ge0dldEF1dGhVUkxDb25maWd9IGNvbmZpZyAtIChPcHRpb25hbCkgQSBjb25maWcgb2JqZWN0IHRvIGZvcmNlIGluaXRpYWxpemF0aW9uIGFuZCBwYXNzCgkgICAgICAgICAqIGN1c3RvbSBwYXRoIHBhcmFtZXRlcnMgc3VjaCBhcyB0aGUgZmlkcCBwYXJhbWV0ZXIuCgkgICAgICAgICAqCgkgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhdXRob3JpemF0aW9uIFVSTC4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGF1dGguZ2V0QXV0aG9yaXphdGlvblVSTCgpLnRoZW4oKHVybCk9PnsKCSAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHVybCk7CgkgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKCSAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwoJICAgICAgICAgKiB9KTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRBdXRob3JpemF0aW9uVVJMCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIG51bGw9PShyPU9iamVjdC5hc3NpZ24oe30sZSkpfHxkZWxldGUgci5mb3JjZUluaXQsdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDQ6aWYoIXQuc2VudCl7dC5uZXh0PTg7YnJlYWt9dC50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChyKSx0Lm5leHQ9OTticmVhaztjYXNlIDg6dC50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEobnVsbD09ZT92b2lkIDA6ZS5mb3JjZUluaXQpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKHIpfSkpO2Nhc2UgOTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC50MCk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfQovKioKCSAgICAgICAgICogVGhpcyBpcyBhbiBhc3luYyBtZXRob2QgdGhhdCBzZW5kcyBhIHJlcXVlc3QgdG8gb2J0YWluIHRoZSBhY2Nlc3MgdG9rZW4gYW5kIHJldHVybnMgYSBQcm9taXNlCgkgICAgICAgICAqIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG9rZW4gYW5kIG90aGVyIHJlbGV2YW50IGRhdGEuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhdXRob3JpemF0aW9uQ29kZSAtIFRoZSBhdXRob3JpemF0aW9uIGNvZGUuCgkgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZXNzaW9uU3RhdGUgLSBUaGUgc2Vzc2lvbiBzdGF0ZS4KCSAgICAgICAgICoKCSAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxUb2tlblJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0b2tlbiByZXNwb25zZS4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGF1dGgucmVxdWVzdEFjY2Vzc1Rva2VuKGF1dGhDb2RlLCBzZXNzaW9uU3RhdGUpLnRoZW4oKHRva2VuKT0+ewoJICAgICAgICAgKiAgLy8gY29uc29sZS5sb2codG9rZW4pOwoJICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CgkgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKCSAgICAgICAgICogfSk7CgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKgoJICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVxdWVzdEFjY2Vzc1Rva2VuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG49dGhpcztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDI6aWYoIXIuc2VudCl7ci5uZXh0PTY7YnJlYWt9ci50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCksci5uZXh0PTc7YnJlYWs7Y2FzZSA2OnIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCExKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBuLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCl9KSk7Y2FzZSA3OnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQwKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgYXV0aGVudGljYXRpb24gZGF0YSBhbmQgcmV0dXJucyB0aGUgc2lnbi1vdXQgVVJMLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2lnbi1vdXQgVVJMLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICogY29uc3Qgc2lnbk91dFVybCA9IGF3YWl0IGF1dGguc2lnbk91dCgpOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3NpZ25PdXQKCSAgICAgICAgICoKCSAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAoJICAgICAgICAgKgoJICAgICAgICAgKiBAcHJlc2VydmUKCSAgICAgICAgICovfSx7a2V5OiJzaWduT3V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zaWduT3V0KCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfQovKioKCSAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2lnbi1vdXQgVVJMLgoJICAgICAgICAgKgoJICAgICAgICAgKiAqKlRoaXMgZG9lc24ndCBjbGVhciB0aGUgYXV0aGVudGljYXRpb24gZGF0YS4qKgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgc2lnbi1vdXQgVVJMLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICogY29uc3Qgc2lnbk91dFVybCA9IGF3YWl0IGF1dGguZ2V0U2lnbk91dFVSTCgpOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldFNpZ25PdXRVUkwKCSAgICAgICAgICoKCSAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAoJICAgICAgICAgKgoJICAgICAgICAgKiBAcHJlc2VydmUKCSAgICAgICAgICovfSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRTaWduT3V0VVJMKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfQovKioKCSAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBPSURDIHNlcnZpY2UgZW5kcG9pbnRzIHRoYXQgYXJlIGZldGNoZWQgZnJvbSB0aGUgYC53ZWxsLWtub3duYCBlbmRwb2ludC4KCSAgICAgICAgICoKCSAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxPSURDRW5kcG9pbnRzPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBPSURDIHNlcnZpY2UgZW5kcG9pbnRzLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICogY29uc3QgZW5kcG9pbnRzID0gYXdhaXQgYXV0aC5nZXRPSURDU2VydmljZUVuZHBvaW50cygpOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldE9JRENTZXJ2aWNlRW5kcG9pbnRzCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfQovKioKCSAgICAgICAgICogVGhpcyBtZXRob2QgZGVjb2RlcyB0aGUgcGF5bG9hZCBvZiB0aGUgSUQgdG9rZW4gYW5kIHJldHVybnMgaXQuCgkgICAgICAgICAqCgkgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8RGVjb2RlZElEVG9rZW5QYXlsb2FkPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBkZWNvZGVkIElEIHRva2VuIHBheWxvYWQuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBjb25zdCBkZWNvZGVkSWRUb2tlbiA9IGF3YWl0IGF1dGguZ2V0RGVjb2RlZElEVG9rZW4oKTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXREZWNvZGVkSURUb2tlbgoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXREZWNvZGVkSURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIElEIHRva2VuLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgSUQgdG9rZW4uCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBjb25zdCBpZFRva2VuID0gYXdhaXQgYXV0aC5nZXRJRFRva2VuKCk7CgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKgoJICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0SURUb2tlbgoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9Ci8qKgoJICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBiYXNpYyB1c2VyIGluZm9ybWF0aW9uIG9idGFpbmVkIGZyb20gdGhlIElEIHRva2VuLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPEJhc2ljVXNlckluZm8+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGJhc2ljIHVzZXIgaW5mb3JtYXRpb24uCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBjb25zdCB1c2VySW5mbyA9IGF3YWl0IGF1dGguZ2V0QmFzaWNVc2VySW5mbygpOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldEJhc2ljVXNlckluZm8KCSAgICAgICAgICoKCSAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAoJICAgICAgICAgKgoJICAgICAgICAgKiBAcHJlc2VydmUKCSAgICAgICAgICovfSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfQovKioKCSAgICAgICAgICogVGhpcyBtZXRob2QgcmV2b2tlcyB0aGUgYWNjZXNzIHRva2VuLgoJICAgICAgICAgKgoJICAgICAgICAgKiAqKlRoaXMgbWV0aG9kIGFsc28gY2xlYXJzIHRoZSBhdXRoZW50aWNhdGlvbiBkYXRhLioqCgkgICAgICAgICAqCgkgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8QXhpb3NSZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmV0dXJucyB0aGUgcmVzcG9uc2Ugb2YgdGhlIHJldm9rZS1hY2Nlc3MtdG9rZW4gcmVxdWVzdC4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGF1dGgucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChyZXNwb25zZSk9PnsKCSAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTsKCSAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewoJICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CgkgICAgICAgICAqIH0pOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3Jldm9rZUFjY2Vzc1Rva2VuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToicmV2b2tlQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXZva2VBY2Nlc3NUb2tlbigpfQovKioKCSAgICAgICAgICogVGhpcyBtZXRob2QgcmVmcmVzaGVzIHRoZSBhY2Nlc3MgdG9rZW4gYW5kIHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgbmV3IGFjY2VzcwoJICAgICAgICAgKiB0b2tlbiBhbmQgb3RoZXIgcmVsZXZhbnQgZGF0YS4KCSAgICAgICAgICoKCSAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxUb2tlblJlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSB0b2tlbiByZXNwb25zZS4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGF1dGgucmVmcmVzaEFjY2Vzc1Rva2VuKCkudGhlbigocmVzcG9uc2UpPT57CgkgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7CgkgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKCSAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwoJICAgICAgICAgKiB9KTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZWZyZXNoQWNjZXNzVG9rZW4KCSAgICAgICAgICoKCSAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAoJICAgICAgICAgKgoJICAgICAgICAgKiBAcHJlc2VydmUKCSAgICAgICAgICovfSx7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZWZyZXNoQWNjZXNzVG9rZW4oKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGFjY2VzcyB0b2tlbi4KCSAgICAgICAgICoKCSAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIGFjY2VzcyB0b2tlbi4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgYXV0aC5nZXRBY2Nlc3NUb2tlbigpOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldEFjY2Vzc1Rva2VuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEFjY2Vzc1Rva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfQovKioKCSAgICAgICAgICogVGhpcyBtZXRob2Qgc2VuZHMgYSBjdXN0b20tZ3JhbnQgcmVxdWVzdCBhbmQgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZQoJICAgICAgICAgKiBkZXBlbmRpbmcgb24gdGhlIGNvbmZpZyBwYXNzZWQuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBwYXJhbSB7Q3VzdG9tR3JhbnRDb25maWd9IGNvbmZpZyAtIEEgY29uZmlnIG9iamVjdCBjb250YWluaW5nIHRoZSBjdXN0b20gZ3JhbnQgY29uZmlndXJhdGlvbnMuCgkgICAgICAgICAqCgkgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZSB8IEF4aW9zUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHJlc3BvbnNlIGRlcGVuZGluZwoJICAgICAgICAgKiBvbiB5b3VyIGNvbmZpZ3VyYXRpb25zLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICogY29uc3QgY29uZmlnID0gewoJICAgICAgICAgKiAgIGF0dGFjaFRva2VuOiBmYWxzZSwKCSAgICAgICAgICogICBkYXRhOiB7CgkgICAgICAgICAqICAgICAgIGNsaWVudF9pZDogInt7Y2xpZW50SUR9fSIsCgkgICAgICAgICAqICAgICAgIGdyYW50X3R5cGU6ICJhY2NvdW50X3N3aXRjaCIsCgkgICAgICAgICAqICAgICAgIHNjb3BlOiAie3tzY29wZX19IiwKCSAgICAgICAgICogICAgICAgdG9rZW46ICJ7e3Rva2VufX0iLAoJICAgICAgICAgKiAgIH0sCgkgICAgICAgICAqICAgaWQ6ICJhY2NvdW50LXN3aXRjaCIsCgkgICAgICAgICAqICAgcmV0dXJuUmVzcG9uc2U6IHRydWUsCgkgICAgICAgICAqICAgcmV0dXJuc1Nlc3Npb246IHRydWUsCgkgICAgICAgICAqICAgc2lnbkluUmVxdWlyZWQ6IHRydWUKCSAgICAgICAgICogfQoJICAgICAgICAgKgoJICAgICAgICAgKiBhdXRoLnJlcXVlc3RDdXN0b21HcmFudChjb25maWcpLnRoZW4oKHJlc3BvbnNlKT0+ewoJICAgICAgICAgKiAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UpOwoJICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CgkgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKCSAgICAgICAgICogfSk7CgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKgoJICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVxdWVzdEN1c3RvbUdyYW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RDdXN0b21HcmFudChlKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZCBvciBub3QuCgkgICAgICAgICAqCgkgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8Ym9vbGVhbj59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBgdHJ1ZWAgaWYgdGhlIHVzZXIgaXMgYXV0aGVudGljYXRlZCwgYGZhbHNlYCBvdGhlcndpc2UuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBhd2FpdCBhdXRoLmlzQXV0aGVudGljYXRlZCgpOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2lzQXV0aGVudGljYXRlZAoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6ImlzQXV0aGVudGljYXRlZCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuaXNBdXRoZW50aWNhdGVkKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfQovKioKCSAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgUEtDRSBjb2RlIGdlbmVyYXRlZCBkdXJpbmcgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGF1dGhlbnRpY2F0aW9uIFVSTC4KCSAgICAgICAgICoKCSAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIFBLQ0UgY29kZS4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGNvbnN0IHBrY2UgPSBhd2FpdCBnZXRQS0NFQ29kZSgpOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldFBLQ0VDb2RlCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToiZ2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldFBLQ0VDb2RlKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfQovKioKCSAgICAgICAgICogVGhpcyBtZXRob2Qgc2V0cyB0aGUgUEtDRSBjb2RlIHRvIHRoZSBkYXRhIHN0b3JlLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGtjZSAtIFRoZSBQS0NFIGNvZGUuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBhd2FpdCBhdXRoLnNldFBLQ0VDb2RlKCJwa2NlX2NvZGUiKQoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3NldFBLQ0VDb2RlCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToic2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zZXRQS0NFQ29kZShlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgaWYgdGhlIHNpZ24tb3V0IGlzIHN1Y2Nlc3NmdWwgb3Igbm90LgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbk91dFJlZGlyZWN0VXJsIC0gVGhlIFVSTCB0byB3aGljaCB0aGUgdXNlciBoYXMgYmVlbiByZWRpcmVjdGVkIHRvIGFmdGVyIHNpZ25pbmctb3V0LgoJICAgICAgICAgKgoJICAgICAgICAgKiAqKlRoZSBzZXJ2ZXIgYXBwZW5kcyBwYXRoIHBhcmFtZXRlcnMgdG8gdGhlIGBzaWduT3V0UmVkaXJlY3RVUkxgIGFuZCB0aGVzZSBwYXRoIHBhcmFtZXRlcnMKCSAgICAgICAgICogIGFyZSByZXF1aXJlZCBmb3IgdGhpcyBtZXRob2QgdG8gZnVuY3Rpb24uKioKCSAgICAgICAgICoKCSAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gLSBgdHJ1ZWAgaWYgc3VjY2Vzc2Z1bCwgYGZhbHNlYCBvdGhlcndpc2UuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNpc1NpZ25PdXRTdWNjZXNzZnVsCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToidXBkYXRlQ29uZmlnIix2YWx1ZToKLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgcGFzc2VkIGludG8gdGhlIGNvbnN0cnVjdG9yIHdoZW4gaW5zdGFudGlhdGluZyB0aGlzIGNsYXNzLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcGFyYW0ge1BhcnRpYWw8QXV0aENsaWVudENvbmZpZzxUPj59IGNvbmZpZyAtIEEgY29uZmlnIG9iamVjdCB0byB1cGRhdGUgdGhlIFNESyBjb25maWd1cmF0aW9ucyB3aXRoLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICogY29uc3QgY29uZmlnID0gewoJICAgICAgICAgKiAgICAgc2lnbkluUmVkaXJlY3RVUkw6ICJodHRwOi8vbG9jYWxob3N0OjMwMDAvc2lnbi1pbiIsCgkgICAgICAgICAqICAgICBjbGllbnRJRDogImNsaWVudCBJRCIsCgkgICAgICAgICAqICAgICBzZXJ2ZXJPcmlnaW46ICJodHRwczovL2xvY2FsaG9zdDo5NDQzIgoJICAgICAgICAgKiB9CgkgICAgICAgICAqCgkgICAgICAgICAqIGF3YWl0IGF1dGgudXBkYXRlQ29uZmlnKGNvbmZpZyk7CgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjdXBkYXRlQ29uZmlnCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqLwpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUudXBkYXRlQ29uZmlnKGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dLFt7a2V5OiJpc1NpZ25PdXRTdWNjZXNzZnVsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgVVJMKGUpLHI9dC5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpLG49Qm9vbGVhbih0LnNlYXJjaFBhcmFtcy5nZXQoImVycm9yIikpO3JldHVybiEhciYmInNpZ25fb3V0X3N1Y2Nlc3MiPT09ciYmIW59fV0pLGV9KCksU289ImluaXQiOyFmdW5jdGlvbihlKXtlLkxvY2FsU3RvcmFnZT0ibG9jYWxTdG9yYWdlIixlLlNlc3Npb25TdG9yYWdlPSJzZXNzaW9uU3RvcmFnZSIsZS5XZWJXb3JrZXI9IndlYldvcmtlciIsZS5Ccm93c2VyTWVtb3J5PSJicm93c2VyTWVtb3J5In0oeW98fCh5bz17fSkpLGZ1bmN0aW9uKGUpe2UuU2lnbkluPSJzaWduLWluIixlLlNpZ25PdXQ9InNpZ24tb3V0IixlLkluaXRpYWxpemU9ImluaXRpYWxpemUiLGUuSHR0cFJlcXVlc3RTdGFydD0iaHR0cC1yZXF1ZXN0LXN0YXJ0IixlLkh0dHBSZXF1ZXN0RmluaXNoPSJodHRwLXJlcXVlc3QtZmluaXNoIixlLkh0dHBSZXF1ZXN0RXJyb3I9Imh0dHAtcmVxdWVzdC1lcnJvciIsZS5IdHRwUmVxdWVzdFN1Y2Nlc3M9Imh0dHAtcmVxdWVzdC1zdWNjZXNzIixlLlJldm9rZUFjY2Vzc1Rva2VuPSJyZXZva2UtYWNjZXNzLXRva2VuIixlLkN1c3RvbUdyYW50PSJjdXN0b20tZ3JhbnQifShtb3x8KG1vPXt9KSk7dmFyIEVvPSJjdXN0b21fZ3JhbnRfY29uZmlnIjtmdW5jdGlvbiBBbyhlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj1PKGUpO2lmKHQpe3ZhciBvPU8odGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxvKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIEModGhpcyxyKX19dmFyIFRvLFJvPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1BbyhyKTtmdW5jdGlvbiByKGUsbixvLGksYSxzKXt2YXIgdTtyZXR1cm4gXyh0aGlzLHIpLCh1PXQuY2FsbCh0aGlzLG51bGwhPWk/aTpudWxsPT1zP3ZvaWQgMDpzLm1lc3NhZ2UpKS5uYW1lPXUuY29uc3RydWN0b3IubmFtZSx1LmNvZGU9ZSx1LmZpbGU9bix1Lm1ldGhvZD1vLHUuZXJyb3I9cyx1LmRlc2NyaXB0aW9uPWEsT2JqZWN0LnNldFByb3RvdHlwZU9mKEUodSksKHRoaXMgaW5zdGFuY2VvZiByP3RoaXMuY29uc3RydWN0b3I6dm9pZCAwKS5wcm90b3R5cGUpLHV9cmV0dXJuIHJ9KEwoRXJyb3IpKSxDbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7Xyh0aGlzLGUpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50PXQsdGhpcy5fZGF0YUxheWVyPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldERhdGFMYXllcigpfXJldHVybiB3KGUsW3trZXk6InJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixvPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMjppZighKHQ9ZS5zZW50KS5yZWZyZXNoX3Rva2VuKXtlLm5leHQ9OTticmVha31yZXR1cm4gcj1wYXJzZUludCh0LmV4cGlyZXNfaW4pLG49c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gYShvLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSksMWUzKihyPD0xMD9yOnItMTApKSxlLm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihmcixKU09OLnN0cmluZ2lmeShuKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclJlZnJlc2hUb2tlblRpbWVvdXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihmcik7Y2FzZSAyOmlmKCFlLnNlbnQpe2UubmV4dD05O2JyZWFrfXJldHVybiBlLnQwPUpTT04sZS5uZXh0PTYsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoZnIpO2Nhc2UgNjplLnQxPWUuc2VudCx0PWUudDAucGFyc2UuY2FsbChlLnQwLGUudDEpLGNsZWFyVGltZW91dCh0KTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19XSksZX0oKSxQbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtfKHRoaXMsZSl9cmV0dXJuIHcoZSxudWxsLFt7a2V5OiJnZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm57YmxvYjoobnVsbD09ZT92b2lkIDA6ZS5kYXRhKWluc3RhbmNlb2YgQmxvYj9udWxsPT1lP3ZvaWQgMDplLmRhdGE6bnVsbCxkYXRhOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksc3VjY2VzczohMH19fSx7a2V5OiJnZW5lcmF0ZUZhaWx1cmVNZXNzYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4obnVsbD09ZT92b2lkIDA6ZS50b0pTT04pJiZkZWxldGUgZS50b0pTT04se2Vycm9yOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksc3VjY2VzczohMX19fV0pLGV9KCk7dmFyIE9vPVRvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe18odGhpcyxlKSx0aGlzLmF0dGFjaFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSx0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMuaW5pdD10aGlzLmluaXQuYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjay5iaW5kKHRoaXMpfXJldHVybiB3KGUsW3trZXk6InJlcXVlc3RIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbjtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5hdHRhY2hUb2tlbihlKTtjYXNlIDI6cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUuc2hvdWxkRW5jb2RlVG9Gb3JtRGF0YSkmJihyPW51bGw9PWU/dm9pZCAwOmUuZGF0YSxuPW5ldyBGb3JtRGF0YSxPYmplY3Qua2V5cyhyKS5mb3JFYWNoKChmdW5jdGlvbihlKXtuLmFwcGVuZChlLHJbZV0pfSkpLGUuZGF0YT1uKSxUby5pc0hhbmRsZXJFbmFibGVkJiZ0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayhlKSx0LmFicnVwdCgicmV0dXJuIixlKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImVycm9ySGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhyb3cgVG8uaXNIYW5kbGVyRW5hYmxlZCYmKHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiZ0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrKGUpLHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJnRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrKCkpLGV9fSx7a2V5OiJzdWNjZXNzSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFRvLmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2smJnRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOlRvLmlzSGFuZGxlckVuYWJsZWQ9ZSx0aGlzLmF0dGFjaFRva2VuPXQ7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJlbmFibGVIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe1RvLmlzSGFuZGxlckVuYWJsZWQ9ITB9fSx7a2V5OiJkaXNhYmxlSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oKXtUby5pc0hhbmRsZXJFbmFibGVkPSExfX0se2tleToiZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06VG8uREVGQVVMVF9IQU5ETEVSX0RJU0FCTEVfVElNRU9VVDtUby5pc0hhbmRsZXJFbmFibGVkPSExLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7VG8uaXNIYW5kbGVyRW5hYmxlZD0hMH0pLGUpfX0se2tleToic2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrPWV9fV0sW3trZXk6ImdldEluc3RhbmNlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuYXhpb3NJbnN0YW5jZXx8KHRoaXMuYXhpb3NJbnN0YW5jZT10ci5jcmVhdGUoe3dpdGhDcmVkZW50aWFsczohMH0pLHRoaXMuY2xpZW50SW5zdGFuY2V8fCh0aGlzLmNsaWVudEluc3RhbmNlPW5ldyBUbyksdGhpcy5heGlvc0luc3RhbmNlLmludGVyY2VwdG9ycy5yZXF1ZXN0LnVzZSgoZnVuY3Rpb24odCl7cmV0dXJuIGEoZSx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLmNsaWVudEluc3RhbmNlLnJlcXVlc3RIYW5kbGVyKHQpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2Uuc3VjY2Vzc0hhbmRsZXIodCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2UuZXJyb3JIYW5kbGVyKHQpfSkpLHRoaXMuYXhpb3NJbnN0YW5jZS5hbGw9dHIuYWxsLHRoaXMuYXhpb3NJbnN0YW5jZS5zcHJlYWQ9dHIuc3ByZWFkLHRoaXMuYXhpb3NJbnN0YW5jZS5pbml0PXRoaXMuY2xpZW50SW5zdGFuY2UuaW5pdCx0aGlzLmF4aW9zSW5zdGFuY2UuZW5hYmxlSGFuZGxlcj10aGlzLmNsaWVudEluc3RhbmNlLmVuYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyPXRoaXMuY2xpZW50SW5zdGFuY2UuZGlzYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQ9dGhpcy5jbGllbnRJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0LHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spLHRoaXMuYXhpb3NJbnN0YW5jZX19XSksZX0oKTtPby5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUPTFlMyxPbz1Ubz1mdW5jdGlvbihlLHQscixvKXt2YXIgaSxhPWFyZ3VtZW50cy5sZW5ndGgscz1hPDM/dDpudWxsPT09bz9vPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTpvO2lmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdD8idW5kZWZpbmVkIjpuKFJlZmxlY3QpKSYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpcz1SZWZsZWN0LmRlY29yYXRlKGUsdCxyLG8pO2Vsc2UgZm9yKHZhciB1PWUubGVuZ3RoLTE7dT49MDt1LS0pKGk9ZVt1XSkmJihzPShhPDM/aShzKTphPjM/aSh0LHIscyk6aSh0LHIpKXx8cyk7cmV0dXJuIGE+MyYmcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixzKSxzfShbZnVuY3Rpb24oZSl7fV0sT28pO3ZhciBEbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtfKHRoaXMsZSksdGhpcy5fZGF0YT1uZXcgTWFwfXJldHVybiB3KGUsW3trZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnRoaXMuX2RhdGEuc2V0KGUsdCk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXREYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyO3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsbnVsbCE9PShyPW51bGw9PT0odD10aGlzLl9kYXRhKXx8dm9pZCAwPT09dD92b2lkIDA6dC5nZXQoZSkpJiZ2b2lkIDAhPT1yP3I6Int9Iik7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5fZGF0YS5kZWxldGUoZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0pLGV9KCk7ZnVuY3Rpb24gSW8oZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gVW8oZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7Ik9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKCJNYXAiPT09cnx8IlNldCI9PT1yKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKCJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QocikpcmV0dXJuIFVvKGUsdCl9KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxvPWZ1bmN0aW9uKCl7fTtyZXR1cm57czpvLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjpvfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksYT0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gYT1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXthfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBVbyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufXZhciBNbyxMbz1mdW5jdGlvbihlKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLG8scyx1LGMsZixoLHAsZCx2LGcseSxtLHcsYixrLHgsXyxTLEUsQSxULFIsQyxQLE8sRCxJLFUsTTtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gcj1uZXcgRG8sbj1uZXcgX28ociksdC5uZXh0PTQsbi5pbml0aWFsaXplKGUpO2Nhc2UgNDppZihvPW5ldyBDbyhuKSxzPW4uZ2V0RGF0YUxheWVyKCksdT1Pby5nZXRJbnN0YW5jZSgpLGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIU9iamVjdC5hc3NpZ24oe2F0dGFjaFRva2VuOiEwfSxlKS5hdHRhY2hUb2tlbil7dC5uZXh0PTExO2JyZWFrfXJldHVybiB0LnQwPU9iamVjdCx0LnQxPU9iamVjdC5hc3NpZ24oe30sZS5oZWFkZXJzKSx0LnQyPSJCZWFyZXIgIix0Lm5leHQ9NyxuLmdldEFjY2Vzc1Rva2VuKCk7Y2FzZSA3OnQudDM9dC5zZW50LHQudDQ9dC50Mi5jb25jYXQuY2FsbCh0LnQyLHQudDMpLHQudDU9e0F1dGhvcml6YXRpb246dC50NH0sZS5oZWFkZXJzPXQudDAuYXNzaWduLmNhbGwodC50MCx0LnQxLHQudDUpO2Nhc2UgMTE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHQudDA9bnVsbD09dT92b2lkIDA6dS5pbml0LCF0LnQwKXt0Lm5leHQ9MTI7YnJlYWt9cmV0dXJuIHQubmV4dD0xMix1LmluaXQoITAsYyk7Y2FzZSAxMjpyZXR1cm4gZj1mdW5jdGlvbihlKXsobnVsbD09dT92b2lkIDA6dS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2spJiZ1LnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhlKX0saD1mdW5jdGlvbihlKXsobnVsbD09dT92b2lkIDA6dS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaykmJnUuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSl9LHA9ZnVuY3Rpb24oZSl7KG51bGw9PXU/dm9pZCAwOnUuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaykmJnUuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhlKX0sZD1mdW5jdGlvbihlKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLG8sYSxjLGYsaCxwO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBhPSExLHQubmV4dD0zLHMuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMzpyZXR1cm4gYz10LnNlbnQsZj0wLHQudDA9W10sdC50MT1sLHQubmV4dD05LHMuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgOTppZih0LnQ0PXI9dC5zZW50LHQudDM9bnVsbD09PXQudDQsdC50Myl7dC5uZXh0PTEzO2JyZWFrfXQudDM9dm9pZCAwPT09cjtjYXNlIDEzOmlmKCF0LnQzKXt0Lm5leHQ9MTc7YnJlYWt9dC50NT12b2lkIDAsdC5uZXh0PTE4O2JyZWFrO2Nhc2UgMTc6dC50NT1yLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDE4OmlmKHQudDY9bj10LnQ1LHQudDI9bnVsbCE9PXQudDYsIXQudDIpe3QubmV4dD0yMjticmVha310LnQyPXZvaWQgMCE9PW47Y2FzZSAyMjppZighdC50Mil7dC5uZXh0PTI2O2JyZWFrfXQudDc9bix0Lm5leHQ9Mjc7YnJlYWs7Y2FzZSAyNjp0LnQ3PVtdO2Nhc2UgMjc6dC50OD10LnQ3LHQudDk9KDAsdC50MSkodC50OCksdC50MTA9W251bGw9PWM/dm9pZCAwOmMuc2VydmVyT3JpZ2luXSxoPXQudDAuY29uY2F0LmNhbGwodC50MCx0LnQ5LHQudDEwKTtjYXNlIDMxOmlmKCEoZjxoLmxlbmd0aCkpe3QubmV4dD0zOTticmVha31pZihwPWhbZl0sIShudWxsPT09KG89bnVsbD09ZT92b2lkIDA6ZS51cmwpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnN0YXJ0c1dpdGgocCkpKXt0Lm5leHQ9MzY7YnJlYWt9cmV0dXJuIGE9ITAsdC5hYnJ1cHQoImJyZWFrIiwzOSk7Y2FzZSAzNjpmKyssdC5uZXh0PTMxO2JyZWFrO2Nhc2UgMzk6aWYoIWEpe3QubmV4dD00MzticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdS5yZXF1ZXN0KGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHQpe3ZhciByO3JldHVybiA0MDEhPT0obnVsbD09PShyPW51bGw9PXQ/dm9pZCAwOnQucmVzcG9uc2UpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN0YXR1cykmJihudWxsPT10P3ZvaWQgMDp0LnJlc3BvbnNlKT9Qcm9taXNlLnJlamVjdCh0KTpTKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdS5yZXF1ZXN0KGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBSbygiV09SS0VSX0NPUkUtSFItRVMwMSIsIndvcmtlci1jb3JlIiwiaHR0cFJlcXVlc3QiLCIiLCIiLGUpKX0pKX0pKSk7Y2FzZSA0MzpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IFJvKCJXT1JLRVJfQ09SRS1IUi1JVjAyIiwid29ya2VyLWNvcmUiLCJodHRwUmVxdWVzdCIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQ0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSx2PWZ1bmN0aW9uKGUpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG8sYSxjLGYsaCxwLGQsdixnLHksbSx3O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBjPSEwLHQubmV4dD0zLHMuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMzpmPXQuc2VudCxoPUlvKGUpLHQucHJldj01LGgucygpO2Nhc2UgNzppZigocD1oLm4oKSkuZG9uZSl7dC5uZXh0PTUwO2JyZWFrfXJldHVybiBkPXAudmFsdWUsdj0hMSxnPTAsdC50MD1bXSx0LnQxPWwsdC5uZXh0PTE1LHMuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTU6aWYodC50ND1yPXQuc2VudCx0LnQzPW51bGw9PT10LnQ0LHQudDMpe3QubmV4dD0xOTticmVha310LnQzPXZvaWQgMD09PXI7Y2FzZSAxOTppZighdC50Myl7dC5uZXh0PTIzO2JyZWFrfXQudDU9dm9pZCAwLHQubmV4dD0yNDticmVhaztjYXNlIDIzOnQudDU9ci5yZXNvdXJjZVNlcnZlclVSTHM7Y2FzZSAyNDppZih0LnQ2PW89dC50NSx0LnQyPW51bGwhPT10LnQ2LCF0LnQyKXt0Lm5leHQ9Mjg7YnJlYWt9dC50Mj12b2lkIDAhPT1vO2Nhc2UgMjg6aWYoIXQudDIpe3QubmV4dD0zMjticmVha310LnQ3PW8sdC5uZXh0PTMzO2JyZWFrO2Nhc2UgMzI6dC50Nz1bXTtjYXNlIDMzOnQudDg9dC50Nyx0LnQ5PSgwLHQudDEpKHQudDgpLHQudDEwPVtudWxsPT1mP3ZvaWQgMDpmLnNlcnZlck9yaWdpbl0seT10LnQwLmNvbmNhdC5jYWxsKHQudDAsdC50OSx0LnQxMCk7Y2FzZSAzNzppZighKGc8eS5sZW5ndGgpKXt0Lm5leHQ9NDU7YnJlYWt9aWYobT15W2ddLCEobnVsbD09PShhPWQudXJsKXx8dm9pZCAwPT09YT92b2lkIDA6YS5zdGFydHNXaXRoKG0pKSl7dC5uZXh0PTQyO2JyZWFrfXJldHVybiB2PSEwLHQuYWJydXB0KCJicmVhayIsNDUpO2Nhc2UgNDI6ZysrLHQubmV4dD0zNzticmVhaztjYXNlIDQ1OmlmKHYpe3QubmV4dD00ODticmVha31yZXR1cm4gYz0hMSx0LmFicnVwdCgiYnJlYWsiLDUwKTtjYXNlIDQ4OnQubmV4dD03O2JyZWFrO2Nhc2UgNTA6dC5uZXh0PTU1O2JyZWFrO2Nhc2UgNTI6dC5wcmV2PTUyLHQudDExPXQuY2F0Y2goNSksaC5lKHQudDExKTtjYXNlIDU1OnJldHVybiB0LnByZXY9NTUsaC5mKCksdC5maW5pc2goNTUpO2Nhc2UgNTg6aWYodz1bXSwhYyl7dC5uZXh0PTY0O2JyZWFrfXJldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3cucHVzaCh1LnJlcXVlc3QoZSkpfSkpLHQuYWJydXB0KCJyZXR1cm4iLChudWxsPT11P3ZvaWQgMDp1LmFsbCkmJnUuYWxsKHcpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiA0MDE9PT0obnVsbD09PSh0PW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LnN0YXR1cyk/bi5yZWZyZXNoQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbigpe3JldHVybiB1LmFsbCYmdS5hbGwodykudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFJvKCJXT1JLRVJfQ09SRS1IUkEtRVMwMSIsIndvcmtlci1jb3JlIiwiaHR0cFJlcXVlc3RBbGwiLCIiLCIiLGUpKX0pKTpQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSA2NDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IFJvKCJXT1JLRVJfQ09SRS1IUkEtSVYwMiIsIndvcmtlci1jb3JlIiwiaHR0cFJlcXVlc3QiLCJSZXF1ZXN0IHRvIHRoZSBwcm92aWRlZCBlbmRwb2ludCBpcyBwcm9oaWJpdGVkLiIsIlJlcXVlc3RzIGNhbiBvbmx5IGJlIHNlbnQgdG8gcmVzb3VyY2Ugc2VydmVycyBzcGVjaWZpZWQgYnkgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIGF0dHJpYnV0ZSB3aGlsZSBpbml0aWFsaXppbmcgdGhlIFNESy4gVGhlIHNwZWNpZmllZCBlbmRwb2ludCBpbiB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGZvdW5kIGFtb25nIHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCIpKSk7Y2FzZSA2NTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsbnVsbCxbWzUsNTIsNTUsNThdXSl9KSkpfSxnPWZ1bmN0aW9uKCl7dS5lbmFibGVIYW5kbGVyJiZ1LmVuYWJsZUhhbmRsZXIoKX0seT1mdW5jdGlvbigpe3UuZGlzYWJsZUhhbmRsZXImJnUuZGlzYWJsZUhhbmRsZXIoKX0sbT1mdW5jdGlvbihlKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsbi5nZXRBdXRob3JpemF0aW9uVVJMKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPWUsdC5uZXh0PTMsbi5nZXRQS0NFQ29kZSgpO2Nhc2UgMzpyZXR1cm4gdC50MT10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIse2F1dGhvcml6YXRpb25VUkw6dC50MCxwa2NlOnQudDF9KTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSx3PWZ1bmN0aW9uKCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIG8uY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksby5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sYj1mdW5jdGlvbihlLHQscil7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIHU7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oaSl7Zm9yKDs7KXN3aXRjaChpLnByZXY9aS5uZXh0KXtjYXNlIDA6cmV0dXJuIGkubmV4dD0yLHMuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjppZih1PWkuc2VudCwhcnx8IXUuZW5hYmxlUEtDRSl7aS5uZXh0PTY7YnJlYWt9cmV0dXJuIGkubmV4dD02LG4uc2V0UEtDRUNvZGUocik7Y2FzZSA2OmlmKCFlKXtpLm5leHQ9ODticmVha31yZXR1cm4gaS5hYnJ1cHQoInJldHVybiIsbi5yZXF1ZXN0QWNjZXNzVG9rZW4oZSxudWxsIT10P3Q6IiIpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLG4uZ2V0QmFzaWNVc2VySW5mbygpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgODpyZXR1cm4gaS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IFJvKCJXT1JLRVJfQ09SRS1SQVQxLU5GMDEiLCJ3b3JrZXItY29yZSIsInJlcXVlc3RBY2Nlc3NUb2tlbiIsIk5vIGF1dGhvcml6YXRpb24gY29kZS4iLCJObyBhdXRob3JpemF0aW9uIGNvZGUgd2FzIGZvdW5kLiIpKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gaS5zdG9wKCl9fSksYSl9KSkpfSxrPWZ1bmN0aW9uKCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIG8uY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksZS5uZXh0PTMsbi5zaWduT3V0KCk7Y2FzZSAzOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0seD1mdW5jdGlvbigpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixuLmdldFNpZ25PdXRVUkwoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxfPWZ1bmN0aW9uKGUpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLHUsYyxmLGgscCxkLHYsZztyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gZj0hMCxoPSExLHQubmV4dD00LHMuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgNDppZihwPXQuc2VudCwhKG51bGw9PWU/dm9pZCAwOmUudG9rZW5FbmRwb2ludCkpe3QubmV4dD00MjticmVha31yZXR1cm4gZj0hMSxkPTAsdC50MD1bXSx0LnQxPWwsdC5uZXh0PTEyLHMuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTI6aWYodC50ND1yPXQuc2VudCx0LnQzPW51bGw9PT10LnQ0LHQudDMpe3QubmV4dD0xNjticmVha310LnQzPXZvaWQgMD09PXI7Y2FzZSAxNjppZighdC50Myl7dC5uZXh0PTIwO2JyZWFrfXQudDU9dm9pZCAwLHQubmV4dD0yMTticmVhaztjYXNlIDIwOnQudDU9ci5yZXNvdXJjZVNlcnZlclVSTHM7Y2FzZSAyMTppZih0LnQ2PXU9dC50NSx0LnQyPW51bGwhPT10LnQ2LCF0LnQyKXt0Lm5leHQ9MjU7YnJlYWt9dC50Mj12b2lkIDAhPT11O2Nhc2UgMjU6aWYoIXQudDIpe3QubmV4dD0yOTticmVha310LnQ3PXUsdC5uZXh0PTMwO2JyZWFrO2Nhc2UgMjk6dC50Nz1bXTtjYXNlIDMwOnQudDg9dC50Nyx0LnQ5PSgwLHQudDEpKHQudDgpLHQudDEwPVtudWxsPT1wP3ZvaWQgMDpwLnNlcnZlck9yaWdpbl0sdj10LnQwLmNvbmNhdC5jYWxsKHQudDAsdC50OSx0LnQxMCk7Y2FzZSAzNDppZighKGQ8di5sZW5ndGgpKXt0Lm5leHQ9NDI7YnJlYWt9aWYoZz12W2RdLCEobnVsbD09PShjPWUudG9rZW5FbmRwb2ludCl8fHZvaWQgMD09PWM/dm9pZCAwOmMuc3RhcnRzV2l0aChnKSkpe3QubmV4dD0zOTticmVha31yZXR1cm4gaD0hMCx0LmFicnVwdCgiYnJlYWsiLDQyKTtjYXNlIDM5OmQrKyx0Lm5leHQ9MzQ7YnJlYWs7Y2FzZSA0MjppZihlLnNob3VsZFJlcGxheUFmdGVyUmVmcmVzaCYmcy5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEVvLEpTT04uc3RyaW5naWZ5KGUpKSwhZiYmIWgpe3QubmV4dD00NzticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsbi5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD01O2JyZWFrfXJldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxyLmFicnVwdCgicmV0dXJuIixuLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSA1OnJldHVybiByLmFicnVwdCgicmV0dXJuIix0KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSA0NzpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IFJvKCJXT1JLRVJfQ09SRS1SQ0ctSVYwMSIsIndvcmtlci1jb3JlIiwicmVxdWVzdEN1c3RvbUdyYW50IiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgdG9rZW4gZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNDg6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LFM9ZnVuY3Rpb24oKXtyZXR1cm4gbi5yZWZyZXNoQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBNKCkudGhlbigoZnVuY3Rpb24oZSl7ZSYmXyhlKX0pKSxvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxuLmdldEJhc2ljVXNlckluZm8oKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpfSxFPWZ1bmN0aW9uKCl7cmV0dXJuIG4ucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLFByb21pc2UucmVzb2x2ZSghMCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKX0sQT1mdW5jdGlvbigpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixuLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxUPWZ1bmN0aW9uKCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG4uZ2V0RGVjb2RlZElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxSPWZ1bmN0aW9uKCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG4uZ2V0SURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEM9ZnVuY3Rpb24oKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbi5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LFA9ZnVuY3Rpb24oKXtyZXR1cm4gbi5nZXRBY2Nlc3NUb2tlbigpfSxPPWZ1bmN0aW9uKCl7cmV0dXJuIG4uaXNBdXRoZW50aWNhdGVkKCl9LEQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHMuc2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIoInNlc3Npb25fc3RhdGUiLGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sST1mdW5jdGlvbihlKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsbi51cGRhdGVDb25maWcoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxVPWZ1bmN0aW9uKCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHMuZ2V0Q29uZmlnRGF0YSgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LE09ZnVuY3Rpb24oKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIscy5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEVvKTtjYXNlIDI6aWYoISh0PWUuc2VudCkpe2UubmV4dD03O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixKU09OLnBhcnNlKHQpKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sdC5hYnJ1cHQoInJldHVybiIse2Rpc2FibGVIdHRwSGFuZGxlcjp5LGVuYWJsZUh0dHBIYW5kbGVyOmcsZ2V0QWNjZXNzVG9rZW46UCxnZXRBdXRob3JpemF0aW9uVVJMOm0sZ2V0QmFzaWNVc2VySW5mbzpBLGdldENvbmZpZ0RhdGE6VSxnZXREZWNvZGVkSURUb2tlbjpULGdldElEVG9rZW46UixnZXRPSURDU2VydmljZUVuZHBvaW50czpDLGdldFNpZ25PdXRVUkw6eCxodHRwUmVxdWVzdDpkLGh0dHBSZXF1ZXN0QWxsOnYsaXNBdXRoZW50aWNhdGVkOk8scmVmcmVzaEFjY2Vzc1Rva2VuOlMscmVxdWVzdEFjY2Vzc1Rva2VuOmIscmVxdWVzdEN1c3RvbUdyYW50Ol8scmV2b2tlQWNjZXNzVG9rZW46RSxzZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrOnAsc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrOmYsc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s6aCxzZXRTZXNzaW9uU3RhdGU6RCxzaWduT3V0Omssc3RhcnRBdXRvUmVmcmVzaFRva2VuOncsdXBkYXRlQ29uZmlnOkl9KTtjYXNlIDM4OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxqbz1zZWxmO2pvLm9ubWVzc2FnZT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEscj1lLnBvcnRzO3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciBuLG8sYSxzLHU7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYocz1yWzBdLHQudHlwZT09PVNvfHxNbyl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIHMucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShuZXcgUm8oIkNMSUVOVF9XT1JLRVItT05NU0ctTkYwMSIsImNsaWVudC53b3JrZXIiLHQudHlwZSwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OmUudDA9dC50eXBlLGUubmV4dD1lLnQwPT09U28/NzoiZ2V0X2F1dGhfdXJsIj09PWUudDA/MjI6InJlcXVlc3RfZ2V0X3Rva2VuIj09PWUudDA/MjQ6Imh0dHAtcmVxdWVzdCI9PT1lLnQwPzI2OiJodHRwLXJlcXVlc3QtYWxsIj09PWUudDA/Mjg6InNpZ24tb3V0Ij09PWUudDA/MzA6InJlcXVlc3QtY3VzdG9tLWdyYW50Ij09PWUudDA/NDQ6InJldm9rZS1hY2Nlc3MtdG9rZW4iPT09ZS50MD80NjoiZ2V0LW9pZGMtc2VydmljZS1lbmRwb2ludHMiPT09ZS50MD80ODoiZ2V0LWJhc2ljLXVzZXItaW5mbyI9PT1lLnQwPzYyOiJnZXQtZGVjb2RlZC1pZC10b2tlbiI9PT1lLnQwPzc2OiJnZXRfaWRfdG9rZW4iPT09ZS50MD85MDoiZW5hYmxlX2h0dHBfaGFuZGxlciI9PT1lLnQwPzEwNDoiZGlzYWJsZV9odHRwX2hhbmRsZXIiPT09ZS50MD8xMDc6ImlzX2F1dGhlbnRpY2F0ZWQiPT09ZS50MD8xMTA6ImdldF9zaWduX291dF91cmwiPT09ZS50MD8xMjQ6InJlZnJlc2hfYWNjZXNzLXRva2VuIj09PWUudDA/MTM4OiJzdGFydF9hdXRvX3JlZnJlc2hfdG9rZW4iPT09ZS50MD8xNTI6InNldF9zZXNzaW9uX3N0YXRlIj09PWUudDA/MTU0OiJ1cGRhdGVfY29uZmlnIj09PWUudDA/MTY4OiJnZXRfY29uZmlnX2RhdGEiPT09ZS50MD8xODI6MTk2O2JyZWFrO2Nhc2UgNzpyZXR1cm4gZS5wcmV2PTcsdT1PYmplY3QuYXNzaWduKHt9LHQuZGF0YSksZS5uZXh0PTExLExvKHUpO2Nhc2UgMTE6KE1vPWUuc2VudCkuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhxbyksTW8uc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKEhvKSxNby5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhCbykscy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUubmV4dD0yMTticmVhaztjYXNlIDE4OmUucHJldj0xOCxlLnQxPWUuY2F0Y2goNykscy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDEpKTtjYXNlIDIxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyMjpyZXR1cm4gTW8uZ2V0QXV0aG9yaXphdGlvblVSTChudWxsPT10P3ZvaWQgMDp0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjQ6cmV0dXJuIE1vLnJlcXVlc3RBY2Nlc3NUb2tlbihudWxsPT09KG49bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09bj92b2lkIDA6bi5jb2RlLG51bGw9PT0obz1udWxsPT10P3ZvaWQgMDp0LmRhdGEpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLnNlc3Npb25TdGF0ZSxudWxsPT09KGE9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09YT92b2lkIDA6YS5wa2NlKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFBvLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFBvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI2OnJldHVybiBNby5odHRwUmVxdWVzdCh0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjg6cmV0dXJuIE1vLmh0dHBSZXF1ZXN0QWxsKHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAzMDpyZXR1cm4gZS5wcmV2PTMwLGUudDI9cyxlLnQzPVBvLGUubmV4dD0zNSxNby5zaWduT3V0KCk7Y2FzZSAzNTplLnQ0PWUuc2VudCxlLnQ1PWUudDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDMsZS50NCksZS50Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDIsZS50NSksZS5uZXh0PTQzO2JyZWFrO2Nhc2UgNDA6ZS5wcmV2PTQwLGUudDY9ZS5jYXRjaCgzMCkscy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDYpKTtjYXNlIDQzOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0NDpyZXR1cm4gTW8ucmVxdWVzdEN1c3RvbUdyYW50KHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0NjpyZXR1cm4gTW8ucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFBvLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKFBvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ4OnJldHVybiBlLnByZXY9NDgsZS50Nz1zLGUudDg9UG8sZS5uZXh0PTUzLE1vLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7Y2FzZSA1MzplLnQ5PWUuc2VudCxlLnQxMD1lLnQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ4LGUudDkpLGUudDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ3LGUudDEwKSxlLm5leHQ9NjE7YnJlYWs7Y2FzZSA1ODplLnByZXY9NTgsZS50MTE9ZS5jYXRjaCg0OCkscy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDExKSk7Y2FzZSA2MTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNjI6cmV0dXJuIGUucHJldj02MixlLnQxMj1zLGUudDEzPVBvLGUubmV4dD02NyxNby5nZXRCYXNpY1VzZXJJbmZvKCk7Y2FzZSA2NzplLnQxND1lLnNlbnQsZS50MTU9ZS50MTMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDEzLGUudDE0KSxlLnQxMi5wb3N0TWVzc2FnZS5jYWxsKGUudDEyLGUudDE1KSxlLm5leHQ9NzU7YnJlYWs7Y2FzZSA3MjplLnByZXY9NzIsZS50MTY9ZS5jYXRjaCg2Mikscy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDE2KSk7Y2FzZSA3NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNzY6cmV0dXJuIGUucHJldj03NixlLnQxNz1zLGUudDE4PVBvLGUubmV4dD04MSxNby5nZXREZWNvZGVkSURUb2tlbigpO2Nhc2UgODE6ZS50MTk9ZS5zZW50LGUudDIwPWUudDE4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQxOCxlLnQxOSksZS50MTcucG9zdE1lc3NhZ2UuY2FsbChlLnQxNyxlLnQyMCksZS5uZXh0PTg5O2JyZWFrO2Nhc2UgODY6ZS5wcmV2PTg2LGUudDIxPWUuY2F0Y2goNzYpLHMucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQyMSkpO2Nhc2UgODk6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDkwOnJldHVybiBlLnByZXY9OTAsZS50MjI9cyxlLnQyMz1QbyxlLm5leHQ9OTUsTW8uZ2V0SURUb2tlbigpO2Nhc2UgOTU6ZS50MjQ9ZS5zZW50LGUudDI1PWUudDIzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQyMyxlLnQyNCksZS50MjIucG9zdE1lc3NhZ2UuY2FsbChlLnQyMixlLnQyNSksZS5uZXh0PTEwMzticmVhaztjYXNlIDEwMDplLnByZXY9MTAwLGUudDI2PWUuY2F0Y2goOTApLHMucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQyNikpO2Nhc2UgMTAzOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMDQ6cmV0dXJuIE1vLmVuYWJsZUh0dHBIYW5kbGVyKCkscy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNzpyZXR1cm4gTW8uZGlzYWJsZUh0dHBIYW5kbGVyKCkscy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDExMDpyZXR1cm4gZS5wcmV2PTExMCxlLnQyNz1zLGUudDI4PVBvLGUubmV4dD0xMTUsTW8uaXNBdXRoZW50aWNhdGVkKCk7Y2FzZSAxMTU6ZS50Mjk9ZS5zZW50LGUudDMwPWUudDI4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQyOCxlLnQyOSksZS50MjcucG9zdE1lc3NhZ2UuY2FsbChlLnQyNyxlLnQzMCksZS5uZXh0PTEyMzticmVhaztjYXNlIDEyMDplLnByZXY9MTIwLGUudDMxPWUuY2F0Y2goMTEwKSxzLnBvc3RNZXNzYWdlKFBvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MzEpKTtjYXNlIDEyMzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTI0OnJldHVybiBlLnByZXY9MTI0LGUudDMyPXMsZS50MzM9UG8sZS5uZXh0PTEyOSxNby5nZXRTaWduT3V0VVJMKCk7Y2FzZSAxMjk6ZS50MzQ9ZS5zZW50LGUudDM1PWUudDMzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzMyxlLnQzNCksZS50MzIucG9zdE1lc3NhZ2UuY2FsbChlLnQzMixlLnQzNSksZS5uZXh0PTEzNzticmVhaztjYXNlIDEzNDplLnByZXY9MTM0LGUudDM2PWUuY2F0Y2goMTI0KSxzLnBvc3RNZXNzYWdlKFBvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MzYpKTtjYXNlIDEzNzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTM4OnJldHVybiBlLnByZXY9MTM4LGUudDM3PXMsZS50Mzg9UG8sZS5uZXh0PTE0MyxNby5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDE0MzplLnQzOT1lLnNlbnQsZS50NDA9ZS50MzguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDM4LGUudDM5KSxlLnQzNy5wb3N0TWVzc2FnZS5jYWxsKGUudDM3LGUudDQwKSxlLm5leHQ9MTUxO2JyZWFrO2Nhc2UgMTQ4OmUucHJldj0xNDgsZS50NDE9ZS5jYXRjaCgxMzgpLHMucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0MSkpO2Nhc2UgMTUxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTI6dHJ5e3MucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShNby5zdGFydEF1dG9SZWZyZXNoVG9rZW4oKSkpfWNhdGNoKGUpe3MucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE1NDpyZXR1cm4gZS5wcmV2PTE1NCxlLnQ0Mj1zLGUudDQzPVBvLGUubmV4dD0xNTksTW8uc2V0U2Vzc2lvblN0YXRlKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNTk6ZS50NDQ9ZS5zZW50LGUudDQ1PWUudDQzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0MyxlLnQ0NCksZS50NDIucG9zdE1lc3NhZ2UuY2FsbChlLnQ0MixlLnQ0NSksZS5uZXh0PTE2NzticmVhaztjYXNlIDE2NDplLnByZXY9MTY0LGUudDQ2PWUuY2F0Y2goMTU0KSxzLnBvc3RNZXNzYWdlKFBvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NDYpKTtjYXNlIDE2NzpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTY4OnJldHVybiBlLnByZXY9MTY4LGUudDQ3PXMsZS50NDg9UG8sZS5uZXh0PTE3MyxNby51cGRhdGVDb25maWcobnVsbD09dD92b2lkIDA6dC5kYXRhKTtjYXNlIDE3MzplLnQ0OT1lLnNlbnQsZS50NTA9ZS50NDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDQ4LGUudDQ5KSxlLnQ0Ny5wb3N0TWVzc2FnZS5jYWxsKGUudDQ3LGUudDUwKSxlLm5leHQ9MTgxO2JyZWFrO2Nhc2UgMTc4OmUucHJldj0xNzgsZS50NTE9ZS5jYXRjaCgxNjgpLHMucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ1MSkpO2Nhc2UgMTgxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxODI6cmV0dXJuIGUucHJldj0xODIsZS50NTI9cyxlLnQ1Mz1QbyxlLm5leHQ9MTg3LE1vLmdldENvbmZpZ0RhdGEoKTtjYXNlIDE4NzplLnQ1ND1lLnNlbnQsZS50NTU9ZS50NTMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDUzLGUudDU0KSxlLnQ1Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDUyLGUudDU1KSxlLm5leHQ9MTk1O2JyZWFrO2Nhc2UgMTkyOmUucHJldj0xOTIsZS50NTY9ZS5jYXRjaCgxODIpLHMucG9zdE1lc3NhZ2UoUG8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ1NikpO2Nhc2UgMTk1OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxOTY6bnVsbD09c3x8cy5wb3N0TWVzc2FnZShQby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBSbygiQ0xJRU5UX1dPUktFUi1PTk1TRy1JVjAyIiwiY2xpZW50LndvcmtlciIsIm9ubWVzc2FnZSIsIlRoZSBtZXNzYWdlIHR5cGUgaXMgaW52YWxpZC4iLCJUaGUgbWVzc2FnZSB0eXBlIHByb3ZpZGVkLCAiLmNvbmNhdCh0LnR5cGUsIiwgaXMgaW52YWxpZC4iKSkpKTtjYXNlIDE5NzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzcsMThdLFszMCw0MF0sWzQ4LDU4XSxbNjIsNzJdLFs3Niw4Nl0sWzkwLDEwMF0sWzExMCwxMjBdLFsxMjQsMTM0XSxbMTM4LDE0OF0sWzE1NCwxNjRdLFsxNjgsMTc4XSxbMTgyLDE5Ml1dKX0pKSl9O3ZhciBIbz1mdW5jdGlvbigpe2pvLnBvc3RNZXNzYWdlKHt0eXBlOiJyZXF1ZXN0LXN0YXJ0In0pfSxCbz1mdW5jdGlvbihlKXtqby5wb3N0TWVzc2FnZSh7ZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHR5cGU6InJlcXVlc3Qtc3VjY2VzcyJ9KX0scW89ZnVuY3Rpb24oKXtqby5wb3N0TWVzc2FnZSh7dHlwZToicmVxdWVzdC1maW5pc2gifSl9O3JldHVybnt9fSgpOwoK",Dv=null,Ev=!1,function(t){return Ov=Ov||Pv(Av,Dv,Ev),new Worker(Ov,t)}),qv=function(t){var e,n,r=null!==(e=null==t?void 0:t.requestTimeout)&&void 0!==e?e:6e4,i=!0,c=Uv((function(){return BX(void 0,void 0,void 0,zX.mark((function t(){var e,n;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={type:"sign-out"},t.prev=1,t.next=4,o(e);case 4:return n=t.sent,t.abrupt("return",n);case 8:return t.prev=8,t.t0=t.catch(1),t.abrupt("return",kv.getSignOutURL());case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))}),t.storage,(function(t){return a(t)})),l=new _v,o=function(t){var e=new MessageChannel;return l.postMessage(t,[e.port2]),new Promise((function(t,n){var i=setTimeout((function(){n(new Hv("WEB_WORKER_CLIENT-COM-TO-01","web-worker-client","communicate","Operation timed out.","No response was received from the web worker for "+r/1e3+" since dispatching the request"))}),r);return e.port1.onmessage=function(e){var r=e.data;if(clearTimeout(i),null==r?void 0:r.success){var c=(null==r?void 0:r.data)?JSON.parse(null==r?void 0:r.data):null;(null==r?void 0:r.blob)&&(c.data=null==r?void 0:r.blob),t(c)}else n(r.error?JSON.parse(r.error):null)}}))},a=function(t){return o({data:t,type:"set_session_state"})},u=function(){return o({type:"start_auto_refresh_token"})},d=function(){return BX(void 0,void 0,void 0,zX.mark((function t(){var e,n,r,i,l,o;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,m();case 2:return l=t.sent,t.next=5,h();case 5:o=t.sent,c.initialize(o.clientID,null!==(e=l.checkSessionIframe)&&void 0!==e?e:"",(function(){return BX(void 0,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Z();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),null!==(n=o.checkSessionInterval)&&void 0!==n?n:3,null!==(r=o.sessionRefreshInterval)&&void 0!==r?r:300,o.signInRedirectURL,null!==(i=l.authorizationEndpoint)&&void 0!==i?i:"",o.enablePKCE);case 7:case"end":return t.stop()}}),t)})))},s=function(t,e){return BX(void 0,void 0,void 0,zX.mark((function n(){var r,i;return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,h();case 2:return r=n.sent,i={data:{code:t,pkce:r.enablePKCE?kv.getPKCE():void 0,sessionState:e},type:"request_get_token"},r.enablePKCE&&kv.removePKCE(),n.abrupt("return",o(i).then((function(t){return o({type:"get_sign_out_url"}).then((function(e){return kv.setSignOutURL(e),r.enableOIDCSessionManagement&&d(),u(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))})).catch((function(t){return Promise.reject(t)})));case 6:case"end":return n.stop()}}),n)})))},m=function(){return o({type:"get-oidc-service-endpoints"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},h=function(){return o({type:"get_config_data"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},Z=function(){return o({type:"get-basic-user-info"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},b=function(){return o({type:"is_authenticated"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))};return{disableHttpHandler:function(){return o({type:"disable_http_handler"}).then((function(){return i=!1,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},enableHttpHandler:function(){return o({type:"enable_http_handler"}).then((function(){return i=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},getBasicUserInfo:Z,getDecodedIDToken:function(){return o({type:"get-decoded-id-token"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},getIDToken:function(){return o({type:"get_id_token"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},getOIDCServiceEndpoints:m,httpRequest:function(t){return o({data:t,type:"http-request"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!i){e.next=5;break}if("function"!=typeof n.requestErrorCallback){e.next=4;break}return e.next=4,n.requestErrorCallback(t);case 4:"function"==typeof n.requestFinishCallback&&n.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},httpRequestAll:function(t){return o({data:t,type:"http-request-all"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!i){e.next=5;break}if("function"!=typeof n.requestErrorCallback){e.next=4;break}return e.next=4,n.requestErrorCallback(t);case 4:"function"==typeof n.requestFinishCallback&&n.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},initialize:function(){return n||(n={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),l.onmessage=function(t){var e=t.data;switch(e.type){case"request-finish":(null==n?void 0:n.requestFinishCallback)&&(null==n||n.requestFinishCallback());break;case"request-start":(null==n?void 0:n.requestStartCallback)&&(null==n||n.requestStartCallback());break;case"request-success":(null==n?void 0:n.requestSuccessCallback)&&(null==n||n.requestSuccessCallback(e.data?JSON.parse(e.data):null))}},o({data:t,type:"init"}).then((function(){return Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},isAuthenticated:b,refreshAccessToken:function(){return o({type:"refresh_access-token"})},requestCustomGrant:function(t){return o({data:t,type:"request-custom-grant"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},revokeAccessToken:function(){return o({type:"revoke-access-token"}).then((function(t){return c.reset(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},setHttpRequestErrorCallback:function(t){t&&"function"==typeof t&&(n.requestErrorCallback=t)},setHttpRequestFinishCallback:function(t){t&&"function"==typeof t&&(n.requestFinishCallback=t)},setHttpRequestStartCallback:function(t){t&&"function"==typeof t&&(n.requestStartCallback=t)},setHttpRequestSuccessCallback:function(t){t&&"function"==typeof t&&(n.requestSuccessCallback=t)},signIn:function(t,e,n){return BX(void 0,void 0,void 0,zX.mark((function r(){var i,l,m,p,y,I,X,G,g;return zX.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,h();case 2:return m=r.sent,r.next=5,c.receivePromptNoneResponse((function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a(t));case 1:case"end":return e.stop()}}),e)})))}));case 5:if(!r.sent){r.next=8;break}return r.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:if(p=new URL(window.location.href).searchParams.get("error"),y=new URL(window.location.href).searchParams.get("error_description"),!p){r.next=16;break}return(I=new URL(window.location.href)).searchParams.delete("error"),I.searchParams.delete("error_description"),history.pushState(null,document.title,I.toString()),r.abrupt("return",Promise.reject(new Hv("WEB_WORKER_CLIENT-SI-BE","web-worker-client","signIn",p,null!=y?y:"")));case 16:return r.next=18,b();case 18:if(!r.sent){r.next=23;break}return r.next=21,u();case 21:return m.enableOIDCSessionManagement&&d(),r.abrupt("return",Z());case 23:if((null==m?void 0:m.responseMode)===xf.formPost&&e?(X=e,G=null!=n?n:""):(X=null!==(i=new URL(window.location.href).searchParams.get(_f))&&void 0!==i?i:"",G=null!==(l=new URL(window.location.href).searchParams.get(qf))&&void 0!==l?l:"",kv.removeAuthorizationCode()),!X){r.next=26;break}return r.abrupt("return",s(X,G));case 26:return g={data:t,type:"get_auth_url"},r.abrupt("return",o(g).then((function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.pkce&&m.enablePKCE&&kv.setPKCE(t.pkce),location.href=t.authorizationURL,e.next=4,kv.waitTillPageRedirect();case 4:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 5:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 28:case"end":return r.stop()}}),r)})))},signOut:function(){return b().then((function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){var n;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t){e.next=5;break}return n={type:"sign-out"},e.abrupt("return",o(n).then((function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return window.location.href=t,e.next=3,kv.waitTillPageRedirect();case 3:return e.abrupt("return",Promise.resolve(!0));case 4:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 5:return window.location.href=kv.getSignOutURL(),e.next=8,kv.waitTillPageRedirect();case 8:return e.abrupt("return",Promise.resolve(!0));case 9:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)}))},trySignInSilently:function(){return BX(void 0,void 0,void 0,zX.mark((function t(){var e,n,r,i,l,a,u,d,m;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,h();case 2:if(n=t.sent,!kv.isInitializedSilentSignIn()){t.next=7;break}return t.next=6,c.receivePromptNoneResponse();case 6:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return r=document.getElementById("rpIFrame"),i=null===(e=null==r?void 0:r.contentDocument)||void 0===e?void 0:e.getElementById("promptNoneIFrame"),l={data:{prompt:"none",state:"sign-in-silently"},type:"get_auth_url"},t.prev=10,t.next=13,o(l);case 13:(a=t.sent).pkce&&n.enablePKCE&&kv.setPKCE(a.pkce),u=a.authorizationURL,(d=new URL(u)).searchParams.set("response_mode","query"),m=d.toString(),i.src=m,t.next=25;break;case 22:return t.prev=22,t.t0=t.catch(10),t.abrupt("return",Promise.reject(t.t0));case 25:return t.abrupt("return",new Promise((function(t,e){var n=setTimeout((function(){t(!1)}),1e4);window.addEventListener("message",(function r(i){return BX(void 0,void 0,void 0,zX.mark((function c(){var l,o,a,u;return zX.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:"check_session_signed_out"==(null==(u=i.data)?void 0:u.type)&&(window.removeEventListener("message",r),clearTimeout(n),t(!1)),"check_session_signed_in"==(null==u?void 0:u.type)&&(null===(l=null==u?void 0:u.data)||void 0===l?void 0:l.code)&&s(null===(o=null==u?void 0:u.data)||void 0===o?void 0:o.code,null===(a=null==u?void 0:u.data)||void 0===a?void 0:a.sessionState).then((function(e){window.removeEventListener("message",r),t(e)})).catch((function(t){window.removeEventListener("message",r),e(t)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 26:case"end":return t.stop()}}),t,null,[[10,22]])})))},updateConfig:function(t){return BX(void 0,void 0,void 0,zX.mark((function e(){var n,r,i,l;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h();case 2:return n=e.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),t),l={data:i,type:"update_config"},e.next=8,o(l);case 8:i.enableOIDCSessionManagement&&r&&(c.reset(),d());case 9:case"end":return e.stop()}}),e)})))}}},$v={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:lv.SessionStorage},tS=function(){function t(e){wX(this,t),this._initialized=!1,this._startedInitialize=!1,this._onSignInCallback=function(){return null},this._onSignOutCallback=function(){return null},this._onEndUserSession=function(){return null},this._onInitialize=function(){return null},this._onCustomGrant=new Map,this._instanceID=e}return FX(t,[{key:"_isInitialized",value:function(){return BX(this,void 0,void 0,zX.mark((function t(){var e,n;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._startedInitialize){t.next=2;break}return t.abrupt("return",!1);case 2:e=0,n=function(){return new Promise((function(t){return setTimeout(t,1e3)}))};case 4:if(this._initialized){t.next=11;break}return 10===e&&console.warn("It is taking longer than usual for the object to be initialized"),t.next=8,n();case 8:e++,t.next=4;break;case 11:return t.abrupt("return",!0);case 12:case"end":return t.stop()}}),t,this)})))}},{key:"_validateMethod",value:function(){return BX(this,void 0,void 0,zX.mark((function t(){return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(t.sent){t.next=4;break}return t.abrupt("return",Promise.reject());case 4:return t.next=6,this.isAuthenticated();case 6:if(t.sent){t.next=8;break}return t.abrupt("return",Promise.reject());case 8:return t.abrupt("return",!0);case 9:case"end":return t.stop()}}),t,this)})))}
393
+ function(t){return Bf(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.updateConfig(t);case 2:case"end":return e.stop()}}),e,this)})))}}],[{key:"isSignOutSuccessful",value:function(t){var e=new URL(t),n=e.searchParams.get("state"),i=Boolean(e.searchParams.get("error"));return!!n&&"sign_out_success"===n&&!i}}]),t}();!function(t){t.LocalStorage="localStorage",t.SessionStorage="sessionStorage",t.WebWorker="webWorker",t.BrowserMemory="browserMemory"}(nv||(nv={})),function(t){t.SignIn="sign-in",t.SignOut="sign-out",t.Initialize="initialize",t.HttpRequestStart="http-request-start",t.HttpRequestFinish="http-request-finish",t.HttpRequestError="http-request-error",t.HttpRequestSuccess="http-request-success",t.RevokeAccessToken="revoke-access-token",t.CustomGrant="custom-grant"}(iv||(iv={}));var uv="Y2hlY2tTZXNzaW9u";function dv(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,i=sg(t);if(e){var r=sg(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return ug(this,n)}}var sv,mv,hv,bv,Zv,pv,yv,Iv,Xv,gv,Gv,fv,Vv,Wv,vv,Sv,Cv,Yv,Rv,Kv=function(t){og(n,t);var e=dv(n);function n(t,i,r,c,l,o){var a;return wX(this,n),(a=e.call(this,null!=c?c:null==o?void 0:o.message)).name=a.constructor.name,a.code=t,a.file=i,a.method=r,a.error=o,a.description=l,Object.setPrototypeOf(cg(a),(this instanceof n?this.constructor:void 0).prototype),a}return n}(pg(Error)),Lv=function(){function t(e){wX(this,t),this._authenticationClient=e,this._dataLayer=this._authenticationClient.getDataLayer()}return FX(t,[{key:"refreshAccessTokenAutomatically",value:function(){return zX(this,void 0,void 0,BX.mark((function t(){var e,n,i,r=this;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:if(!(e=t.sent).refresh_token){t.next=9;break}return n=parseInt(e.expires_in),i=setTimeout((function(){return zX(r,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return t.stop()}}),t,this)})))}),1e3*(n<=10?n:n-10)),t.next=9,this._dataLayer.setTemporaryDataParameter(Df,JSON.stringify(i));case 9:case"end":return t.stop()}}),t,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return zX(this,void 0,void 0,BX.mark((function t(){var e;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter(Df);case 2:if(!t.sent){t.next=9;break}return t.t0=JSON,t.next=6,this._dataLayer.getTemporaryDataParameter(Df);case 6:t.t1=t.sent,e=t.t0.parse.call(t.t0,t.t1),clearTimeout(e);case 9:case"end":return t.stop()}}),t,this)})))}}]),t}(),Jv=function(){function t(){wX(this,t)}return FX(t,null,[{key:"removeAuthorizationCode",value:function(){var t=location.href;history.pushState({},document.title,t.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(){var t;return null!==(t=sessionStorage.getItem(Ef))&&void 0!==t?t:""}},{key:"setPKCE",value:function(t){sessionStorage.setItem(Ef,t)}},{key:"setSignOutURL",value:function(t){sessionStorage.setItem(qf,t)}},{key:"getSignOutURL",value:function(){var t;return null!==(t=sessionStorage.getItem(qf))&&void 0!==t?t:""}},{key:"removePKCE",value:function(){sessionStorage.removeItem(Ef)}},{key:"canContinueSignIn",value:function(e,n){return!(e&&!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return t.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var t=sessionStorage.getItem("initialized-silent-sign-in"),e=t?JSON.parse(t):null;return Boolean(e)}},{key:"isSignOutSuccessful",value:function(){if(av.isSignOutSuccessful(window.location.href)){var t=window.location.href.split("?")[0];return history.pushState({},document.title,t),!0}return!1}},{key:"isSilentStatePresentInURL",value:function(){return"sign-in-silently"===new URL(window.location.href).searchParams.get("state")}},{key:"hasAuthSearchParamsInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,e=/[?&]code=[^&]+/;return e.test(t)}},{key:"hasErrorInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href;return!!new URL(t).searchParams.get("error")}},{key:"canSendPromptNoneRequest",value:function(){var t=sessionStorage.getItem("promptNoneRequestSent");return!(t?JSON.parse(t):null)}},{key:"setPromptNoneRequestSent",value:function(t){sessionStorage.setItem("promptNoneRequestSent",JSON.stringify(t))}},{key:"waitTillPageRedirect",value:function(t){return zX(this,void 0,void 0,BX.mark((function e(){var n;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=null!=t?t:3e3,e.next=3,new Promise((function(t){return setTimeout(t,1e3*n)}));case 3:case"end":return e.stop()}}),e)})))}}]),t}(),xv=(Vv=function(t,e,n,i,r,c,l,o){sv=t,mv=e,hv=n,Zv=c,pv=l,yv=r,fv=o,(bv=i)>-1&&Wv(),yv>-1&&(r=setInterval((function(){Cv()}),1e3*yv))},Wv=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){var e,n,i,r;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=function(){var t;return zX(this,void 0,void 0,BX.mark((function e(){var i,r,c,l,o;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,hv();case 2:i=e.sent,Boolean(sv)&&Boolean(i)&&(r="".concat(sv," ").concat(i),c=document.getElementById("rpIFrame"),l=null===(t=null==c?void 0:c.contentDocument)||void 0===t?void 0:t.getElementById(n),null==(o=l.contentWindow)||o.postMessage(r,mv));case 4:case"end":return e.stop()}}),e)})))},mv&&sv&&Zv){t.next=3;break}return t.abrupt("return");case 3:return n="opIFrame",r=document.getElementById("rpIFrame"),(null===(e=null==r?void 0:r.contentDocument)||void 0===e?void 0:e.getElementById(n)).src=mv+"?client_id="+sv+"&redirect_uri="+Zv,t.next=9,i();case 9:Xv=setInterval(i,1e3*bv),Sv();case 11:case"end":return t.stop()}}),t)})))},vv=function(){clearInterval(Xv),clearInterval(void 0)},Sv=function(){null===window||void 0===window||window.addEventListener("message",(function(t){var e;return zX(this,void 0,void 0,BX.mark((function n(){var i;return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((i=mv)&&!((null==i?void 0:i.indexOf(t.origin))<0)&&"set_session_state_from_iframe"!==(null===(e=null==t?void 0:t.data)||void 0===e?void 0:e.type)){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==t.data){n.next=6;break}n.next=13;break;case 6:if("error"!==t.data){n.next=12;break}return n.next=9,Iv();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===t.data&&Cv();case 13:case"end":return n.stop()}}),n)})))}),!1)},Cv=function(){var t,e=document.getElementById("rpIFrame"),n=null===(t=null==e?void 0:e.contentDocument)||void 0===t?void 0:t.getElementById("promptNoneIFrame");if(Jv.canSendPromptNoneRequest()){Jv.setPromptNoneRequestSent(!0),gv!==nv.BrowserMemory&&gv!==nv.WebWorker||null===window||void 0===window||window.addEventListener("message",(function t(e){var n,i,r;"set_session_state_from_iframe"===(null===(n=null==e?void 0:e.data)||void 0===n?void 0:n.type)&&(Gv(null!==(r=null===(i=null==e?void 0:e.data)||void 0===i?void 0:i.data)&&void 0!==r?r:""),null===window||void 0===window||window.removeEventListener("message",t))}));var i=new URL(pv);i.searchParams.set("response_type","code"),i.searchParams.set("client_id",sv),i.searchParams.set("scope","openid"),i.searchParams.set("redirect_uri",Zv),i.searchParams.set("state",uv),i.searchParams.set("prompt","none"),fv&&(i.searchParams.set("code_challenge_method","S256"),i.searchParams.set("code_challenge",function(){for(var t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz-_",e="",n=0;n<43;n++){var i=Math.floor(Math.random()*t.length);e+=t.substring(i,i+1)}return e}())),n.src=i.toString()}},Yv=function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){var n,i,r,c,l,o,a,u,d,s;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=new URL(window.location.href).searchParams.get("state"),c=new URL(window.location.href).searchParams.get(_f),l=window.parent.parent,null===r||r!==uv&&"sign-in-silently"!==r){e.next=48;break}if(null===(o=new URL(window.location.href).searchParams.get("code"))||0===o.length){e.next=32;break}if("sign-in-silently"!==r){e.next=15;break}return a={data:{code:o,sessionState:null!=c?c:""},type:"check_session_signed_in"},sessionStorage.setItem("initialized-silent-sign-in","false"),l.postMessage(a,l.origin),Jv.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=14,Jv.waitTillPageRedirect();case 14:return e.abrupt("return",!0);case 15:if(u=new URL(window.location.href).searchParams.get("session_state"),gv!==nv.LocalStorage&&gv!==nv.SessionStorage){e.next=23;break}if(e.t0=t,!e.t0){e.next=21;break}return e.next=21,t(u);case 21:e.next=25;break;case 23:d={data:null!=u?u:"",type:"set_session_state_from_iframe"},null===(i=null===(n=null===window||void 0===window?void 0:window.parent)||void 0===n?void 0:n.parent)||void 0===i||i.postMessage(d);case 25:return Jv.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=29,Jv.waitTillPageRedirect();case 29:return e.abrupt("return",!0);case 32:if("sign-in-silently"!==r){e.next=40;break}return s={type:"check_session_signed_out"},window.parent.parent.postMessage(s,l.origin),Jv.setPromptNoneRequestSent(!1),window.location.href="about:blank",e.next=39,Jv.waitTillPageRedirect();case 39:return e.abrupt("return",!0);case 40:return Jv.setPromptNoneRequestSent(!1),e.next=43,Iv();case 43:return l.location.href=e.sent,window.location.href="about:blank",e.next=47,Jv.waitTillPageRedirect();case 47:return e.abrupt("return",!0);case 48:return e.abrupt("return",!1);case 49:case"end":return e.stop()}}),e)})))},function(t,e,n){var i,r=document.createElement("iframe");return r.setAttribute("id","rpIFrame"),r.style.display="none",r.onload=function(){var t,e,n,i,c=null==(r=document.getElementById("rpIFrame"))?void 0:r.contentDocument,l=null==c?void 0:c.createElement("iframe");l&&(l.setAttribute("id","opIFrame"),l.style.display="none");var o=null==c?void 0:c.createElement("iframe");o&&(o.setAttribute("id","promptNoneIFrame"),o.style.display="none"),l&&(null===(e=null===(t=null==r?void 0:r.contentDocument)||void 0===t?void 0:t.body)||void 0===e||e.appendChild(l)),o&&(null===(i=null===(n=null==r?void 0:r.contentDocument)||void 0===n?void 0:n.body)||void 0===i||i.appendChild(o))},null===(i=null===document||void 0===document?void 0:document.body)||void 0===i||i.appendChild(r),Iv=t,gv=e,Gv=n,{initialize:Vv,receivePromptNoneResponse:Yv,reset:vv}});var Hv=Rv=function(){function t(){wX(this,t),this.attachToken=function(){return Promise.resolve()},this.requestStartCallback=function(){return null},this.requestSuccessCallback=function(){return null},this.requestErrorCallback=function(){return null},this.requestFinishCallback=function(){return null},this.init=this.init.bind(this),this.setHttpRequestErrorCallback=this.setHttpRequestErrorCallback.bind(this),this.setHttpRequestFinishCallback=this.setHttpRequestFinishCallback.bind(this),this.setHttpRequestStartCallback=this.setHttpRequestStartCallback.bind(this),this.setHttpRequestSuccessCallback=this.setHttpRequestSuccessCallback.bind(this)}return FX(t,[{key:"requestHandler",value:function(t){return zX(this,void 0,void 0,BX.mark((function e(){var n,i;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.attachToken(t);case 2:return(null==t?void 0:t.shouldEncodeToFormData)&&(n=null==t?void 0:t.data,i=new FormData,Object.keys(n).forEach((function(t){i.append(t,n[t])})),t.data=i),Rv.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(t),e.abrupt("return",t);case 5:case"end":return e.stop()}}),e,this)})))}},{key:"errorHandler",value:function(t){throw Rv.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"successHandler",value:function(t){return Rv.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"init",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=arguments.length>1?arguments[1]:void 0;return zX(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:Rv.isHandlerEnabled=t,this.attachToken=e;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){Rv.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){Rv.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Rv.DEFAULT_HANDLER_DISABLE_TIMEOUT;Rv.isHandlerEnabled=!1,setTimeout((function(){Rv.isHandlerEnabled=!0}),t)}},{key:"setHttpRequestStartCallback",value:function(t){this.requestStartCallback=t}},{key:"setHttpRequestSuccessCallback",value:function(t){this.requestSuccessCallback=t}},{key:"setHttpRequestErrorCallback",value:function(t){this.requestErrorCallback=t}},{key:"setHttpRequestFinishCallback",value:function(t){this.requestFinishCallback=t}}],[{key:"getInstance",value:function(){var t=this;return this.axiosInstance||(this.axiosInstance=Nf.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new Rv),this.axiosInstance.interceptors.request.use((function(e){return zX(t,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.clientInstance.requestHandler(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))})),this.axiosInstance.interceptors.response.use((function(e){return t.clientInstance.successHandler(e)}),(function(e){return t.clientInstance.errorHandler(e)})),this.axiosInstance.all=Nf.all,this.axiosInstance.spread=Nf.spread,this.axiosInstance.init=this.clientInstance.init,this.axiosInstance.enableHandler=this.clientInstance.enableHandler,this.axiosInstance.disableHandler=this.clientInstance.disableHandler,this.axiosInstance.disableHandlerWithTimeout=this.clientInstance.disableHandlerWithTimeout,this.axiosInstance.setHttpRequestStartCallback=this.clientInstance.setHttpRequestStartCallback,this.axiosInstance.setHttpRequestSuccessCallback=this.clientInstance.setHttpRequestSuccessCallback,this.axiosInstance.setHttpRequestErrorCallback=this.clientInstance.setHttpRequestErrorCallback,this.axiosInstance.setHttpRequestFinishCallback=this.clientInstance.setHttpRequestFinishCallback),this.axiosInstance}}]),t}();Hv.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,Hv=Rv=function(t,e,n,i){var r,c=arguments.length,o=c<3?e:null===i?i=Object.getOwnPropertyDescriptor(e,n):i;if("object"===("undefined"==typeof Reflect?"undefined":l(Reflect))&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,i);else for(var a=t.length-1;a>=0;a--)(r=t[a])&&(o=(c<3?r(o):c>3?r(e,n,o):r(e,n))||o);return c>3&&o&&Object.defineProperty(e,n,o),o}([function(t){}],Hv);var Nv=function(){function t(){wX(this,t)}return FX(t,[{key:"setData",value:function(t,e){return zX(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return zX(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=localStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return zX(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:localStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}(),kv=function(){function t(){wX(this,t),this._data=new Map}return FX(t,[{key:"setData",value:function(t,e){return zX(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(t,e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(t){var e,n;return zX(this,void 0,void 0,BX.mark((function i(){return BX.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.abrupt("return",null!==(n=null===(e=this._data)||void 0===e?void 0:e.get(t))&&void 0!==n?n:"{}");case 1:case"end":return i.stop()}}),i,this)})))}},{key:"removeData",value:function(t){return zX(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._data.delete(t);case 1:case"end":return e.stop()}}),e,this)})))}}]),t}(),Uv=function(){function t(){wX(this,t)}return FX(t,[{key:"setData",value:function(t,e){return zX(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return zX(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=sessionStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return zX(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:sessionStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}();function wv(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return Tv(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Tv(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,l=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return l=t.done,t},e:function(t){o=!0,c=t},f:function(){try{l||null==n.return||n.return()}finally{if(o)throw c}}}}function Tv(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}var Fv=function(t){switch(t){case nv.LocalStorage:return new Nv;case nv.SessionStorage:return new Uv;case nv.BrowserMemory:return new kv;default:return new Uv}},Bv=function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){var n,i,r,c,l,o,a,u,d,s,m,h,b,Z,p,y,I,X,g,G,f,V,W,v,S,C,Y,R,K,L,J,x,H,N,k,U,w;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=Fv(t.storage),r=new av(i),e.next=4,r.initialize(t);case 4:if(c=new Lv(r),l=r.getDataLayer(),o=xv((function(){return zX(void 0,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.signOut());case 1:case"end":return t.stop()}}),t)})))}),null!==(n=t.storage)&&void 0!==n?n:nv.SessionStorage,(function(t){return l.setSessionDataParameter(_f,null!=t?t:"")})),a=!1,u=Hv.getInstance(),d=!0,h=function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Object.assign({attachToken:!0},t).attachToken){e.next=11;break}return e.t0=Object,e.t1=Object.assign({},t.headers),e.t2="Bearer ",e.next=7,r.getAccessToken();case 7:e.t3=e.sent,e.t4=e.t2.concat.call(e.t2,e.t3),e.t5={Authorization:e.t4},t.headers=e.t0.assign.call(e.t0,e.t1,e.t5);case 11:case"end":return e.stop()}}),e)})))},e.t0=null==u?void 0:u.init,!e.t0){e.next=15;break}return e.next=15,u.init(!0,h);case 15:return b=function(t){(null==u?void 0:u.setHttpRequestStartCallback)&&u.setHttpRequestStartCallback(t)},Z=function(t){(null==u?void 0:u.setHttpRequestSuccessCallback)&&u.setHttpRequestSuccessCallback(t)},p=function(t){(null==u?void 0:u.setHttpRequestFinishCallback)&&u.setHttpRequestFinishCallback(t),m=t},y=function(t){s=t},I=function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){var n,i,r,c,o,a,h;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=!1,e.next=3,l.getConfigData();case 3:return c=e.sent,o=0,e.t0=[],e.t1=DX,e.next=9,null==c?void 0:c.resourceServerURLs;case 9:if(e.t3=n=e.sent,e.t2=null!==e.t3,!e.t2){e.next=13;break}e.t2=void 0!==n;case 13:if(!e.t2){e.next=17;break}e.t4=n,e.next=18;break;case 17:e.t4=[];case 18:e.t5=e.t4,e.t6=(0,e.t1)(e.t5),e.t7=[null==c?void 0:c.serverOrigin],a=e.t0.concat.call(e.t0,e.t6,e.t7);case 22:if(!(o<a.length)){e.next=30;break}if(h=a[o],!(null===(i=null==t?void 0:t.url)||void 0===i?void 0:i.startsWith(h))){e.next=27;break}return r=!0,e.abrupt("break",30);case 27:o++,e.next=22;break;case 30:if(!r){e.next=34;break}return e.abrupt("return",u.request(t).then((function(t){return Promise.resolve(t)})).catch((function(e){return zX(void 0,void 0,void 0,BX.mark((function n(){var i,r,c;return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(401!==(null===(i=null==e?void 0:e.response)||void 0===i?void 0:i.status)&&(null==e?void 0:e.response)){n.next=31;break}return n.prev=1,n.next=4,C();case 4:r=n.sent,n.next=15;break;case 7:if(n.prev=7,n.t0=n.catch(1),!d){n.next=14;break}if("function"!=typeof s){n.next=13;break}return n.next=13,s(e);case 13:"function"==typeof m&&m();case 14:return n.abrupt("return",Promise.reject(new Kv("MAIN_THREAD_CLIENT-HR-ES01","main-thread-client","httpRequest","","",n.t0)));case 15:if(!r){n.next=31;break}return n.prev=16,n.next=19,u.request(t);case 19:return c=n.sent,n.abrupt("return",Promise.resolve(c));case 23:if(n.prev=23,n.t1=n.catch(16),!d){n.next=30;break}if("function"!=typeof s){n.next=29;break}return n.next=29,s(n.t1);case 29:"function"==typeof m&&m();case 30:return n.abrupt("return",Promise.reject(n.t1));case 31:if(!d){n.next=36;break}if("function"!=typeof s){n.next=35;break}return n.next=35,s(e);case 35:"function"==typeof m&&m();case 36:return n.abrupt("return",Promise.reject(e));case 37:case"end":return n.stop()}}),n,null,[[1,7],[16,23]])})))})));case 34:return e.abrupt("return",Promise.reject(new Kv("MAIN_THREAD_CLIENT-HR-IV02","main-thread-client","httpRequest","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`")));case 35:case"end":return e.stop()}}),e)})))},X=function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){var n,i,c,o,a,h,b,Z,p,y,I,X,g;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=!0,e.next=3,l.getConfigData();case 3:a=e.sent,h=wv(t),e.prev=5,h.s();case 7:if((b=h.n()).done){e.next=50;break}return Z=b.value,p=!1,y=0,e.t0=[],e.t1=DX,e.next=15,a;case 15:if(e.t4=n=e.sent,e.t3=null===e.t4,e.t3){e.next=19;break}e.t3=void 0===n;case 19:if(!e.t3){e.next=23;break}e.t5=void 0,e.next=24;break;case 23:e.t5=n.resourceServerURLs;case 24:if(e.t6=i=e.t5,e.t2=null!==e.t6,!e.t2){e.next=28;break}e.t2=void 0!==i;case 28:if(!e.t2){e.next=32;break}e.t7=i,e.next=33;break;case 32:e.t7=[];case 33:e.t8=e.t7,e.t9=(0,e.t1)(e.t8),e.t10=[null==a?void 0:a.serverOrigin],I=e.t0.concat.call(e.t0,e.t9,e.t10);case 37:if(!(y<I.length)){e.next=45;break}if(X=I[y],!(null===(c=Z.url)||void 0===c?void 0:c.startsWith(X))){e.next=42;break}return p=!0,e.abrupt("break",45);case 42:y++,e.next=37;break;case 45:if(p){e.next=48;break}return o=!1,e.abrupt("break",50);case 48:e.next=7;break;case 50:e.next=55;break;case 52:e.prev=52,e.t11=e.catch(5),h.e(e.t11);case 55:return e.prev=55,h.f(),e.finish(55);case 58:if(g=[],!o){e.next=64;break}return t.forEach((function(t){g.push(u.request(t))})),e.abrupt("return",(null==u?void 0:u.all)&&u.all(g).then((function(t){return Promise.resolve(t)})).catch((function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){var n,i;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(401!==(null===(n=null==t?void 0:t.response)||void 0===n?void 0:n.status)&&(null==t?void 0:t.response)){e.next=17;break}return e.prev=1,e.next=4,r.refreshAccessToken();case 4:i=e.sent,e.next=15;break;case 7:if(e.prev=7,e.t0=e.catch(1),!d){e.next=14;break}if("function"!=typeof s){e.next=13;break}return e.next=13,s(t);case 13:"function"==typeof m&&m();case 14:return e.abrupt("return",Promise.reject(new Kv("MAIN_THREAD_CLIENT-HRA-ES01","main-thread-client","httpRequestAll","","",e.t0)));case 15:if(!i){e.next=17;break}return e.abrupt("return",u.all&&u.all(g).then((function(t){return Promise.resolve(t)})).catch((function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!d){e.next=5;break}if("function"!=typeof s){e.next=4;break}return e.next=4,s(t);case 4:"function"==typeof m&&m();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))})));case 17:if(!d){e.next=22;break}if("function"!=typeof s){e.next=21;break}return e.next=21,s(t);case 21:"function"==typeof m&&m();case 22:return e.abrupt("return",Promise.reject(t));case 23:case"end":return e.stop()}}),e,null,[[1,7]])})))})));case 64:return e.abrupt("return",Promise.reject(new Kv("MAIN_THREAD_CLIENT-HRA-IV02","main-thread-client","httpRequest","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`")));case 65:case"end":return e.stop()}}),e,null,[[5,52,55,58]])})))},g=function(){return u},G=function(){return(null==u?void 0:u.enableHandler)&&u.enableHandler(),d=!0,!0},f=function(){return(null==u?void 0:u.disableHandler)&&u.disableHandler(),d=!1,!0},V=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){var e,n,i,c,a,u;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r.getOIDCServiceEndpoints();case 2:return a=t.sent,t.next=5,l.getConfigData();case 5:u=t.sent,o.initialize(u.clientID,null!==(e=a.checkSessionIframe)&&void 0!==e?e:"",(function(){return zX(void 0,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r.getBasicUserInfo();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),null!==(n=u.checkSessionInterval)&&void 0!==n?n:3,null!==(i=u.sessionRefreshInterval)&&void 0!==i?i:300,u.signInRedirectURL,null!==(c=a.authorizationEndpoint)&&void 0!==c?c:"",u.enablePKCE);case 7:case"end":return t.stop()}}),t)})))},W=function(t,e,n){return zX(void 0,void 0,void 0,BX.mark((function i(){var a,u,d,s,m,h,b,Z;return BX.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,l.getConfigData();case 2:return d=i.sent,i.next=5,o.receivePromptNoneResponse((function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.setSessionDataParameter(_f,null!=t?t:"");case 2:return e.abrupt("return");case 3:case"end":return e.stop()}}),e)})))}));case 5:if(!i.sent){i.next=8;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:return i.next=10,r.isAuthenticated();case 10:if(!i.sent){i.next=19;break}return c.clearRefreshTokenTimeout(),c.refreshAccessTokenAutomatically(),d.enableOIDCSessionManagement&&V(),i.t0=Promise,i.next=17,r.getBasicUserInfo();case 17:return i.t1=i.sent,i.abrupt("return",i.t0.resolve.call(i.t0,i.t1));case 19:if((null==d?void 0:d.responseMode)===xf.formPost&&e?(s=e,m=null!=n?n:""):(s=null!==(a=new URL(window.location.href).searchParams.get(Of))&&void 0!==a?a:"",m=null!==(u=new URL(window.location.href).searchParams.get(_f))&&void 0!==u?u:"",Jv.removeAuthorizationCode()),!s){i.next=22;break}return i.abrupt("return",R(s,m));case 22:if(h=new URL(window.location.href).searchParams.get("error"),b=new URL(window.location.href).searchParams.get("error_description"),!h){i.next=30;break}return(Z=new URL(window.location.href)).searchParams.delete("error"),Z.searchParams.delete("error_description"),history.pushState(null,document.title,Z.toString()),i.abrupt("return",Promise.reject(new Kv("MAIN_THREAD_CLIENT-SI-BE","main-thread-client","signIn",h,null!=b?b:"")));case 30:return i.abrupt("return",r.getAuthorizationURL(t).then((function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(d.storage!==nv.BrowserMemory||!d.enablePKCE){e.next=6;break}return e.t0=Jv,e.next=4,r.getPKCECode();case 4:e.t1=e.sent,e.t0.setPKCE.call(e.t0,e.t1);case 6:return location.href=t,e.next=9,Jv.waitTillPageRedirect();case 9:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 10:case"end":return e.stop()}}),e)})))})));case 31:case"end":return i.stop()}}),i)})))},v=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r.isAuthenticated();case 2:if(t.t0=t.sent,!t.t0){t.next=5;break}t.t0=!a;case 5:if(!t.t0){t.next=11;break}return t.next=8,r.signOut();case 8:location.href=t.sent,t.next=18;break;case 11:return location.href=Jv.getSignOutURL(),t.next=14,l.removeOIDCProviderMetaData();case 14:return t.next=16,l.removeTemporaryData();case 16:return t.next=18,l.removeSessionData();case 18:return c.clearRefreshTokenTimeout(),t.next=21,Jv.waitTillPageRedirect();case 21:return t.abrupt("return",!0);case 22:case"end":return t.stop()}}),t)})))},S=function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){var n,i,o,u,d,s,m,h,b;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return u=!0,d=!1,e.next=4,l.getConfigData();case 4:if(s=e.sent,!(null==t?void 0:t.tokenEndpoint)){e.next=42;break}return u=!1,m=0,e.t0=[],e.t1=DX,e.next=12,l.getConfigData();case 12:if(e.t4=n=e.sent,e.t3=null===e.t4,e.t3){e.next=16;break}e.t3=void 0===n;case 16:if(!e.t3){e.next=20;break}e.t5=void 0,e.next=21;break;case 20:e.t5=n.resourceServerURLs;case 21:if(e.t6=i=e.t5,e.t2=null!==e.t6,!e.t2){e.next=25;break}e.t2=void 0!==i;case 25:if(!e.t2){e.next=29;break}e.t7=i,e.next=30;break;case 29:e.t7=[];case 30:e.t8=e.t7,e.t9=(0,e.t1)(e.t8),e.t10=[null==s?void 0:s.serverOrigin],h=e.t0.concat.call(e.t0,e.t9,e.t10);case 34:if(!(m<h.length)){e.next=42;break}if(b=h[m],!(null===(o=t.tokenEndpoint)||void 0===o?void 0:o.startsWith(b))){e.next=39;break}return d=!0,e.abrupt("break",42);case 39:m++,e.next=34;break;case 42:if(t.shouldReplayAfterRefresh&&l.setTemporaryDataParameter("custom_grant_config",JSON.stringify(t)),!u&&!d){e.next=47;break}return e.abrupt("return",r.requestCustomGrant(t).then((function(e){return zX(void 0,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t.preventSignOutURLUpdate&&(a=!0),!t.returnsSession){n.next=6;break}return c.refreshAccessTokenAutomatically(),n.abrupt("return",r.getBasicUserInfo());case 6:return n.abrupt("return",e);case 7:case"end":return n.stop()}}),n)})))})).catch((function(t){return Promise.reject(t)})));case 47:return e.abrupt("return",Promise.reject(new Kv("MAIN_THREAD_CLIENT-RCG-IV01","main-thread-client","requestCustomGrant","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`")));case 48:case"end":return e.stop()}}),e)})))},C=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){var e;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,r.refreshAccessToken();case 3:return t.next=5,w();case 5:if(!(e=t.sent)){t.next=9;break}return t.next=9,S(e);case 9:return c.refreshAccessTokenAutomatically(),t.abrupt("return",r.getBasicUserInfo());case 13:return t.prev=13,t.t0=t.catch(0),t.abrupt("return",Promise.reject(t.t0));case 16:case"end":return t.stop()}}),t,null,[[0,13]])})))},Y=function(){return r.revokeAccessToken().then((function(){return o.reset(),c.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},R=function(t,e){return zX(void 0,void 0,void 0,BX.mark((function n(){var i,o;return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,l.getConfigData();case 2:if((i=n.sent).storage!==nv.BrowserMemory||!i.enablePKCE){n.next=7;break}return o=Jv.getPKCE(),n.next=7,r.setPKCECode(o);case 7:return n.abrupt("return",r.requestAccessToken(t,e).then((function(){return zX(void 0,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=Jv,t.next=3,r.getSignOutURL();case 3:return t.t1=t.sent,t.t0.setSignOutURL.call(t.t0,t.t1),c.clearRefreshTokenTimeout(),c.refreshAccessTokenAutomatically(),i.enableOIDCSessionManagement&&V(),t.abrupt("return",r.getBasicUserInfo());case 9:case"end":return t.stop()}}),t)})))})).catch((function(t){return Promise.reject(t)})));case 8:case"end":return n.stop()}}),n)})))},K=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){var e,n,i,c,a,u,d;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getConfigData();case 2:if(n=t.sent,!Jv.isInitializedSilentSignIn()){t.next=7;break}return t.next=6,o.receivePromptNoneResponse();case 6:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById("rpIFrame"),c=null===(e=null==i?void 0:i.contentDocument)||void 0===e?void 0:e.getElementById("promptNoneIFrame"),t.prev=9,t.next=12,r.getAuthorizationURL({prompt:"none",state:"sign-in-silently"});case 12:if(a=t.sent,(u=new URL(a)).searchParams.set("response_mode","query"),d=u.toString(),n.storage!==nv.BrowserMemory||!n.enablePKCE){t.next=22;break}return t.t0=Jv,t.next=20,r.getPKCECode();case 20:t.t1=t.sent,t.t0.setPKCE.call(t.t0,t.t1);case 22:c.src=d,t.next=28;break;case 25:return t.prev=25,t.t2=t.catch(9),t.abrupt("return",Promise.reject(t.t2));case 28:return t.abrupt("return",new Promise((function(t,e){var n=setTimeout((function(){t(!1)}),1e4);window.addEventListener("message",(function i(r){return zX(void 0,void 0,void 0,BX.mark((function c(){var l,o,a;return BX.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:"check_session_signed_out"==(null==(a=r.data)?void 0:a.type)&&(window.removeEventListener("message",i),clearTimeout(n),t(!1)),"check_session_signed_in"==(null==a?void 0:a.type)&&(null===(l=null==a?void 0:a.data)||void 0===l?void 0:l.code)&&R(a.data.code,null===(o=null==a?void 0:a.data)||void 0===o?void 0:o.sessionState).then((function(e){window.removeEventListener("message",i),t(e)})).catch((function(t){window.removeEventListener("message",i),e(t)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 29:case"end":return t.stop()}}),t,null,[[9,25]])})))},L=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.getBasicUserInfo());case 1:case"end":return t.stop()}}),t)})))},J=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.getDecodedIDToken());case 1:case"end":return t.stop()}}),t)})))},x=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.getIDToken());case 1:case"end":return t.stop()}}),t)})))},H=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t)})))},N=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.getAccessToken());case 1:case"end":return t.stop()}}),t)})))},k=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.isAuthenticated());case 1:case"end":return t.stop()}}),t)})))},U=function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){var n,i,c;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.getConfigData();case 2:return n=e.sent,i=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),c=Object.assign(Object.assign({},n),t),e.next=7,r.updateConfig(c);case 7:c.enableOIDCSessionManagement&&i&&(o.reset(),V());case 8:case"end":return e.stop()}}),e)})))},w=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){var e;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getTemporaryDataParameter("custom_grant_config");case 2:if(!(e=t.sent)){t.next=7;break}return t.abrupt("return",JSON.parse(e));case 7:return t.abrupt("return",null);case 8:case"end":return t.stop()}}),t)})))},e.abrupt("return",{disableHttpHandler:f,enableHttpHandler:G,getAccessToken:N,getBasicUserInfo:L,getDecodedIDToken:J,getHttpClient:g,getIDToken:x,getOIDCServiceEndpoints:H,httpRequest:I,httpRequestAll:X,isAuthenticated:k,refreshAccessToken:C,requestCustomGrant:S,revokeAccessToken:Y,setHttpRequestErrorCallback:y,setHttpRequestFinishCallback:p,setHttpRequestStartCallback:b,setHttpRequestSuccessCallback:Z,signIn:W,signOut:v,trySignInSilently:K,updateConfig:U});case 41:case"end":return e.stop()}}),e)})))};function zv(t,e,n){var i=void 0===e?null:e,r=function(t,e){var n=atob(t);if(e){for(var i=new Uint8Array(n.length),r=0,c=n.length;r<c;++r)i[r]=n.charCodeAt(r);return String.fromCharCode.apply(null,new Uint16Array(i.buffer))}return n}(t,void 0!==n&&n),c=r.indexOf("\n",10)+1,l=r.substring(c)+(i?"//# sourceMappingURL="+i:""),o=new Blob([l],{type:"application/javascript"});return URL.createObjectURL(o)}var jv,Av,Mv,Pv,Qv=(jv="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiZGVmYXVsdCIpP2UuZGVmYXVsdDplfWZ1bmN0aW9uIHQoZSx0LHIpe3JldHVybiBlKHI9e3BhdGg6dCxleHBvcnRzOnt9LHJlcXVpcmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgcmVxdWlyZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IEByb2xsdXAvcGx1Z2luLWNvbW1vbmpzIil9KG51bGw9PXQmJnIucGF0aCl9fSxyLmV4cG9ydHMpLHIuZXhwb3J0c312YXIgcj10KChmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yPyhlLmV4cG9ydHM9dD1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCk6KGUuZXhwb3J0cz10PWZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwKSx0KHIpfWUuZXhwb3J0cz10LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxuPWUociksbz10KChmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXt2YXIgdCxyPU9iamVjdC5wcm90b3R5cGUsbz1yLmhhc093blByb3BlcnR5LGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sYT1pLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIscz1pLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHU9aS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIGMoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7Yyh7fSwiIil9Y2F0Y2goZSl7Yz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gZihlLHQscixuKXt2YXIgbz10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIHk/dDp5LGk9T2JqZWN0LmNyZWF0ZShvLnByb3RvdHlwZSksYT1uZXcgUChufHxbXSk7cmV0dXJuIGkuX2ludm9rZT1mdW5jdGlvbihlLHQscil7dmFyIG49bDtyZXR1cm4gZnVuY3Rpb24obyxpKXtpZihuPT09ZCl0aHJvdyBuZXcgRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmciKTtpZihuPT09dil7aWYoInRocm93Ij09PW8pdGhyb3cgaTtyZXR1cm4gTygpfWZvcihyLm1ldGhvZD1vLHIuYXJnPWk7Oyl7dmFyIGE9ci5kZWxlZ2F0ZTtpZihhKXt2YXIgcz1BKGEscik7aWYocyl7aWYocz09PWcpY29udGludWU7cmV0dXJuIHN9fWlmKCJuZXh0Ij09PXIubWV0aG9kKXIuc2VudD1yLl9zZW50PXIuYXJnO2Vsc2UgaWYoInRocm93Ij09PXIubWV0aG9kKXtpZihuPT09bCl0aHJvdyBuPXYsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPWQ7dmFyIHU9aChlLHQscik7aWYoIm5vcm1hbCI9PT11LnR5cGUpe2lmKG49ci5kb25lP3Y6cCx1LmFyZz09PWcpY29udGludWU7cmV0dXJue3ZhbHVlOnUuYXJnLGRvbmU6ci5kb25lfX0idGhyb3ciPT09dS50eXBlJiYobj12LHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9dS5hcmcpfX19KGUscixhKSxpfWZ1bmN0aW9uIGgoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9Zjt2YXIgbD0ic3VzcGVuZGVkU3RhcnQiLHA9InN1c3BlbmRlZFlpZWxkIixkPSJleGVjdXRpbmciLHY9ImNvbXBsZXRlZCIsZz17fTtmdW5jdGlvbiB5KCl7fWZ1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gdygpe312YXIgYj17fTtjKGIsYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgaz1PYmplY3QuZ2V0UHJvdG90eXBlT2YseD1rJiZrKGsoQyhbXSkpKTt4JiZ4IT09ciYmby5jYWxsKHgsYSkmJihiPXgpO3ZhciBfPXcucHJvdG90eXBlPXkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoYik7ZnVuY3Rpb24gUyhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe2MoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gRShlLHQpe2Z1bmN0aW9uIHIoaSxhLHMsdSl7dmFyIGM9aChlW2ldLGUsYSk7aWYoInRocm93IiE9PWMudHlwZSl7dmFyIGY9Yy5hcmcsbD1mLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09PW4obCkmJm8uY2FsbChsLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7cigibmV4dCIsZSxzLHUpfSksKGZ1bmN0aW9uKGUpe3IoInRocm93IixlLHMsdSl9KSk6dC5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKGUpe2YudmFsdWU9ZSxzKGYpfSksKGZ1bmN0aW9uKGUpe3JldHVybiByKCJ0aHJvdyIsZSxzLHUpfSkpfXUoYy5hcmcpfXZhciBpO3RoaXMuX2ludm9rZT1mdW5jdGlvbihlLG4pe2Z1bmN0aW9uIG8oKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsbyl7cihlLG4sdCxvKX0pKX1yZXR1cm4gaT1pP2kudGhlbihvLG8pOm8oKX19ZnVuY3Rpb24gQShlLHIpe3ZhciBuPWUuaXRlcmF0b3Jbci5tZXRob2RdO2lmKG49PT10KXtpZihyLmRlbGVnYXRlPW51bGwsInRocm93Ij09PXIubWV0aG9kKXtpZihlLml0ZXJhdG9yLnJldHVybiYmKHIubWV0aG9kPSJyZXR1cm4iLHIuYXJnPXQsQShlLHIpLCJ0aHJvdyI9PT1yLm1ldGhvZCkpcmV0dXJuIGc7ci5tZXRob2Q9InRocm93IixyLmFyZz1uZXcgVHlwZUVycm9yKCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kIil9cmV0dXJuIGd9dmFyIG89aChuLGUuaXRlcmF0b3Isci5hcmcpO2lmKCJ0aHJvdyI9PT1vLnR5cGUpcmV0dXJuIHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9by5hcmcsci5kZWxlZ2F0ZT1udWxsLGc7dmFyIGk9by5hcmc7cmV0dXJuIGk/aS5kb25lPyhyW2UucmVzdWx0TmFtZV09aS52YWx1ZSxyLm5leHQ9ZS5uZXh0TG9jLCJyZXR1cm4iIT09ci5tZXRob2QmJihyLm1ldGhvZD0ibmV4dCIsci5hcmc9dCksci5kZWxlZ2F0ZT1udWxsLGcpOmk6KHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSxyLmRlbGVnYXRlPW51bGwsZyl9ZnVuY3Rpb24gVChlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBSKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBQKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goVCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBDKGUpe2lmKGUpe3ZhciByPWVbYV07aWYocilyZXR1cm4gci5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIG49LTEsaT1mdW5jdGlvbiByKCl7Zm9yKDsrK248ZS5sZW5ndGg7KWlmKG8uY2FsbChlLG4pKXJldHVybiByLnZhbHVlPWVbbl0sci5kb25lPSExLHI7cmV0dXJuIHIudmFsdWU9dCxyLmRvbmU9ITAscn07cmV0dXJuIGkubmV4dD1pfX1yZXR1cm57bmV4dDpPfX1mdW5jdGlvbiBPKCl7cmV0dXJue3ZhbHVlOnQsZG9uZTohMH19cmV0dXJuIG0ucHJvdG90eXBlPXcsYyhfLCJjb25zdHJ1Y3RvciIsdyksYyh3LCJjb25zdHJ1Y3RvciIsbSksbS5kaXNwbGF5TmFtZT1jKHcsdSwiR2VuZXJhdG9yRnVuY3Rpb24iKSxlLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24oZSl7dmFyIHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUuY29uc3RydWN0b3I7cmV0dXJuISF0JiYodD09PW18fCJHZW5lcmF0b3JGdW5jdGlvbiI9PT0odC5kaXNwbGF5TmFtZXx8dC5uYW1lKSl9LGUubWFyaz1mdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHcpOihlLl9fcHJvdG9fXz13LGMoZSx1LCJHZW5lcmF0b3JGdW5jdGlvbiIpKSxlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKF8pLGV9LGUuYXdyYXA9ZnVuY3Rpb24oZSl7cmV0dXJue19fYXdhaXQ6ZX19LFMoRS5wcm90b3R5cGUpLGMoRS5wcm90b3R5cGUscywoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxlLkFzeW5jSXRlcmF0b3I9RSxlLmFzeW5jPWZ1bmN0aW9uKHQscixuLG8saSl7dm9pZCAwPT09aSYmKGk9UHJvbWlzZSk7dmFyIGE9bmV3IEUoZih0LHIsbixvKSxpKTtyZXR1cm4gZS5pc0dlbmVyYXRvckZ1bmN0aW9uKHIpP2E6YS5uZXh0KCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZG9uZT9lLnZhbHVlOmEubmV4dCgpfSkpfSxTKF8pLGMoXyx1LCJHZW5lcmF0b3IiKSxjKF8sYSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxjKF8sInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBHZW5lcmF0b3JdIn0pKSxlLmtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdC5wdXNoKHIpO3JldHVybiB0LnJldmVyc2UoKSxmdW5jdGlvbiByKCl7Zm9yKDt0Lmxlbmd0aDspe3ZhciBuPXQucG9wKCk7aWYobiBpbiBlKXJldHVybiByLnZhbHVlPW4sci5kb25lPSExLHJ9cmV0dXJuIHIuZG9uZT0hMCxyfX0sZS52YWx1ZXM9QyxQLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UCxyZXNldDpmdW5jdGlvbihlKXtpZih0aGlzLnByZXY9MCx0aGlzLm5leHQ9MCx0aGlzLnNlbnQ9dGhpcy5fc2VudD10LHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXQsdGhpcy50cnlFbnRyaWVzLmZvckVhY2goUiksIWUpZm9yKHZhciByIGluIHRoaXMpInQiPT09ci5jaGFyQXQoMCkmJm8uY2FsbCh0aGlzLHIpJiYhaXNOYU4oK3Iuc2xpY2UoMSkpJiYodGhpc1tyXT10KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuZG9uZT0hMDt2YXIgZT10aGlzLnRyeUVudHJpZXNbMF0uY29tcGxldGlvbjtpZigidGhyb3ciPT09ZS50eXBlKXRocm93IGUuYXJnO3JldHVybiB0aGlzLnJ2YWx9LGRpc3BhdGNoRXhjZXB0aW9uOmZ1bmN0aW9uKGUpe2lmKHRoaXMuZG9uZSl0aHJvdyBlO3ZhciByPXRoaXM7ZnVuY3Rpb24gbihuLG8pe3JldHVybiBzLnR5cGU9InRocm93IixzLmFyZz1lLHIubmV4dD1uLG8mJihyLm1ldGhvZD0ibmV4dCIsci5hcmc9dCksISFvfWZvcih2YXIgaT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7aT49MDstLWkpe3ZhciBhPXRoaXMudHJ5RW50cmllc1tpXSxzPWEuY29tcGxldGlvbjtpZigicm9vdCI9PT1hLnRyeUxvYylyZXR1cm4gbigiZW5kIik7aWYoYS50cnlMb2M8PXRoaXMucHJldil7dmFyIHU9by5jYWxsKGEsImNhdGNoTG9jIiksYz1vLmNhbGwoYSwiZmluYWxseUxvYyIpO2lmKHUmJmMpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBuKGEuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG4oYS5maW5hbGx5TG9jKX1lbHNlIGlmKHUpe2lmKHRoaXMucHJldjxhLmNhdGNoTG9jKXJldHVybiBuKGEuY2F0Y2hMb2MsITApfWVsc2V7aWYoIWMpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxhLmZpbmFsbHlMb2MpcmV0dXJuIG4oYS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIG49dGhpcy50cnlFbnRyaWVzW3JdO2lmKG4udHJ5TG9jPD10aGlzLnByZXYmJm8uY2FsbChuLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxuLmZpbmFsbHlMb2Mpe3ZhciBpPW47YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgYT1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gYS50eXBlPWUsYS5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxnKTp0aGlzLmNvbXBsZXRlKGEpfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGd9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksUihyKSxnfX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBvPW4uYXJnO1Iocil9cmV0dXJuIG99fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpDKGUpLHJlc3VsdE5hbWU6cixuZXh0TG9jOm59LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dCksZ319LGV9KGUuZXhwb3J0cyk7dHJ5e3JlZ2VuZXJhdG9yUnVudGltZT10fWNhdGNoKGUpeyJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgZ2xvYmFsVGhpcz8idW5kZWZpbmVkIjpuKGdsb2JhbFRoaXMpKT9nbG9iYWxUaGlzLnJlZ2VuZXJhdG9yUnVudGltZT10OkZ1bmN0aW9uKCJyIiwicmVnZW5lcmF0b3JSdW50aW1lID0gciIpKHQpfX0pKSxpPW87ZnVuY3Rpb24gYShlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBhKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9vKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihhLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX12YXIgcz10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLHU9dCgoZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHMoZSl9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxjPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lWyJAQGl0ZXJhdG9yIl0pcmV0dXJuIEFycmF5LmZyb20oZSl9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxmPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gcyhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3MoZSx0KTp2b2lkIDB9fSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksaD10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLGw9ZSh0KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSl8fGMoZSl8fGYoZSl8fGgoKX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpKSxwPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksZD10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1udWxsPT1lP251bGw6InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKG51bGwhPXIpe3ZhciBuLG8saT1bXSxhPSEwLHM9ITE7dHJ5e2ZvcihyPXIuY2FsbChlKTshKGE9KG49ci5uZXh0KCkpLmRvbmUpJiYoaS5wdXNoKG4udmFsdWUpLCF0fHxpLmxlbmd0aCE9PXQpO2E9ITApO31jYXRjaChlKXtzPSEwLG89ZX1maW5hbGx5e3RyeXthfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgb319cmV0dXJuIGl9fSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksdj10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksZz10KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlKXx8ZChlLHQpfHxmKGUsdCl8fHYoKX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLHk9ZShnKSxtPXQoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiByJiZ0KGUucHJvdG90eXBlLHIpLG4mJnQoZSxuKSxlfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksdz1lKG0pLGI9ZSh0KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSkpLGs9dCgoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQscixuLG8saSxhKXt0cnl7dmFyIHM9ZVtpXShhKSx1PXMudmFsdWV9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgcihlKX1zLmRvbmU/dCh1KTpQcm9taXNlLnJlc29sdmUodSkudGhlbihuLG8pfWUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obyxpKXt2YXIgYT1lLmFwcGx5KHIsbik7ZnVuY3Rpb24gcyhlKXt0KGEsbyxpLHMsdSwibmV4dCIsZSl9ZnVuY3Rpb24gdShlKXt0KGEsbyxpLHMsdSwidGhyb3ciLGUpfXModm9pZCAwKX0pKX19LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSx4PWUoayksXz1lKHQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSkpLFM9dCgoZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLEU9ZShTKSxBPXQoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixuKXtyZXR1cm4gZS5leHBvcnRzPXQ9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCx0KHIsbil9ZS5leHBvcnRzPXQsZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwfSkpLFQ9ZSh0KChmdW5jdGlvbihlKXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmQShlLHQpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSkpLFI9dCgoZnVuY3Rpb24oZSl7dmFyIHQ9ci5kZWZhdWx0O2UuZXhwb3J0cz1mdW5jdGlvbihlLHIpe2lmKHImJigib2JqZWN0Ij09PXQocil8fCJmdW5jdGlvbiI9PXR5cGVvZiByKSlyZXR1cm4gcjtpZih2b2lkIDAhPT1yKXRocm93IG5ldyBUeXBlRXJyb3IoIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkIik7cmV0dXJuIFMoZSl9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxQPWUoUiksQz10KChmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3JldHVybiBlLmV4cG9ydHM9dD1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITAsdChyKX1lLmV4cG9ydHM9dCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksTz1lKEMpLEQ9dCgoZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybi0xIT09RnVuY3Rpb24udG9TdHJpbmcuY2FsbChlKS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIil9LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxJPXQoKGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMH0pKSxVPXQoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQocixuLG8pe3JldHVybiBJKCk/KGUuZXhwb3J0cz10PVJlZmxlY3QuY29uc3RydWN0LGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0cyxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCk6KGUuZXhwb3J0cz10PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1bbnVsbF07bi5wdXNoLmFwcGx5KG4sdCk7dmFyIG89bmV3KEZ1bmN0aW9uLmJpbmQuYXBwbHkoZSxuKSk7cmV0dXJuIHImJkEobyxyLnByb3RvdHlwZSksb30sZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwKSx0LmFwcGx5KG51bGwsYXJndW1lbnRzKX1lLmV4cG9ydHM9dCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksTT10KChmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGUuZXhwb3J0cz10PWZ1bmN0aW9uKGUpe2lmKG51bGw9PT1lfHwhRChlKSlyZXR1cm4gZTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO2lmKHZvaWQgMCE9PW4pe2lmKG4uaGFzKGUpKXJldHVybiBuLmdldChlKTtuLnNldChlLHQpfWZ1bmN0aW9uIHQoKXtyZXR1cm4gVShlLGFyZ3VtZW50cyxDKHRoaXMpLmNvbnN0cnVjdG9yKX1yZXR1cm4gdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksQSh0LGUpfSxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITAsdChyKX1lLmV4cG9ydHM9dCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITB9KSksTD1lKE0pLGo9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSxIPVtdLHE9W10sQj0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxOPSExO2Z1bmN0aW9uIEsoKXtOPSEwO2Zvcih2YXIgZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsdD0wLHI9ZS5sZW5ndGg7dDxyOysrdClIW3RdPWVbdF0scVtlLmNoYXJDb2RlQXQodCldPXQ7cVsiLSIuY2hhckNvZGVBdCgwKV09NjIscVsiXyIuY2hhckNvZGVBdCgwKV09NjN9ZnVuY3Rpb24gRihlLHQscil7Zm9yKHZhciBuLG8saT1bXSxhPXQ7YTxyO2ErPTMpbj0oZVthXTw8MTYpKyhlW2ErMV08PDgpK2VbYSsyXSxpLnB1c2goSFsobz1uKT4+MTgmNjNdK0hbbz4+MTImNjNdK0hbbz4+NiY2M10rSFs2MyZvXSk7cmV0dXJuIGkuam9pbigiIil9ZnVuY3Rpb24gWShlKXt2YXIgdDtOfHxLKCk7Zm9yKHZhciByPWUubGVuZ3RoLG49ciUzLG89IiIsaT1bXSxhPTE2MzgzLHM9MCx1PXItbjtzPHU7cys9YSlpLnB1c2goRihlLHMscythPnU/dTpzK2EpKTtyZXR1cm4gMT09PW4/KHQ9ZVtyLTFdLG8rPUhbdD4+Ml0sbys9SFt0PDw0JjYzXSxvKz0iPT0iKToyPT09biYmKHQ9KGVbci0yXTw8OCkrZVtyLTFdLG8rPUhbdD4+MTBdLG8rPUhbdD4+NCY2M10sbys9SFt0PDwyJjYzXSxvKz0iPSIpLGkucHVzaChvKSxpLmpvaW4oIiIpfWZ1bmN0aW9uIFcoZSx0LHIsbixvKXt2YXIgaSxhLHM9OCpvLW4tMSx1PSgxPDxzKS0xLGM9dT4+MSxmPS03LGg9cj9vLTE6MCxsPXI/LTE6MSxwPWVbdCtoXTtmb3IoaCs9bCxpPXAmKDE8PC1mKS0xLHA+Pj0tZixmKz1zO2Y+MDtpPTI1NippK2VbdCtoXSxoKz1sLGYtPTgpO2ZvcihhPWkmKDE8PC1mKS0xLGk+Pj0tZixmKz1uO2Y+MDthPTI1NiphK2VbdCtoXSxoKz1sLGYtPTgpO2lmKDA9PT1pKWk9MS1jO2Vsc2V7aWYoaT09PXUpcmV0dXJuIGE/TmFOOjEvMCoocD8tMToxKTthKz1NYXRoLnBvdygyLG4pLGktPWN9cmV0dXJuKHA/LTE6MSkqYSpNYXRoLnBvdygyLGktbil9ZnVuY3Rpb24gSihlLHQscixuLG8saSl7dmFyIGEscyx1LGM9OCppLW8tMSxmPSgxPDxjKS0xLGg9Zj4+MSxsPTIzPT09bz9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6aS0xLGQ9bj8xOi0xLHY9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PU1hdGguYWJzKHQpLGlzTmFOKHQpfHx0PT09MS8wPyhzPWlzTmFOKHQpPzE6MCxhPWYpOihhPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLHQqKHU9TWF0aC5wb3coMiwtYSkpPDEmJihhLS0sdSo9MiksKHQrPWEraD49MT9sL3U6bCpNYXRoLnBvdygyLDEtaCkpKnU+PTImJihhKyssdS89MiksYStoPj1mPyhzPTAsYT1mKTphK2g+PTE/KHM9KHQqdS0xKSpNYXRoLnBvdygyLG8pLGErPWgpOihzPXQqTWF0aC5wb3coMixoLTEpKk1hdGgucG93KDIsbyksYT0wKSk7bz49ODtlW3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsby09OCk7Zm9yKGE9YTw8b3xzLGMrPW87Yz4wO2VbcitwXT0yNTUmYSxwKz1kLGEvPTI1NixjLT04KTtlW3IrcC1kXXw9MTI4KnZ9dmFyIHo9e30udG9TdHJpbmcsRz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT16LmNhbGwoZSl9O2Z1bmN0aW9uIFYoKXtyZXR1cm4gWC5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiAkKGUsdCl7aWYoVigpPHQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoIik7cmV0dXJuIFguVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSkuX19wcm90b19fPVgucHJvdG90eXBlOihudWxsPT09ZSYmKGU9bmV3IFgodCkpLGUubGVuZ3RoPXQpLGV9ZnVuY3Rpb24gWChlLHQscil7aWYoIShYLlRZUEVEX0FSUkFZX1NVUFBPUlR8fHRoaXMgaW5zdGFuY2VvZiBYKSlyZXR1cm4gbmV3IFgoZSx0LHIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gZWUodGhpcyxlKX1yZXR1cm4gWih0aGlzLGUsdCxyKX1mdW5jdGlvbiBaKGUsdCxyLG4pe2lmKCJudW1iZXIiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJyk7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2Z1bmN0aW9uKGUsdCxyLG4pe2lmKHQuYnl0ZUxlbmd0aCxyPDB8fHQuYnl0ZUxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCInb2Zmc2V0JyBpcyBvdXQgb2YgYm91bmRzIik7aWYodC5ieXRlTGVuZ3RoPHIrKG58fDApKXRocm93IG5ldyBSYW5nZUVycm9yKCInbGVuZ3RoJyBpcyBvdXQgb2YgYm91bmRzIik7dD12b2lkIDA9PT1yJiZ2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCxyKTpuZXcgVWludDhBcnJheSh0LHIsbik7WC5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQpLl9fcHJvdG9fXz1YLnByb3RvdHlwZTplPXRlKGUsdCk7cmV0dXJuIGV9KGUsdCxyLG4pOiJzdHJpbmciPT10eXBlb2YgdD9mdW5jdGlvbihlLHQscil7InN0cmluZyI9PXR5cGVvZiByJiYiIiE9PXJ8fChyPSJ1dGY4Iik7aWYoIVguaXNFbmNvZGluZyhyKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciZW5jb2RpbmciIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmcnKTt2YXIgbj0wfG9lKHQsciksbz0oZT0kKGUsbikpLndyaXRlKHQscik7byE9PW4mJihlPWUuc2xpY2UoMCxvKSk7cmV0dXJuIGV9KGUsdCxyKTpmdW5jdGlvbihlLHQpe2lmKG5lKHQpKXt2YXIgcj0wfHJlKHQubGVuZ3RoKTtyZXR1cm4gMD09PShlPSQoZSxyKSkubGVuZ3RofHx0LmNvcHkoZSwwLDAsciksZX1pZih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHwibGVuZ3RoImluIHQpcmV0dXJuIm51bWJlciIhPXR5cGVvZiB0Lmxlbmd0aHx8KG49dC5sZW5ndGgpIT1uPyQoZSwwKTp0ZShlLHQpO2lmKCJCdWZmZXIiPT09dC50eXBlJiZHKHQuZGF0YSkpcmV0dXJuIHRlKGUsdC5kYXRhKX12YXIgbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9KGUsdCl9ZnVuY3Rpb24gUShlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKTtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpfWZ1bmN0aW9uIGVlKGUsdCl7aWYoUSh0KSxlPSQoZSx0PDA/MDowfHJlKHQpKSwhWC5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgcj0wO3I8dDsrK3IpZVtyXT0wO3JldHVybiBlfWZ1bmN0aW9uIHRlKGUsdCl7dmFyIHI9dC5sZW5ndGg8MD8wOjB8cmUodC5sZW5ndGgpO2U9JChlLHIpO2Zvcih2YXIgbj0wO248cjtuKz0xKWVbbl09MjU1JnRbbl07cmV0dXJuIGV9ZnVuY3Rpb24gcmUoZSl7aWYoZT49VigpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4IitWKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIG5lKGUpe3JldHVybiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX1mdW5jdGlvbiBvZShlLHQpe2lmKG5lKGUpKXJldHVybiBlLmxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpfHxlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiBlLmJ5dGVMZW5ndGg7InN0cmluZyIhPXR5cGVvZiBlJiYoZT0iIitlKTt2YXIgcj1lLmxlbmd0aDtpZigwPT09cilyZXR1cm4gMDtmb3IodmFyIG49ITE7Oylzd2l0Y2godCl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ugdm9pZCAwOnJldHVybiBPZShlKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKnI7Y2FzZSJoZXgiOnJldHVybiByPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIERlKGUpLmxlbmd0aDtkZWZhdWx0OmlmKG4pcmV0dXJuIE9lKGUpLmxlbmd0aDt0PSgiIit0KS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIGllKGUsdCxyKXt2YXIgbj0hMTtpZigodm9pZCAwPT09dHx8dDwwKSYmKHQ9MCksdD50aGlzLmxlbmd0aClyZXR1cm4iIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVybiIiO2lmKChyPj4+PTApPD0odD4+Pj0wKSlyZXR1cm4iIjtmb3IoZXx8KGU9InV0ZjgiKTs7KXN3aXRjaChlKXtjYXNlImhleCI6cmV0dXJuIGJlKHRoaXMsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBnZSh0aGlzLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIG1lKHRoaXMsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiB3ZSh0aGlzLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiB2ZSh0aGlzLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBrZSh0aGlzLHQscik7ZGVmYXVsdDppZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZSk7ZT0oZSsiIikudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBhZShlLHQscil7dmFyIG49ZVt0XTtlW3RdPWVbcl0sZVtyXT1ufWZ1bmN0aW9uIHNlKGUsdCxyLG4sbyl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2Ygcj8obj1yLHI9MCk6cj4yMTQ3NDgzNjQ3P3I9MjE0NzQ4MzY0NzpyPC0yMTQ3NDgzNjQ4JiYocj0tMjE0NzQ4MzY0OCkscj0rcixpc05hTihyKSYmKHI9bz8wOmUubGVuZ3RoLTEpLHI8MCYmKHI9ZS5sZW5ndGgrcikscj49ZS5sZW5ndGgpe2lmKG8pcmV0dXJuLTE7cj1lLmxlbmd0aC0xfWVsc2UgaWYocjwwKXtpZighbylyZXR1cm4tMTtyPTB9aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1YLmZyb20odCxuKSksbmUodCkpcmV0dXJuIDA9PT10Lmxlbmd0aD8tMTp1ZShlLHQscixuLG8pO2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdCY9MjU1LFguVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/bz9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSx0LHIpOnVlKGUsW3RdLHIsbixvKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiB1ZShlLHQscixuLG8pe3ZhciBpLGE9MSxzPWUubGVuZ3RoLHU9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKCJ1Y3MyIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTthPTIscy89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiAxPT09YT9lW3RdOmUucmVhZFVJbnQxNkJFKHQqYSl9aWYobyl7dmFyIGY9LTE7Zm9yKGk9cjtpPHM7aSsrKWlmKGMoZSxpKT09PWModCwtMT09PWY/MDppLWYpKXtpZigtMT09PWYmJihmPWkpLGktZisxPT09dSlyZXR1cm4gZiphfWVsc2UtMSE9PWYmJihpLT1pLWYpLGY9LTF9ZWxzZSBmb3Iocit1PnMmJihyPXMtdSksaT1yO2k+PTA7aS0tKXtmb3IodmFyIGg9ITAsbD0wO2w8dTtsKyspaWYoYyhlLGkrbCkhPT1jKHQsbCkpe2g9ITE7YnJlYWt9aWYoaClyZXR1cm4gaX1yZXR1cm4tMX1mdW5jdGlvbiBjZShlLHQscixuKXtyPU51bWJlcihyKXx8MDt2YXIgbz1lLmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5vJiYobj1vKTpuPW87dmFyIGk9dC5sZW5ndGg7aWYoaSUyIT0wKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO24+aS8yJiYobj1pLzIpO2Zvcih2YXIgYT0wO2E8bjsrK2Epe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqYSwyKSwxNik7aWYoaXNOYU4ocykpcmV0dXJuIGE7ZVtyK2FdPXN9cmV0dXJuIGF9ZnVuY3Rpb24gZmUoZSx0LHIsbil7cmV0dXJuIEllKE9lKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIGhlKGUsdCxyLG4pe3JldHVybiBJZShmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KytyKXQucHVzaCgyNTUmZS5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gdH0odCksZSxyLG4pfWZ1bmN0aW9uIGxlKGUsdCxyLG4pe3JldHVybiBoZShlLHQscixuKX1mdW5jdGlvbiBwZShlLHQscixuKXtyZXR1cm4gSWUoRGUodCksZSxyLG4pfWZ1bmN0aW9uIGRlKGUsdCxyLG4pe3JldHVybiBJZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLG8saT1bXSxhPTA7YTxlLmxlbmd0aCYmISgodC09Mik8MCk7KythKW49KHI9ZS5jaGFyQ29kZUF0KGEpKT4+OCxvPXIlMjU2LGkucHVzaChvKSxpLnB1c2gobik7cmV0dXJuIGl9KHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIHZlKGUsdCxyKXtyZXR1cm4gMD09PXQmJnI9PT1lLmxlbmd0aD9ZKGUpOlkoZS5zbGljZSh0LHIpKX1mdW5jdGlvbiBnZShlLHQscil7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIG49W10sbz10O288cjspe3ZhciBpLGEscyx1LGM9ZVtvXSxmPW51bGwsaD1jPjIzOT80OmM+MjIzPzM6Yz4xOTE/MjoxO2lmKG8raDw9cilzd2l0Y2goaCl7Y2FzZSAxOmM8MTI4JiYoZj1jKTticmVhaztjYXNlIDI6MTI4PT0oMTkyJihpPWVbbysxXSkpJiYodT0oMzEmYyk8PDZ8NjMmaSk+MTI3JiYoZj11KTticmVhaztjYXNlIDM6aT1lW28rMV0sYT1lW28rMl0sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImYSkmJih1PSgxNSZjKTw8MTJ8KDYzJmkpPDw2fDYzJmEpPjIwNDcmJih1PDU1Mjk2fHx1PjU3MzQzKSYmKGY9dSk7YnJlYWs7Y2FzZSA0Omk9ZVtvKzFdLGE9ZVtvKzJdLHM9ZVtvKzNdLDEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJmEpJiYxMjg9PSgxOTImcykmJih1PSgxNSZjKTw8MTh8KDYzJmkpPDwxMnwoNjMmYSk8PDZ8NjMmcyk+NjU1MzUmJnU8MTExNDExMiYmKGY9dSl9bnVsbD09PWY/KGY9NjU1MzMsaD0xKTpmPjY1NTM1JiYoZi09NjU1MzYsbi5wdXNoKGY+Pj4xMCYxMDIzfDU1Mjk2KSxmPTU2MzIwfDEwMjMmZiksbi5wdXNoKGYpLG8rPWh9cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2lmKHQ8PXllKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlKTt2YXIgcj0iIixuPTA7Zm9yKDtuPHQ7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUuc2xpY2UobixuKz15ZSkpO3JldHVybiByfShuKX1YLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwPT09ai5UWVBFRF9BUlJBWV9TVVBQT1JUfHxqLlRZUEVEX0FSUkFZX1NVUFBPUlQsWC5wb29sU2l6ZT04MTkyLFguX2F1Z21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19fPVgucHJvdG90eXBlLGV9LFguZnJvbT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFoobnVsbCxlLHQscil9LFguVFlQRURfQVJSQVlfU1VQUE9SVCYmKFgucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxYLl9fcHJvdG9fXz1VaW50OEFycmF5KSxYLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIFEodCksdDw9MD8kKGUsdCk6dm9pZCAwIT09cj8ic3RyaW5nIj09dHlwZW9mIG4/JChlLHQpLmZpbGwocixuKTokKGUsdCkuZmlsbChyKTokKGUsdCl9KG51bGwsZSx0LHIpfSxYLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe3JldHVybiBlZShudWxsLGUpfSxYLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtyZXR1cm4gZWUobnVsbCxlKX0sWC5pc0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmKCEhZS5faXNCdWZmZXJ8fFVlKGUpfHxmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5yZWFkRmxvYXRMRSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuc2xpY2UmJlVlKGUuc2xpY2UoMCwwKSl9KGUpKX0sWC5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7aWYoIW5lKGUpfHwhbmUodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycyIpO2lmKGU9PT10KXJldHVybiAwO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXQubGVuZ3RoLG89MCxpPU1hdGgubWluKHIsbik7bzxpOysrbylpZihlW29dIT09dFtvXSl7cj1lW29dLG49dFtvXTticmVha31yZXR1cm4gcjxuPy0xOm48cj8xOjB9LFguaXNFbmNvZGluZz1mdW5jdGlvbihlKXtzd2l0Y2goU3RyaW5nKGUpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sWC5jb25jYXQ9ZnVuY3Rpb24oZSx0KXtpZighRyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PWUubGVuZ3RoKXJldHVybiBYLmFsbG9jKDApO3ZhciByO2lmKHZvaWQgMD09PXQpZm9yKHQ9MCxyPTA7cjxlLmxlbmd0aDsrK3IpdCs9ZVtyXS5sZW5ndGg7dmFyIG49WC5hbGxvY1Vuc2FmZSh0KSxvPTA7Zm9yKHI9MDtyPGUubGVuZ3RoOysrcil7dmFyIGk9ZVtyXTtpZighbmUoaSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2kuY29weShuLG8pLG8rPWkubGVuZ3RofXJldHVybiBufSxYLmJ5dGVMZW5ndGg9b2UsWC5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLFgucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlMiE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9MilhZSh0aGlzLHQsdCsxKTtyZXR1cm4gdGhpc30sWC5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz00KWFlKHRoaXMsdCx0KzMpLGFlKHRoaXMsdCsxLHQrMik7cmV0dXJuIHRoaXN9LFgucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9OClhZSh0aGlzLHQsdCs3KSxhZSh0aGlzLHQrMSx0KzYpLGFlKHRoaXMsdCsyLHQrNSksYWUodGhpcyx0KzMsdCs0KTtyZXR1cm4gdGhpc30sWC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0wfHRoaXMubGVuZ3RoO3JldHVybiAwPT09ZT8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9nZSh0aGlzLDAsZSk6aWUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxYLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIW5lKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PWV8fDA9PT1YLmNvbXBhcmUodGhpcyxlKX0sWC5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmxlbmd0aD4wJiYoZT10aGlzLnRvU3RyaW5nKCJoZXgiLDAsNTApLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKSx0aGlzLmxlbmd0aD41MCYmKGUrPSIgLi4uICIpKSwiPEJ1ZmZlciAiK2UrIj4ifSxYLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUsdCxyLG4sbyl7aWYoIW5lKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1yJiYocj1lP2UubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PW8mJihvPXRoaXMubGVuZ3RoKSx0PDB8fHI+ZS5sZW5ndGh8fG48MHx8bz50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYobj49byYmdD49cilyZXR1cm4gMDtpZihuPj1vKXJldHVybi0xO2lmKHQ+PXIpcmV0dXJuIDE7aWYodGhpcz09PWUpcmV0dXJuIDA7Zm9yKHZhciBpPShvPj4+PTApLShuPj4+PTApLGE9KHI+Pj49MCktKHQ+Pj49MCkscz1NYXRoLm1pbihpLGEpLHU9dGhpcy5zbGljZShuLG8pLGM9ZS5zbGljZSh0LHIpLGY9MDtmPHM7KytmKWlmKHVbZl0hPT1jW2ZdKXtpPXVbZl0sYT1jW2ZdO2JyZWFrfXJldHVybiBpPGE/LTE6YTxpPzE6MH0sWC5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGUsdCxyKX0sWC5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIHNlKHRoaXMsZSx0LHIsITApfSxYLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIHNlKHRoaXMsZSx0LHIsITEpfSxYLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQscixuKXtpZih2b2lkIDA9PT10KW49InV0ZjgiLHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2UgaWYodm9pZCAwPT09ciYmInN0cmluZyI9PXR5cGVvZiB0KW49dCxyPXRoaXMubGVuZ3RoLHQ9MDtlbHNle2lmKCFpc0Zpbml0ZSh0KSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIik7dHw9MCxpc0Zpbml0ZShyKT8ocnw9MCx2b2lkIDA9PT1uJiYobj0idXRmOCIpKToobj1yLHI9dm9pZCAwKX12YXIgbz10aGlzLmxlbmd0aC10O2lmKCh2b2lkIDA9PT1yfHxyPm8pJiYocj1vKSxlLmxlbmd0aD4wJiYocjwwfHx0PDApfHx0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO258fChuPSJ1dGY4Iik7Zm9yKHZhciBpPSExOzspc3dpdGNoKG4pe2Nhc2UiaGV4IjpyZXR1cm4gY2UodGhpcyxlLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gZmUodGhpcyxlLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIGhlKHRoaXMsZSx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIGxlKHRoaXMsZSx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gcGUodGhpcyxlLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBkZSh0aGlzLGUsdCxyKTtkZWZhdWx0OmlmKGkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKTtuPSgiIituKS50b0xvd2VyQ2FzZSgpLGk9ITB9fSxYLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O3ZhciB5ZT00MDk2O2Z1bmN0aW9uIG1lKGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbz10O288cjsrK28pbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVtvXSk7cmV0dXJuIG59ZnVuY3Rpb24gd2UoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBvPXQ7bzxyOysrbyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGVbb10pO3JldHVybiBufWZ1bmN0aW9uIGJlKGUsdCxyKXt2YXIgbj1lLmxlbmd0aDsoIXR8fHQ8MCkmJih0PTApLCghcnx8cjwwfHxyPm4pJiYocj1uKTtmb3IodmFyIG89IiIsaT10O2k8cjsrK2kpbys9Q2UoZVtpXSk7cmV0dXJuIG99ZnVuY3Rpb24ga2UoZSx0LHIpe2Zvcih2YXIgbj1lLnNsaWNlKHQsciksbz0iIixpPTA7aTxuLmxlbmd0aDtpKz0yKW8rPVN0cmluZy5mcm9tQ2hhckNvZGUobltpXSsyNTYqbltpKzFdKTtyZXR1cm4gb31mdW5jdGlvbiB4ZShlLHQscil7aWYoZSUxIT0wfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm9mZnNldCBpcyBub3QgdWludCIpO2lmKGUrdD5yKXRocm93IG5ldyBSYW5nZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoIil9ZnVuY3Rpb24gX2UoZSx0LHIsbixvLGkpe2lmKCFuZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5vfHx0PGkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gU2UoZSx0LHIsbil7dDwwJiYodD02NTUzNSt0KzEpO2Zvcih2YXIgbz0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciwyKTtvPGk7KytvKWVbcitvXT0odCYyNTU8PDgqKG4/bzoxLW8pKT4+PjgqKG4/bzoxLW8pfWZ1bmN0aW9uIEVlKGUsdCxyLG4pe3Q8MCYmKHQ9NDI5NDk2NzI5NSt0KzEpO2Zvcih2YXIgbz0wLGk9TWF0aC5taW4oZS5sZW5ndGgtciw0KTtvPGk7KytvKWVbcitvXT10Pj4+OCoobj9vOjMtbykmMjU1fWZ1bmN0aW9uIEFlKGUsdCxyLG4sbyxpKXtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gVGUoZSx0LHIsbixvKXtyZXR1cm4gb3x8QWUoZSwwLHIsNCksSihlLHQscixuLDIzLDQpLHIrNH1mdW5jdGlvbiBSZShlLHQscixuLG8pe3JldHVybiBvfHxBZShlLDAsciw4KSxKKGUsdCxyLG4sNTIsOCkscis4fVgucHJvdG90eXBlLnNsaWNlPWZ1bmN0aW9uKGUsdCl7dmFyIHIsbj10aGlzLmxlbmd0aDtpZigoZT1+fmUpPDA/KGUrPW4pPDAmJihlPTApOmU+biYmKGU9biksKHQ9dm9pZCAwPT09dD9uOn5+dCk8MD8odCs9bik8MCYmKHQ9MCk6dD5uJiYodD1uKSx0PGUmJih0PWUpLFguVFlQRURfQVJSQVlfU1VQUE9SVCkocj10aGlzLnN1YmFycmF5KGUsdCkpLl9fcHJvdG9fXz1YLnByb3RvdHlwZTtlbHNle3ZhciBvPXQtZTtyPW5ldyBYKG8sdm9pZCAwKTtmb3IodmFyIGk9MDtpPG87KytpKXJbaV09dGhpc1tpK2VdfXJldHVybiByfSxYLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8eGUoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxvPTEsaT0wOysraTx0JiYobyo9MjU2KTspbis9dGhpc1tlK2ldKm87cmV0dXJuIG59LFgucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHx4ZShlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxvPTE7dD4wJiYobyo9MjU2KTspbis9dGhpc1tlKy0tdF0qbztyZXR1cm4gbn0sWC5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsMSx0aGlzLmxlbmd0aCksdGhpc1tlXX0sWC5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh9LFgucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHx4ZShlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxYLnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw0LHRoaXMubGVuZ3RoKSwodGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNikrMTY3NzcyMTYqdGhpc1tlKzNdfSxYLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW2VdKyh0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM10pfSxYLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHx4ZShlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLG89MSxpPTA7KytpPHQmJihvKj0yNTYpOyluKz10aGlzW2UraV0qbztyZXR1cm4gbj49KG8qPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LFgucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fHhlKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXQsbz0xLGk9dGhpc1tlKy0tbl07bj4wJiYobyo9MjU2KTspaSs9dGhpc1tlKy0tbl0qbztyZXR1cm4gaT49KG8qPTEyOCkmJihpLT1NYXRoLnBvdygyLDgqdCkpLGl9LFgucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LFgucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7dHx8eGUoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sWC5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oZSx0KXt0fHx4ZShlLDIsdGhpcy5sZW5ndGgpO3ZhciByPXRoaXNbZSsxXXx0aGlzW2VdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSxYLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHx4ZShlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sWC5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LFgucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsNCx0aGlzLmxlbmd0aCksVyh0aGlzLGUsITAsMjMsNCl9LFgucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fHhlKGUsNCx0aGlzLmxlbmd0aCksVyh0aGlzLGUsITEsMjMsNCl9LFgucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHx4ZShlLDgsdGhpcy5sZW5ndGgpLFcodGhpcyxlLCEwLDUyLDgpfSxYLnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8eGUoZSw4LHRoaXMubGVuZ3RoKSxXKHRoaXMsZSwhMSw1Miw4KX0sWC5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxfZSh0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBvPTEsaT0wO2Zvcih0aGlzW3RdPTI1NSZlOysraTxyJiYobyo9MjU2KTspdGhpc1t0K2ldPWUvbyYyNTU7cmV0dXJuIHQrcn0sWC5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxfZSh0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBvPXItMSxpPTE7Zm9yKHRoaXNbdCtvXT0yNTUmZTstLW8+PTAmJihpKj0yNTYpOyl0aGlzW3Qrb109ZS9pJjI1NTtyZXR1cm4gdCtyfSxYLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fF9lKHRoaXMsZSx0LDEsMjU1LDApLFguVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksdGhpc1t0XT0yNTUmZSx0KzF9LFgucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsMiw2NTUzNSwwKSxYLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpTZSh0aGlzLGUsdCwhMCksdCsyfSxYLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fF9lKHRoaXMsZSx0LDIsNjU1MzUsMCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6U2UodGhpcyxlLHQsITEpLHQrMn0sWC5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxfZSh0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3QrM109ZT4+PjI0LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdF09MjU1JmUpOkVlKHRoaXMsZSx0LCEwKSx0KzR9LFgucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLFguVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpFZSh0aGlzLGUsdCwhMSksdCs0fSxYLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIG89TWF0aC5wb3coMiw4KnItMSk7X2UodGhpcyxlLHQscixvLTEsLW8pfXZhciBpPTAsYT0xLHM9MDtmb3IodGhpc1t0XT0yNTUmZTsrK2k8ciYmKGEqPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QraS0xXSYmKHM9MSksdGhpc1t0K2ldPShlL2E+PjApLXMmMjU1O3JldHVybiB0K3J9LFgucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgbz1NYXRoLnBvdygyLDgqci0xKTtfZSh0aGlzLGUsdCxyLG8tMSwtbyl9dmFyIGk9ci0xLGE9MSxzPTA7Zm9yKHRoaXNbdCtpXT0yNTUmZTstLWk+PTAmJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K2krMV0mJihzPTEpLHRoaXNbdCtpXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxYLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsMSwxMjcsLTEyOCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSxlPDAmJihlPTI1NStlKzEpLHRoaXNbdF09MjU1JmUsdCsxfSxYLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8X2UodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLFguVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOlNlKHRoaXMsZSx0LCEwKSx0KzJ9LFgucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxfZSh0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6U2UodGhpcyxlLHQsITEpLHQrMn0sWC5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fF9lKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksWC5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOkVlKHRoaXMsZSx0LCEwKSx0KzR9LFgucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxfZSh0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLFguVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpFZSh0aGlzLGUsdCwhMSksdCs0fSxYLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBUZSh0aGlzLGUsdCwhMCxyKX0sWC5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gVGUodGhpcyxlLHQsITEscil9LFgucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBSZSh0aGlzLGUsdCwhMCxyKX0sWC5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFJlKHRoaXMsZSx0LCExLHIpfSxYLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHJ8fChyPTApLG58fDA9PT1ufHwobj10aGlzLmxlbmd0aCksdD49ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSx0fHwodD0wKSxuPjAmJm48ciYmKG49ciksbj09PXIpcmV0dXJuIDA7aWYoMD09PWUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYocjwwfHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtuPnRoaXMubGVuZ3RoJiYobj10aGlzLmxlbmd0aCksZS5sZW5ndGgtdDxuLXImJihuPWUubGVuZ3RoLXQrcik7dmFyIG8saT1uLXI7aWYodGhpcz09PWUmJnI8dCYmdDxuKWZvcihvPWktMTtvPj0wOy0tbyllW28rdF09dGhpc1tvK3JdO2Vsc2UgaWYoaTwxZTN8fCFYLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKG89MDtvPGk7KytvKWVbbyt0XT10aGlzW28rcl07ZWxzZSBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChlLHRoaXMuc3ViYXJyYXkocixyK2kpLHQpO3JldHVybiBpfSxYLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0PyhuPXQsdD0wLHI9dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgciYmKG49cixyPXRoaXMubGVuZ3RoKSwxPT09ZS5sZW5ndGgpe3ZhciBvPWUuY2hhckNvZGVBdCgwKTtvPDI1NiYmKGU9byl9aWYodm9pZCAwIT09biYmInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIG4mJiFYLmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlJiYoZSY9MjU1KTtpZih0PDB8fHRoaXMubGVuZ3RoPHR8fHRoaXMubGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKHI8PXQpcmV0dXJuIHRoaXM7dmFyIGk7aWYodD4+Pj0wLHI9dm9pZCAwPT09cj90aGlzLmxlbmd0aDpyPj4+MCxlfHwoZT0wKSwibnVtYmVyIj09dHlwZW9mIGUpZm9yKGk9dDtpPHI7KytpKXRoaXNbaV09ZTtlbHNle3ZhciBhPW5lKGUpP2U6T2UobmV3IFgoZSxuKS50b1N0cmluZygpKSxzPWEubGVuZ3RoO2ZvcihpPTA7aTxyLXQ7KytpKXRoaXNbaSt0XT1hW2klc119cmV0dXJuIHRoaXN9O3ZhciBQZT0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBDZShlKXtyZXR1cm4gZTwxNj8iMCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gT2UoZSx0KXt2YXIgcjt0PXR8fDEvMDtmb3IodmFyIG49ZS5sZW5ndGgsbz1udWxsLGk9W10sYT0wO2E8bjsrK2Epe2lmKChyPWUuY2hhckNvZGVBdChhKSk+NTUyOTUmJnI8NTczNDQpe2lmKCFvKXtpZihyPjU2MzE5KXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYoYSsxPT09bil7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfW89cjtjb250aW51ZX1pZihyPDU2MzIwKXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSksbz1yO2NvbnRpbnVlfXI9NjU1MzYrKG8tNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgbyYmKHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2lmKG89bnVsbCxyPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7aS5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigodC09Mik8MClicmVhaztpLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7aS5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigodC09NCk8MClicmVhaztpLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBpfWZ1bmN0aW9uIERlKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxyLG4sbyxpLGE7Tnx8SygpO3ZhciBzPWUubGVuZ3RoO2lmKHMlND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO2k9Ij0iPT09ZVtzLTJdPzI6Ij0iPT09ZVtzLTFdPzE6MCxhPW5ldyBCKDMqcy80LWkpLG49aT4wP3MtNDpzO3ZhciB1PTA7Zm9yKHQ9MCxyPTA7dDxuO3QrPTQscis9MylvPXFbZS5jaGFyQ29kZUF0KHQpXTw8MTh8cVtlLmNoYXJDb2RlQXQodCsxKV08PDEyfHFbZS5jaGFyQ29kZUF0KHQrMildPDw2fHFbZS5jaGFyQ29kZUF0KHQrMyldLGFbdSsrXT1vPj4xNiYyNTUsYVt1KytdPW8+PjgmMjU1LGFbdSsrXT0yNTUmbztyZXR1cm4gMj09PWk/KG89cVtlLmNoYXJDb2RlQXQodCldPDwyfHFbZS5jaGFyQ29kZUF0KHQrMSldPj40LGFbdSsrXT0yNTUmbyk6MT09PWkmJihvPXFbZS5jaGFyQ29kZUF0KHQpXTw8MTB8cVtlLmNoYXJDb2RlQXQodCsxKV08PDR8cVtlLmNoYXJDb2RlQXQodCsyKV0+PjIsYVt1KytdPW8+PjgmMjU1LGFbdSsrXT0yNTUmbyksYX0oZnVuY3Rpb24oZSl7aWYoKGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0oZSkucmVwbGFjZShQZSwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9MDspZSs9Ij0iO3JldHVybiBlfShlKSl9ZnVuY3Rpb24gSWUoZSx0LHIsbil7Zm9yKHZhciBvPTA7bzxuJiYhKG8rcj49dC5sZW5ndGh8fG8+PWUubGVuZ3RoKTsrK28pdFtvK3JdPWVbb107cmV0dXJuIG99ZnVuY3Rpb24gVWUoZSl7cmV0dXJuISFlLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX12YXIgTWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHI9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLG49MDtuPHIubGVuZ3RoO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5hcHBseSh0LHIpfX0sTGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBqZShlKXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09TGUuY2FsbChlKX1mdW5jdGlvbiBIZShlKXtyZXR1cm4gdm9pZCAwPT09ZX1mdW5jdGlvbiBxZShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT09bihlKX1mdW5jdGlvbiBCZShlKXtpZigiW29iamVjdCBPYmplY3RdIiE9PUxlLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiBudWxsPT09dHx8dD09PU9iamVjdC5wcm90b3R5cGV9ZnVuY3Rpb24gTmUoZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PUxlLmNhbGwoZSl9ZnVuY3Rpb24gS2UoZSx0KXtpZihudWxsIT1lKWlmKCJvYmplY3QiIT09bihlKSYmKGU9W2VdKSxqZShlKSlmb3IodmFyIHI9MCxvPWUubGVuZ3RoO3I8bztyKyspdC5jYWxsKG51bGwsZVtyXSxyLGUpO2Vsc2UgZm9yKHZhciBpIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJnQuY2FsbChudWxsLGVbaV0saSxlKX12YXIgRmU9e2lzQXJyYXk6amUsaXNBcnJheUJ1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09TGUuY2FsbChlKX0saXNCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiYhSGUoZSkmJm51bGwhPT1lLmNvbnN0cnVjdG9yJiYhSGUoZS5jb25zdHJ1Y3RvcikmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfSxpc0Zvcm1EYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGEmJmUgaW5zdGFuY2VvZiBGb3JtRGF0YX0saXNBcnJheUJ1ZmZlclZpZXc6ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmQXJyYXlCdWZmZXIuaXNWaWV3P0FycmF5QnVmZmVyLmlzVmlldyhlKTplJiZlLmJ1ZmZlciYmZS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcn0saXNTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9LGlzT2JqZWN0OnFlLGlzUGxhaW5PYmplY3Q6QmUsaXNVbmRlZmluZWQ6SGUsaXNEYXRlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IERhdGVdIj09PUxlLmNhbGwoZSl9LGlzRmlsZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1MZS5jYWxsKGUpfSxpc0Jsb2I6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09TGUuY2FsbChlKX0saXNGdW5jdGlvbjpOZSxpc1N0cmVhbTpmdW5jdGlvbihlKXtyZXR1cm4gcWUoZSkmJk5lKGUucGlwZSl9LGlzVVJMU2VhcmNoUGFyYW1zOmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgVVJMU2VhcmNoUGFyYW1zJiZlIGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zfSxpc1N0YW5kYXJkQnJvd3NlckVudjpmdW5jdGlvbigpe3JldHVybigidW5kZWZpbmVkIj09dHlwZW9mIG5hdmlnYXRvcnx8IlJlYWN0TmF0aXZlIiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTmF0aXZlU2NyaXB0IiE9PW5hdmlnYXRvci5wcm9kdWN0JiYiTlMiIT09bmF2aWdhdG9yLnByb2R1Y3QpJiYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQpfSxmb3JFYWNoOktlLG1lcmdlOmZ1bmN0aW9uIGUoKXt2YXIgdD17fTtmdW5jdGlvbiByKHIsbil7QmUodFtuXSkmJkJlKHIpP3Rbbl09ZSh0W25dLHIpOkJlKHIpP3Rbbl09ZSh7fSxyKTpqZShyKT90W25dPXIuc2xpY2UoKTp0W25dPXJ9Zm9yKHZhciBuPTAsbz1hcmd1bWVudHMubGVuZ3RoO248bztuKyspS2UoYXJndW1lbnRzW25dLHIpO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBLZSh0LChmdW5jdGlvbih0LG4pe2Vbbl09ciYmImZ1bmN0aW9uIj09dHlwZW9mIHQ/TWUodCxyKTp0fSkpLGV9LHRyaW06ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sc3RyaXBCT006ZnVuY3Rpb24oZSl7cmV0dXJuIDY1Mjc5PT09ZS5jaGFyQ29kZUF0KDApJiYoZT1lLnNsaWNlKDEpKSxlfX07ZnVuY3Rpb24gWWUoZSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChlKS5yZXBsYWNlKC8lM0EvZ2ksIjoiKS5yZXBsYWNlKC8lMjQvZywiJCIpLnJlcGxhY2UoLyUyQy9naSwiLCIpLnJlcGxhY2UoLyUyMC9nLCIrIikucmVwbGFjZSgvJTVCL2dpLCJbIikucmVwbGFjZSgvJTVEL2dpLCJdIil9dmFyIFdlPWZ1bmN0aW9uKGUsdCxyKXtpZighdClyZXR1cm4gZTt2YXIgbjtpZihyKW49cih0KTtlbHNlIGlmKEZlLmlzVVJMU2VhcmNoUGFyYW1zKHQpKW49dC50b1N0cmluZygpO2Vsc2V7dmFyIG89W107RmUuZm9yRWFjaCh0LChmdW5jdGlvbihlLHQpe251bGwhPWUmJihGZS5pc0FycmF5KGUpP3QrPSJbXSI6ZT1bZV0sRmUuZm9yRWFjaChlLChmdW5jdGlvbihlKXtGZS5pc0RhdGUoZSk/ZT1lLnRvSVNPU3RyaW5nKCk6RmUuaXNPYmplY3QoZSkmJihlPUpTT04uc3RyaW5naWZ5KGUpKSxvLnB1c2goWWUodCkrIj0iK1llKGUpKX0pKSl9KSksbj1vLmpvaW4oIiYiKX1pZihuKXt2YXIgaT1lLmluZGV4T2YoIiMiKTstMSE9PWkmJihlPWUuc2xpY2UoMCxpKSksZSs9KC0xPT09ZS5pbmRleE9mKCI/Iik/Ij8iOiImIikrbn1yZXR1cm4gZX07ZnVuY3Rpb24gSmUoKXt0aGlzLmhhbmRsZXJzPVtdfUplLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmhhbmRsZXJzLnB1c2goe2Z1bGZpbGxlZDplLHJlamVjdGVkOnQsc3luY2hyb25vdXM6ISFyJiZyLnN5bmNocm9ub3VzLHJ1bldoZW46cj9yLnJ1bldoZW46bnVsbH0pLHRoaXMuaGFuZGxlcnMubGVuZ3RoLTF9LEplLnByb3RvdHlwZS5lamVjdD1mdW5jdGlvbihlKXt0aGlzLmhhbmRsZXJzW2VdJiYodGhpcy5oYW5kbGVyc1tlXT1udWxsKX0sSmUucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSl7RmUuZm9yRWFjaCh0aGlzLmhhbmRsZXJzLChmdW5jdGlvbih0KXtudWxsIT09dCYmZSh0KX0pKX07dmFyIHplPUplO2Z1bmN0aW9uIEdlKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gVmUoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfXZhciAkZT1HZSxYZT1WZTtmdW5jdGlvbiBaZShlKXtpZigkZT09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigoJGU9PT1HZXx8ISRlKSYmc2V0VGltZW91dClyZXR1cm4gJGU9c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiAkZShlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gJGUuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuICRlLmNhbGwodGhpcyxlLDApfX19ImZ1bmN0aW9uIj09dHlwZW9mIGouc2V0VGltZW91dCYmKCRlPXNldFRpbWVvdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiBqLmNsZWFyVGltZW91dCYmKFhlPWNsZWFyVGltZW91dCk7dmFyIFFlLGV0PVtdLHR0PSExLHJ0PS0xO2Z1bmN0aW9uIG50KCl7dHQmJlFlJiYodHQ9ITEsUWUubGVuZ3RoP2V0PVFlLmNvbmNhdChldCk6cnQ9LTEsZXQubGVuZ3RoJiZvdCgpKX1mdW5jdGlvbiBvdCgpe2lmKCF0dCl7dmFyIGU9WmUobnQpO3R0PSEwO2Zvcih2YXIgdD1ldC5sZW5ndGg7dDspe2ZvcihRZT1ldCxldD1bXTsrK3J0PHQ7KVFlJiZRZVtydF0ucnVuKCk7cnQ9LTEsdD1ldC5sZW5ndGh9UWU9bnVsbCx0dD0hMSxmdW5jdGlvbihlKXtpZihYZT09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChYZT09PVZlfHwhWGUpJiZjbGVhclRpbWVvdXQpcmV0dXJuIFhlPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e1hlKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gWGUuY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiBYZS5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIGl0KGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9aXQucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9O2Z1bmN0aW9uIGF0KCl7fXZhciBzdD1hdCx1dD1hdCxjdD1hdCxmdD1hdCxodD1hdCxsdD1hdCxwdD1hdDt2YXIgZHQ9ai5wZXJmb3JtYW5jZXx8e30sdnQ9ZHQubm93fHxkdC5tb3pOb3d8fGR0Lm1zTm93fHxkdC5vTm93fHxkdC53ZWJraXROb3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O3ZhciBndD1uZXcgRGF0ZTt2YXIgeXQ9e25leHRUaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0xXT1hcmd1bWVudHNbcl07ZXQucHVzaChuZXcgaXQoZSx0KSksMSE9PWV0Lmxlbmd0aHx8dHR8fFplKG90KX0sdGl0bGU6ImJyb3dzZXIiLGJyb3dzZXI6ITAsZW52Ont9LGFyZ3Y6W10sdmVyc2lvbjoiIix2ZXJzaW9uczp7fSxvbjpzdCxhZGRMaXN0ZW5lcjp1dCxvbmNlOmN0LG9mZjpmdCxyZW1vdmVMaXN0ZW5lcjpodCxyZW1vdmVBbGxMaXN0ZW5lcnM6bHQsZW1pdDpwdCxiaW5kaW5nOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sY3dkOmZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxjaGRpcjpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSx1bWFzazpmdW5jdGlvbigpe3JldHVybiAwfSxocnRpbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9LjAwMSp2dC5jYWxsKGR0KSxyPU1hdGguZmxvb3IodCksbj1NYXRoLmZsb29yKHQlMSoxZTkpO3JldHVybiBlJiYoci09ZVswXSwobi09ZVsxXSk8MCYmKHItLSxuKz0xZTkpKSxbcixuXX0scGxhdGZvcm06ImJyb3dzZXIiLHJlbGVhc2U6e30sY29uZmlnOnt9LHVwdGltZTpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZS1ndCkvMWUzfX0sbXQ9eXQsd3Q9ZnVuY3Rpb24oZSx0KXtGZS5mb3JFYWNoKGUsKGZ1bmN0aW9uKHIsbil7biE9PXQmJm4udG9VcHBlckNhc2UoKT09PXQudG9VcHBlckNhc2UoKSYmKGVbdF09cixkZWxldGUgZVtuXSl9KSl9LGJ0PWZ1bmN0aW9uKGUsdCxyLG4sbyl7cmV0dXJuIGUuY29uZmlnPXQsciYmKGUuY29kZT1yKSxlLnJlcXVlc3Q9bixlLnJlc3BvbnNlPW8sZS5pc0F4aW9zRXJyb3I9ITAsZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6dGhpcy5jb25maWcsY29kZTp0aGlzLmNvZGV9fSxlfSxrdD1mdW5jdGlvbihlLHQscixuLG8pe3ZhciBpPW5ldyBFcnJvcihlKTtyZXR1cm4gYnQoaSx0LHIsbixvKX0seHQ9RmUuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT97d3JpdGU6ZnVuY3Rpb24oZSx0LHIsbixvLGkpe3ZhciBhPVtdO2EucHVzaChlKyI9IitlbmNvZGVVUklDb21wb25lbnQodCkpLEZlLmlzTnVtYmVyKHIpJiZhLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShyKS50b0dNVFN0cmluZygpKSxGZS5pc1N0cmluZyhuKSYmYS5wdXNoKCJwYXRoPSIrbiksRmUuaXNTdHJpbmcobykmJmEucHVzaCgiZG9tYWluPSIrbyksITA9PT1pJiZhLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1hLmpvaW4oIjsgIil9LHJlYWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2UrIik9KFteO10qKSIpKTtyZXR1cm4gdD9kZWNvZGVVUklDb21wb25lbnQodFszXSk6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKGUpe3RoaXMud3JpdGUoZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZTpmdW5jdGlvbigpe30scmVhZDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXt9fSxfdD1bImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdLFN0PUZlLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/ZnVuY3Rpb24oKXt2YXIgZSx0PS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gbihlKXt2YXIgbj1lO3JldHVybiB0JiYoci5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLG49ci5ocmVmKSxyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbikse2hyZWY6ci5ocmVmLHByb3RvY29sOnIucHJvdG9jb2w/ci5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6ci5ob3N0LHNlYXJjaDpyLnNlYXJjaD9yLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnIuaGFzaD9yLmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTpyLmhvc3RuYW1lLHBvcnQ6ci5wb3J0LHBhdGhuYW1lOiIvIj09PXIucGF0aG5hbWUuY2hhckF0KDApP3IucGF0aG5hbWU6Ii8iK3IucGF0aG5hbWV9fXJldHVybiBlPW4od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKHQpe3ZhciByPUZlLmlzU3RyaW5nKHQpP24odCk6dDtyZXR1cm4gci5wcm90b2NvbD09PWUucHJvdG9jb2wmJnIuaG9zdD09PWUuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sRXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe3ZhciBuPWUuZGF0YSxvPWUuaGVhZGVycyxpPWUucmVzcG9uc2VUeXBlO0ZlLmlzRm9ybURhdGEobikmJmRlbGV0ZSBvWyJDb250ZW50LVR5cGUiXTt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoZS5hdXRoKXt2YXIgcz1lLmF1dGgudXNlcm5hbWV8fCIiLHU9ZS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlLmF1dGgucGFzc3dvcmQpKToiIjtvLkF1dGhvcml6YXRpb249IkJhc2ljICIrYnRvYShzKyI6Iit1KX12YXIgYyxmLGg9KGM9ZS5iYXNlVVJMLGY9ZS51cmwsYyYmIS9eKFthLXpdW2EtelxkXCtcLVwuXSo6KT9cL1wvL2kudGVzdChmKT9mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZSgvXC8rJC8sIiIpKyIvIit0LnJlcGxhY2UoL15cLysvLCIiKTplfShjLGYpOmYpO2Z1bmN0aW9uIGwoKXtpZihhKXt2YXIgbj0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIGE/ZnVuY3Rpb24oZSl7dmFyIHQscixuLG89e307cmV0dXJuIGU/KEZlLmZvckVhY2goZS5zcGxpdCgiXG4iKSwoZnVuY3Rpb24oZSl7aWYobj1lLmluZGV4T2YoIjoiKSx0PUZlLnRyaW0oZS5zdWJzdHIoMCxuKSkudG9Mb3dlckNhc2UoKSxyPUZlLnRyaW0oZS5zdWJzdHIobisxKSksdCl7aWYob1t0XSYmX3QuaW5kZXhPZih0KT49MClyZXR1cm47b1t0XT0ic2V0LWNvb2tpZSI9PT10PyhvW3RdP29bdF06W10pLmNvbmNhdChbcl0pOm9bdF0/b1t0XSsiLCAiK3I6cn19KSksbyk6b30oYS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbCxvPXtkYXRhOmkmJiJ0ZXh0IiE9PWkmJiJqc29uIiE9PWk/YS5yZXNwb25zZTphLnJlc3BvbnNlVGV4dCxzdGF0dXM6YS5zdGF0dXMsc3RhdHVzVGV4dDphLnN0YXR1c1RleHQsaGVhZGVyczpuLGNvbmZpZzplLHJlcXVlc3Q6YX07IWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztyLnN0YXR1cyYmbiYmIW4oci5zdGF0dXMpP3Qoa3QoIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgIityLnN0YXR1cyxyLmNvbmZpZyxudWxsLHIucmVxdWVzdCxyKSk6ZShyKX0odCxyLG8pLGE9bnVsbH19aWYoYS5vcGVuKGUubWV0aG9kLnRvVXBwZXJDYXNlKCksV2UoaCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLCEwKSxhLnRpbWVvdXQ9ZS50aW1lb3V0LCJvbmxvYWRlbmQiaW4gYT9hLm9ubG9hZGVuZD1sOmEub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7YSYmND09PWEucmVhZHlTdGF0ZSYmKDAhPT1hLnN0YXR1c3x8YS5yZXNwb25zZVVSTCYmMD09PWEucmVzcG9uc2VVUkwuaW5kZXhPZigiZmlsZToiKSkmJnNldFRpbWVvdXQobCl9LGEub25hYm9ydD1mdW5jdGlvbigpe2EmJihyKGt0KCJSZXF1ZXN0IGFib3J0ZWQiLGUsIkVDT05OQUJPUlRFRCIsYSkpLGE9bnVsbCl9LGEub25lcnJvcj1mdW5jdGlvbigpe3Ioa3QoIk5ldHdvcmsgRXJyb3IiLGUsbnVsbCxhKSksYT1udWxsfSxhLm9udGltZW91dD1mdW5jdGlvbigpe3ZhciB0PSJ0aW1lb3V0IG9mICIrZS50aW1lb3V0KyJtcyBleGNlZWRlZCI7ZS50aW1lb3V0RXJyb3JNZXNzYWdlJiYodD1lLnRpbWVvdXRFcnJvck1lc3NhZ2UpLHIoa3QodCxlLGUudHJhbnNpdGlvbmFsJiZlLnRyYW5zaXRpb25hbC5jbGFyaWZ5VGltZW91dEVycm9yPyJFVElNRURPVVQiOiJFQ09OTkFCT1JURUQiLGEpKSxhPW51bGx9LEZlLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpe3ZhciBwPShlLndpdGhDcmVkZW50aWFsc3x8U3QoaCkpJiZlLnhzcmZDb29raWVOYW1lP3h0LnJlYWQoZS54c3JmQ29va2llTmFtZSk6dm9pZCAwO3AmJihvW2UueHNyZkhlYWRlck5hbWVdPXApfSJzZXRSZXF1ZXN0SGVhZGVyImluIGEmJkZlLmZvckVhY2gobywoZnVuY3Rpb24oZSx0KXt2b2lkIDA9PT1uJiYiY29udGVudC10eXBlIj09PXQudG9Mb3dlckNhc2UoKT9kZWxldGUgb1t0XTphLnNldFJlcXVlc3RIZWFkZXIodCxlKX0pKSxGZS5pc1VuZGVmaW5lZChlLndpdGhDcmVkZW50aWFscyl8fChhLndpdGhDcmVkZW50aWFscz0hIWUud2l0aENyZWRlbnRpYWxzKSxpJiYianNvbiIhPT1pJiYoYS5yZXNwb25zZVR5cGU9ZS5yZXNwb25zZVR5cGUpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uRG93bmxvYWRQcm9ncmVzcyYmYS5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vbkRvd25sb2FkUHJvZ3Jlc3MpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLm9uVXBsb2FkUHJvZ3Jlc3MmJmEudXBsb2FkJiZhLnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZS5vblVwbG9hZFByb2dyZXNzKSxlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnByb21pc2UudGhlbigoZnVuY3Rpb24oZSl7YSYmKGEuYWJvcnQoKSxyKGUpLGE9bnVsbCl9KSksbnx8KG49bnVsbCksYS5zZW5kKG4pfSkpfSxBdD17IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9O2Z1bmN0aW9uIFR0KGUsdCl7IUZlLmlzVW5kZWZpbmVkKGUpJiZGZS5pc1VuZGVmaW5lZChlWyJDb250ZW50LVR5cGUiXSkmJihlWyJDb250ZW50LVR5cGUiXT10KX12YXIgUnQsUHQ9e3RyYW5zaXRpb25hbDp7c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX0sYWRhcHRlcjooKCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3R8fHZvaWQgMCE9PW10JiYiW29iamVjdCBwcm9jZXNzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobXQpKSYmKFJ0PUV0KSxSdCksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtyZXR1cm4gd3QodCwiQWNjZXB0Iiksd3QodCwiQ29udGVudC1UeXBlIiksRmUuaXNGb3JtRGF0YShlKXx8RmUuaXNBcnJheUJ1ZmZlcihlKXx8RmUuaXNCdWZmZXIoZSl8fEZlLmlzU3RyZWFtKGUpfHxGZS5pc0ZpbGUoZSl8fEZlLmlzQmxvYihlKT9lOkZlLmlzQXJyYXlCdWZmZXJWaWV3KGUpP2UuYnVmZmVyOkZlLmlzVVJMU2VhcmNoUGFyYW1zKGUpPyhUdCh0LCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpLGUudG9TdHJpbmcoKSk6RmUuaXNPYmplY3QoZSl8fHQmJiJhcHBsaWNhdGlvbi9qc29uIj09PXRbIkNvbnRlbnQtVHlwZSJdPyhUdCh0LCJhcHBsaWNhdGlvbi9qc29uIiksZnVuY3Rpb24oZSx0LHIpe2lmKEZlLmlzU3RyaW5nKGUpKXRyeXtyZXR1cm4odHx8SlNPTi5wYXJzZSkoZSksRmUudHJpbShlKX1jYXRjaChlKXtpZigiU3ludGF4RXJyb3IiIT09ZS5uYW1lKXRocm93IGV9cmV0dXJuKHJ8fEpTT04uc3RyaW5naWZ5KShlKX0oZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50cmFuc2l0aW9uYWwscj10JiZ0LnNpbGVudEpTT05QYXJzaW5nLG49dCYmdC5mb3JjZWRKU09OUGFyc2luZyxvPSFyJiYianNvbiI9PT10aGlzLnJlc3BvbnNlVHlwZTtpZihvfHxuJiZGZS5pc1N0cmluZyhlKSYmZS5sZW5ndGgpdHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKGUpe2lmKG8pe2lmKCJTeW50YXhFcnJvciI9PT1lLm5hbWUpdGhyb3cgYnQoZSx0aGlzLCJFX0pTT05fUEFSU0UiKTt0aHJvdyBlfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfX07UHQuaGVhZGVycz17Y29tbW9uOntBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKiJ9fSxGZS5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLChmdW5jdGlvbihlKXtQdC5oZWFkZXJzW2VdPXt9fSkpLEZlLmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7UHQuaGVhZGVyc1tlXT1GZS5tZXJnZShBdCl9KSk7dmFyIEN0PVB0LE90PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzfHxDdDtyZXR1cm4gRmUuZm9yRWFjaChyLChmdW5jdGlvbihyKXtlPXIuY2FsbChuLGUsdCl9KSksZX0sRHQ9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUuX19DQU5DRUxfXyl9O2Z1bmN0aW9uIEl0KGUpe2UuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpfXZhciBVdD1mdW5jdGlvbihlKXtyZXR1cm4gSXQoZSksZS5oZWFkZXJzPWUuaGVhZGVyc3x8e30sZS5kYXRhPU90LmNhbGwoZSxlLmRhdGEsZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVxdWVzdCksZS5oZWFkZXJzPUZlLm1lcmdlKGUuaGVhZGVycy5jb21tb258fHt9LGUuaGVhZGVyc1tlLm1ldGhvZF18fHt9LGUuaGVhZGVycyksRmUuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSwoZnVuY3Rpb24odCl7ZGVsZXRlIGUuaGVhZGVyc1t0XX0pKSwoZS5hZGFwdGVyfHxDdC5hZGFwdGVyKShlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gSXQoZSksdC5kYXRhPU90LmNhbGwoZSx0LmRhdGEsdC5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpLHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIER0KHQpfHwoSXQoZSksdCYmdC5yZXNwb25zZSYmKHQucmVzcG9uc2UuZGF0YT1PdC5jYWxsKGUsdC5yZXNwb25zZS5kYXRhLHQucmVzcG9uc2UuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSkpLFByb21pc2UucmVqZWN0KHQpfSkpfSxNdD1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHI9e30sbj1bInVybCIsIm1ldGhvZCIsImRhdGEiXSxvPVsiaGVhZGVycyIsImF1dGgiLCJwcm94eSIsInBhcmFtcyJdLGk9WyJiYXNlVVJMIiwidHJhbnNmb3JtUmVxdWVzdCIsInRyYW5zZm9ybVJlc3BvbnNlIiwicGFyYW1zU2VyaWFsaXplciIsInRpbWVvdXQiLCJ0aW1lb3V0TWVzc2FnZSIsIndpdGhDcmVkZW50aWFscyIsImFkYXB0ZXIiLCJyZXNwb25zZVR5cGUiLCJ4c3JmQ29va2llTmFtZSIsInhzcmZIZWFkZXJOYW1lIiwib25VcGxvYWRQcm9ncmVzcyIsIm9uRG93bmxvYWRQcm9ncmVzcyIsImRlY29tcHJlc3MiLCJtYXhDb250ZW50TGVuZ3RoIiwibWF4Qm9keUxlbmd0aCIsIm1heFJlZGlyZWN0cyIsInRyYW5zcG9ydCIsImh0dHBBZ2VudCIsImh0dHBzQWdlbnQiLCJjYW5jZWxUb2tlbiIsInNvY2tldFBhdGgiLCJyZXNwb25zZUVuY29kaW5nIl0sYT1bInZhbGlkYXRlU3RhdHVzIl07ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBGZS5pc1BsYWluT2JqZWN0KGUpJiZGZS5pc1BsYWluT2JqZWN0KHQpP0ZlLm1lcmdlKGUsdCk6RmUuaXNQbGFpbk9iamVjdCh0KT9GZS5tZXJnZSh7fSx0KTpGZS5pc0FycmF5KHQpP3Quc2xpY2UoKTp0fWZ1bmN0aW9uIHUobil7RmUuaXNVbmRlZmluZWQodFtuXSk/RmUuaXNVbmRlZmluZWQoZVtuXSl8fChyW25dPXModm9pZCAwLGVbbl0pKTpyW25dPXMoZVtuXSx0W25dKX1GZS5mb3JFYWNoKG4sKGZ1bmN0aW9uKGUpe0ZlLmlzVW5kZWZpbmVkKHRbZV0pfHwocltlXT1zKHZvaWQgMCx0W2VdKSl9KSksRmUuZm9yRWFjaChvLHUpLEZlLmZvckVhY2goaSwoZnVuY3Rpb24obil7RmUuaXNVbmRlZmluZWQodFtuXSk/RmUuaXNVbmRlZmluZWQoZVtuXSl8fChyW25dPXModm9pZCAwLGVbbl0pKTpyW25dPXModm9pZCAwLHRbbl0pfSkpLEZlLmZvckVhY2goYSwoZnVuY3Rpb24obil7biBpbiB0P3Jbbl09cyhlW25dLHRbbl0pOm4gaW4gZSYmKHJbbl09cyh2b2lkIDAsZVtuXSkpfSkpO3ZhciBjPW4uY29uY2F0KG8pLmNvbmNhdChpKS5jb25jYXQoYSksZj1PYmplY3Qua2V5cyhlKS5jb25jYXQoT2JqZWN0LmtleXModCkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuLTE9PT1jLmluZGV4T2YoZSl9KSk7cmV0dXJuIEZlLmZvckVhY2goZix1KSxyfSxMdD17bmFtZToiYXhpb3MiLHZlcnNpb246IjAuMjEuNCIsZGVzY3JpcHRpb246IlByb21pc2UgYmFzZWQgSFRUUCBjbGllbnQgZm9yIHRoZSBicm93c2VyIGFuZCBub2RlLmpzIixtYWluOiJpbmRleC5qcyIsc2NyaXB0czp7dGVzdDoiZ3J1bnQgdGVzdCIsc3RhcnQ6Im5vZGUgLi9zYW5kYm94L3NlcnZlci5qcyIsYnVpbGQ6Ik5PREVfRU5WPXByb2R1Y3Rpb24gZ3J1bnQgYnVpbGQiLHByZXZlcnNpb246Im5wbSB0ZXN0Iix2ZXJzaW9uOiJucG0gcnVuIGJ1aWxkICYmIGdydW50IHZlcnNpb24gJiYgZ2l0IGFkZCAtQSBkaXN0ICYmIGdpdCBhZGQgQ0hBTkdFTE9HLm1kIGJvd2VyLmpzb24gcGFja2FnZS5qc29uIixwb3N0dmVyc2lvbjoiZ2l0IHB1c2ggJiYgZ2l0IHB1c2ggLS10YWdzIixleGFtcGxlczoibm9kZSAuL2V4YW1wbGVzL3NlcnZlci5qcyIsY292ZXJhbGxzOiJjYXQgY292ZXJhZ2UvbGNvdi5pbmZvIHwgLi9ub2RlX21vZHVsZXMvY292ZXJhbGxzL2Jpbi9jb3ZlcmFsbHMuanMiLGZpeDoiZXNsaW50IC0tZml4IGxpYi8qKi8qLmpzIn0scmVwb3NpdG9yeTp7dHlwZToiZ2l0Iix1cmw6Imh0dHBzOi8vZ2l0aHViLmNvbS9heGlvcy9heGlvcy5naXQifSxrZXl3b3JkczpbInhociIsImh0dHAiLCJhamF4IiwicHJvbWlzZSIsIm5vZGUiXSxhdXRob3I6Ik1hdHQgWmFicmlza2llIixsaWNlbnNlOiJNSVQiLGJ1Z3M6e3VybDoiaHR0cHM6Ly9naXRodWIuY29tL2F4aW9zL2F4aW9zL2lzc3VlcyJ9LGhvbWVwYWdlOiJodHRwczovL2F4aW9zLWh0dHAuY29tIixkZXZEZXBlbmRlbmNpZXM6e2NvdmVyYWxsczoiXjMuMC4wIiwiZXM2LXByb21pc2UiOiJeNC4yLjQiLGdydW50OiJeMS4zLjAiLCJncnVudC1iYW5uZXIiOiJeMC42LjAiLCJncnVudC1jbGkiOiJeMS4yLjAiLCJncnVudC1jb250cmliLWNsZWFuIjoiXjEuMS4wIiwiZ3J1bnQtY29udHJpYi13YXRjaCI6Il4xLjAuMCIsImdydW50LWVzbGludCI6Il4yMy4wLjAiLCJncnVudC1rYXJtYSI6Il40LjAuMCIsImdydW50LW1vY2hhLXRlc3QiOiJeMC4xMy4zIiwiZ3J1bnQtdHMiOiJeNi4wLjAtYmV0YS4xOSIsImdydW50LXdlYnBhY2siOiJeNC4wLjIiLCJpc3RhbmJ1bC1pbnN0cnVtZW50ZXItbG9hZGVyIjoiXjEuMC4wIiwiamFzbWluZS1jb3JlIjoiXjIuNC4xIixrYXJtYToiXjYuMy4yIiwia2FybWEtY2hyb21lLWxhdW5jaGVyIjoiXjMuMS4wIiwia2FybWEtZmlyZWZveC1sYXVuY2hlciI6Il4yLjEuMCIsImthcm1hLWphc21pbmUiOiJeMS4xLjEiLCJrYXJtYS1qYXNtaW5lLWFqYXgiOiJeMC4xLjEzIiwia2FybWEtc2FmYXJpLWxhdW5jaGVyIjoiXjEuMC4wIiwia2FybWEtc2F1Y2UtbGF1bmNoZXIiOiJeNC4zLjYiLCJrYXJtYS1zaW5vbiI6Il4xLjAuNSIsImthcm1hLXNvdXJjZW1hcC1sb2FkZXIiOiJeMC4zLjgiLCJrYXJtYS13ZWJwYWNrIjoiXjQuMC4yIiwibG9hZC1ncnVudC10YXNrcyI6Il4zLjUuMiIsbWluaW1pc3Q6Il4xLjIuMCIsbW9jaGE6Il44LjIuMSIsc2lub246Il40LjUuMCIsInRlcnNlci13ZWJwYWNrLXBsdWdpbiI6Il40LjIuMyIsdHlwZXNjcmlwdDoiXjQuMC41IiwidXJsLXNlYXJjaC1wYXJhbXMiOiJeMC4xMC4wIix3ZWJwYWNrOiJeNC40NC4yIiwid2VicGFjay1kZXYtc2VydmVyIjoiXjMuMTEuMCJ9LGJyb3dzZXI6eyIuL2xpYi9hZGFwdGVycy9odHRwLmpzIjoiLi9saWIvYWRhcHRlcnMveGhyLmpzIn0sanNkZWxpdnI6ImRpc3QvYXhpb3MubWluLmpzIix1bnBrZzoiZGlzdC9heGlvcy5taW4uanMiLHR5cGluZ3M6Ii4vaW5kZXguZC50cyIsZGVwZW5kZW5jaWVzOnsiZm9sbG93LXJlZGlyZWN0cyI6Il4xLjE0LjAifSxidW5kbGVzaXplOlt7cGF0aDoiLi9kaXN0L2F4aW9zLm1pbi5qcyIsdGhyZXNob2xkOiI1a0IifV19LGp0PXt9O1sib2JqZWN0IiwiYm9vbGVhbiIsIm51bWJlciIsImZ1bmN0aW9uIiwic3RyaW5nIiwic3ltYm9sIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSx0KXtqdFtlXT1mdW5jdGlvbihyKXtyZXR1cm4gbihyKT09PWV8fCJhIisodDwxPyJuICI6IiAiKStlfX0pKTt2YXIgSHQ9e30scXQ9THQudmVyc2lvbi5zcGxpdCgiLiIpO2Z1bmN0aW9uIEJ0KGUsdCl7Zm9yKHZhciByPXQ/dC5zcGxpdCgiLiIpOnF0LG49ZS5zcGxpdCgiLiIpLG89MDtvPDM7bysrKXtpZihyW29dPm5bb10pcmV0dXJuITA7aWYocltvXTxuW29dKXJldHVybiExfXJldHVybiExfWp0LnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7dmFyIG49dCYmQnQodCk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiJbQXhpb3MgdiIrTHQudmVyc2lvbisiXSBUcmFuc2l0aW9uYWwgb3B0aW9uICciK2UrIiciK3QrKHI/Ii4gIityOiIiKX1yZXR1cm4gZnVuY3Rpb24ocixpLGEpe2lmKCExPT09ZSl0aHJvdyBuZXcgRXJyb3IobyhpLCIgaGFzIGJlZW4gcmVtb3ZlZCBpbiAiK3QpKTtyZXR1cm4gbiYmIUh0W2ldJiYoSHRbaV09ITAsY29uc29sZS53YXJuKG8oaSwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSwhZXx8ZShyLGksYSl9fTt2YXIgTnQ9e2lzT2xkZXJWZXJzaW9uOkJ0LGFzc2VydE9wdGlvbnM6ZnVuY3Rpb24oZSx0LHIpe2lmKCJvYmplY3QiIT09bihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Zm9yKHZhciBvPU9iamVjdC5rZXlzKGUpLGk9by5sZW5ndGg7aS0tID4wOyl7dmFyIGE9b1tpXSxzPXRbYV07aWYocyl7dmFyIHU9ZVthXSxjPXZvaWQgMD09PXV8fHModSxhLGUpO2lmKCEwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gIithKyIgbXVzdCBiZSAiK2MpfWVsc2UgaWYoITAhPT1yKXRocm93IEVycm9yKCJVbmtub3duIG9wdGlvbiAiK2EpfX0sdmFsaWRhdG9yczpqdH0sS3Q9TnQudmFsaWRhdG9ycztmdW5jdGlvbiBGdChlKXt0aGlzLmRlZmF1bHRzPWUsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IHplLHJlc3BvbnNlOm5ldyB6ZX19RnQucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBlPyhlPWFyZ3VtZW50c1sxXXx8e30pLnVybD1hcmd1bWVudHNbMF06ZT1lfHx7fSwoZT1NdCh0aGlzLmRlZmF1bHRzLGUpKS5tZXRob2Q/ZS5tZXRob2Q9ZS5tZXRob2QudG9Mb3dlckNhc2UoKTp0aGlzLmRlZmF1bHRzLm1ldGhvZD9lLm1ldGhvZD10aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpOmUubWV0aG9kPSJnZXQiO3ZhciB0PWUudHJhbnNpdGlvbmFsO3ZvaWQgMCE9PXQmJk50LmFzc2VydE9wdGlvbnModCx7c2lsZW50SlNPTlBhcnNpbmc6S3QudHJhbnNpdGlvbmFsKEt0LmJvb2xlYW4sIjEuMC4wIiksZm9yY2VkSlNPTlBhcnNpbmc6S3QudHJhbnNpdGlvbmFsKEt0LmJvb2xlYW4sIjEuMC4wIiksY2xhcmlmeVRpbWVvdXRFcnJvcjpLdC50cmFuc2l0aW9uYWwoS3QuYm9vbGVhbiwiMS4wLjAiKX0sITEpO3ZhciByPVtdLG49ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKChmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgdC5ydW5XaGVuJiYhMT09PXQucnVuV2hlbihlKXx8KG49biYmdC5zeW5jaHJvbm91cyxyLnVuc2hpZnQodC5mdWxmaWxsZWQsdC5yZWplY3RlZCkpfSkpO3ZhciBvLGk9W107aWYodGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aS5wdXNoKGUuZnVsZmlsbGVkLGUucmVqZWN0ZWQpfSkpLCFuKXt2YXIgYT1bVXQsdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoYSxyKSxhPWEuY29uY2F0KGkpLG89UHJvbWlzZS5yZXNvbHZlKGUpO2EubGVuZ3RoOylvPW8udGhlbihhLnNoaWZ0KCksYS5zaGlmdCgpKTtyZXR1cm4gb31mb3IodmFyIHM9ZTtyLmxlbmd0aDspe3ZhciB1PXIuc2hpZnQoKSxjPXIuc2hpZnQoKTt0cnl7cz11KHMpfWNhdGNoKGUpe2MoZSk7YnJlYWt9fXRyeXtvPVV0KHMpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX1mb3IoO2kubGVuZ3RoOylvPW8udGhlbihpLnNoaWZ0KCksaS5zaGlmdCgpKTtyZXR1cm4gb30sRnQucHJvdG90eXBlLmdldFVyaT1mdW5jdGlvbihlKXtyZXR1cm4gZT1NdCh0aGlzLmRlZmF1bHRzLGUpLFdlKGUudXJsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlw/LywiIil9LEZlLmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLChmdW5jdGlvbihlKXtGdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KE10KHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KSksRmUuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXtGdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyLG4pe3JldHVybiB0aGlzLnJlcXVlc3QoTXQobnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6cn0pKX19KSk7dmFyIFl0PUZ0O2Z1bmN0aW9uIFd0KGUpe3RoaXMubWVzc2FnZT1lfVd0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDYW5jZWwiKyh0aGlzLm1lc3NhZ2U/IjogIit0aGlzLm1lc3NhZ2U6IiIpfSxXdC5wcm90b3R5cGUuX19DQU5DRUxfXz0hMDt2YXIgSnQ9V3Q7ZnVuY3Rpb24genQoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0O3RoaXMucHJvbWlzZT1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dD1lfSkpO3ZhciByPXRoaXM7ZSgoZnVuY3Rpb24oZSl7ci5yZWFzb258fChyLnJlYXNvbj1uZXcgSnQoZSksdChyLnJlYXNvbikpfSkpfXp0LnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259LHp0LnNvdXJjZT1mdW5jdGlvbigpe3ZhciBlLHQ9bmV3IHp0KChmdW5jdGlvbih0KXtlPXR9KSk7cmV0dXJue3Rva2VuOnQsY2FuY2VsOmV9fTt2YXIgR3Q9enQ7ZnVuY3Rpb24gVnQoZSl7dmFyIHQ9bmV3IFl0KGUpLHI9TWUoWXQucHJvdG90eXBlLnJlcXVlc3QsdCk7cmV0dXJuIEZlLmV4dGVuZChyLFl0LnByb3RvdHlwZSx0KSxGZS5leHRlbmQocix0KSxyfXZhciAkdD1WdChDdCk7JHQuQXhpb3M9WXQsJHQuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBWdChNdCgkdC5kZWZhdWx0cyxlKSl9LCR0LkNhbmNlbD1KdCwkdC5DYW5jZWxUb2tlbj1HdCwkdC5pc0NhbmNlbD1EdCwkdC5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfSwkdC5zcHJlYWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KG51bGwsdCl9fSwkdC5pc0F4aW9zRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PT1uKGUpJiYhMD09PWUuaXNBeGlvc0Vycm9yfTt2YXIgWHQ9JHQsWnQ9JHQ7WHQuZGVmYXVsdD1adDt2YXIgUXQsZXIsdHI9WHQ7ZnVuY3Rpb24gcnIoZSx0KXt2YXIgcj0idW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYoIXIpe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gbnIoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7Ik9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKCJNYXAiPT09cnx8IlNldCI9PT1yKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKCJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QocikpcmV0dXJuIG5yKGUsdCl9KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxvPWZ1bmN0aW9uKCl7fTtyZXR1cm57czpvLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjpvfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksYT0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gYT1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXthfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBucihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIG9yKGUsdCl7dmFyIHI9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYobj1uLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBpcihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9O3QlMj9vcihPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe2IoZSx0LHJbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOm9yKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGFyKGUpe3ZhciB0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0KLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCglDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4KCglQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKCXB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC4KCglUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSAoJUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZCglBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCglJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00KCUxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SCglPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SCglQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgoJKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPU8oZSk7aWYodCl7dmFyIG89Tyh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLG8pfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gUCh0aGlzLHIpfX1mdW5jdGlvbiBzcihlLHQscixuKXtyZXR1cm4gbmV3KHJ8fChyPVByb21pc2UpKSgoZnVuY3Rpb24obyxpKXtmdW5jdGlvbiBhKGUpe3RyeXt1KG4ubmV4dChlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gcyhlKXt0cnl7dShuLnRocm93KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9vKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIHI/dDpuZXcgcigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihhLHMpfXUoKG49bi5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX0oZXI9UXR8fChRdD17fSkpLmZvcm1Qb3N0PSJmb3JtX3Bvc3QiLGVyLnF1ZXJ5PSJxdWVyeSI7dmFyIHVyOyFmdW5jdGlvbihlKXtlLkNvbmZpZ0RhdGE9ImNvbmZpZ19kYXRhIixlLk9JRENQcm92aWRlck1ldGFEYXRhPSJvaWRjX3Byb3ZpZGVyX21ldGFfZGF0YSIsZS5TZXNzaW9uRGF0YT0ic2Vzc2lvbl9kYXRhIixlLlRlbXBvcmFyeURhdGE9InRlbXBvcmFyeV9kYXRhIn0odXJ8fCh1cj17fSkpO3ZhciBjcj0icmVmcmVzaF90b2tlbl90aW1lciIsZnI9ZnVuY3Rpb24oZSl7VChyLGUpO3ZhciB0PWFyKHIpO2Z1bmN0aW9uIHIoZSxuLG8saSxhLHMpe3ZhciB1O3JldHVybiBfKHRoaXMsciksKHU9dC5jYWxsKHRoaXMsbnVsbCE9aT9pOm51bGw9PXM/dm9pZCAwOnMubWVzc2FnZSkpLm5hbWU9dS5jb25zdHJ1Y3Rvci5uYW1lLHUuY29kZT1lLHUuZmlsZT1uLHUubWV0aG9kPW8sdS5kZXNjcmlwdGlvbj1hLHUuZXJyb3I9cyxPYmplY3Quc2V0UHJvdG90eXBlT2YoRSh1KSwodGhpcyBpbnN0YW5jZW9mIHI/dGhpcy5jb25zdHJ1Y3Rvcjp2b2lkIDApLnByb3RvdHlwZSksdX1yZXR1cm4gcn0oTChFcnJvcikpLGhyPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKGUsbixvLGksYSxzLHUsYyxmKXt2YXIgaDtyZXR1cm4gXyh0aGlzLHIpLChoPXQuY2FsbCh0aGlzLGUsbixvLGksYSkpLm5hbWU9aC5jb25zdHJ1Y3Rvci5uYW1lLGguY29kZT1lLGguZmlsZT1uLGgubWV0aG9kPW8saC5kZXNjcmlwdGlvbj1hLGgubmV0d29ya0Vycm9yQ29kZT1zLGgubmV0d29ya0Vycm9yTWVzc2FnZT11LGguc3RhdHVzPWMsaC5uZXR3b3JrRXJyb3JEYXRhPWYsaH1yZXR1cm4gcn0oZnIpLGxyPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp2b2lkIDAhPT1qP2o6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gcHIoZSx0LHIpe3JldHVybiBlKHI9e3BhdGg6dCxleHBvcnRzOnt9LHJlcXVpcmU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgcmVxdWlyZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IEByb2xsdXAvcGx1Z2luLWNvbW1vbmpzIil9KG51bGw9PXQmJnIucGF0aCl9fSxyLmV4cG9ydHMpLHIuZXhwb3J0c312YXIgZHI9dm9pZCAwIT09aj9qOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSx2cj1bXSxncj1bXSx5cj0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxtcj0hMTtmdW5jdGlvbiB3cigpe21yPSEwO2Zvcih2YXIgZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsdD0wLHI9ZS5sZW5ndGg7dDxyOysrdCl2clt0XT1lW3RdLGdyW2UuY2hhckNvZGVBdCh0KV09dDtnclsiLSIuY2hhckNvZGVBdCgwKV09NjIsZ3JbIl8iLmNoYXJDb2RlQXQoMCldPTYzfWZ1bmN0aW9uIGJyKGUsdCxyKXtmb3IodmFyIG4sbyxpPVtdLGE9dDthPHI7YSs9MyluPShlW2FdPDwxNikrKGVbYSsxXTw8OCkrZVthKzJdLGkucHVzaCh2clsobz1uKT4+MTgmNjNdK3ZyW28+PjEyJjYzXSt2cltvPj42JjYzXSt2cls2MyZvXSk7cmV0dXJuIGkuam9pbigiIil9ZnVuY3Rpb24ga3IoZSl7dmFyIHQ7bXJ8fHdyKCk7Zm9yKHZhciByPWUubGVuZ3RoLG49ciUzLG89IiIsaT1bXSxhPTE2MzgzLHM9MCx1PXItbjtzPHU7cys9YSlpLnB1c2goYnIoZSxzLHMrYT51P3U6cythKSk7cmV0dXJuIDE9PT1uPyh0PWVbci0xXSxvKz12clt0Pj4yXSxvKz12clt0PDw0JjYzXSxvKz0iPT0iKToyPT09biYmKHQ9KGVbci0yXTw8OCkrZVtyLTFdLG8rPXZyW3Q+PjEwXSxvKz12clt0Pj40JjYzXSxvKz12clt0PDwyJjYzXSxvKz0iPSIpLGkucHVzaChvKSxpLmpvaW4oIiIpfWZ1bmN0aW9uIHhyKGUsdCxyLG4sbyl7dmFyIGksYSxzPTgqby1uLTEsdT0oMTw8cyktMSxjPXU+PjEsZj0tNyxoPXI/by0xOjAsbD1yPy0xOjEscD1lW3QraF07Zm9yKGgrPWwsaT1wJigxPDwtZiktMSxwPj49LWYsZis9cztmPjA7aT0yNTYqaStlW3QraF0saCs9bCxmLT04KTtmb3IoYT1pJigxPDwtZiktMSxpPj49LWYsZis9bjtmPjA7YT0yNTYqYStlW3QraF0saCs9bCxmLT04KTtpZigwPT09aSlpPTEtYztlbHNle2lmKGk9PT11KXJldHVybiBhP05hTjoxLzAqKHA/LTE6MSk7YSs9TWF0aC5wb3coMixuKSxpLT1jfXJldHVybihwPy0xOjEpKmEqTWF0aC5wb3coMixpLW4pfWZ1bmN0aW9uIF9yKGUsdCxyLG4sbyxpKXt2YXIgYSxzLHUsYz04Kmktby0xLGY9KDE8PGMpLTEsaD1mPj4xLGw9MjM9PT1vP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxwPW4/MDppLTEsZD1uPzE6LTEsdj10PDB8fDA9PT10JiYxL3Q8MD8xOjA7Zm9yKHQ9TWF0aC5hYnModCksaXNOYU4odCl8fHQ9PT0xLzA/KHM9aXNOYU4odCk/MTowLGE9Zik6KGE9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksdCoodT1NYXRoLnBvdygyLC1hKSk8MSYmKGEtLSx1Kj0yKSwodCs9YStoPj0xP2wvdTpsKk1hdGgucG93KDIsMS1oKSkqdT49MiYmKGErKyx1Lz0yKSxhK2g+PWY/KHM9MCxhPWYpOmEraD49MT8ocz0odCp1LTEpKk1hdGgucG93KDIsbyksYSs9aCk6KHM9dCpNYXRoLnBvdygyLGgtMSkqTWF0aC5wb3coMixvKSxhPTApKTtvPj04O2VbcitwXT0yNTUmcyxwKz1kLHMvPTI1NixvLT04KTtmb3IoYT1hPDxvfHMsYys9bztjPjA7ZVtyK3BdPTI1NSZhLHArPWQsYS89MjU2LGMtPTgpO2VbcitwLWRdfD0xMjgqdn12YXIgU3I9e30udG9TdHJpbmcsRXI9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09U3IuY2FsbChlKX07UHIuVFlQRURfQVJSQVlfU1VQUE9SVD12b2lkIDA9PT1kci5UWVBFRF9BUlJBWV9TVVBQT1JUfHxkci5UWVBFRF9BUlJBWV9TVVBQT1JUO3ZhciBBcj1UcigpO2Z1bmN0aW9uIFRyKCl7cmV0dXJuIFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/MjE0NzQ4MzY0NzoxMDczNzQxODIzfWZ1bmN0aW9uIFJyKGUsdCl7aWYoVHIoKTx0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCIpO3JldHVybiBQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPW5ldyBVaW50OEFycmF5KHQpKS5fX3Byb3RvX189UHIucHJvdG90eXBlOihudWxsPT09ZSYmKGU9bmV3IFByKHQpKSxlLmxlbmd0aD10KSxlfWZ1bmN0aW9uIFByKGUsdCxyKXtpZighKFByLlRZUEVEX0FSUkFZX1NVUFBPUlR8fHRoaXMgaW5zdGFuY2VvZiBQcikpcmV0dXJuIG5ldyBQcihlLHQscik7aWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZigic3RyaW5nIj09dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBEcih0aGlzLGUpfXJldHVybiBDcih0aGlzLGUsdCxyKX1mdW5jdGlvbiBDcihlLHQscixuKXtpZigibnVtYmVyIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9mdW5jdGlvbihlLHQscixuKXtpZih0LmJ5dGVMZW5ndGgscjwwfHx0LmJ5dGVMZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ29mZnNldCcgaXMgb3V0IG9mIGJvdW5kcyIpO2lmKHQuYnl0ZUxlbmd0aDxyKyhufHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ2xlbmd0aCcgaXMgb3V0IG9mIGJvdW5kcyIpO3JldHVybiB0PXZvaWQgMD09PXImJnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCk6dm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0LHIpOm5ldyBVaW50OEFycmF5KHQscixuKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQpLl9fcHJvdG9fXz1Qci5wcm90b3R5cGU6ZT1JcihlLHQpLGV9KGUsdCxyLG4pOiJzdHJpbmciPT10eXBlb2YgdD9mdW5jdGlvbihlLHQscil7aWYoInN0cmluZyI9PXR5cGVvZiByJiYiIiE9PXJ8fChyPSJ1dGY4IiksIVByLmlzRW5jb2RpbmcocikpdGhyb3cgbmV3IFR5cGVFcnJvcignImVuY29kaW5nIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJyk7dmFyIG49MHxMcih0LHIpLG89KGU9UnIoZSxuKSkud3JpdGUodCxyKTtyZXR1cm4gbyE9PW4mJihlPWUuc2xpY2UoMCxvKSksZX0oZSx0LHIpOmZ1bmN0aW9uKGUsdCl7aWYoTXIodCkpe3ZhciByPTB8VXIodC5sZW5ndGgpO3JldHVybiAwPT09KGU9UnIoZSxyKSkubGVuZ3RofHx0LmNvcHkoZSwwLDAsciksZX1pZih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHwibGVuZ3RoImluIHQpcmV0dXJuIm51bWJlciIhPXR5cGVvZiB0Lmxlbmd0aHx8KG49dC5sZW5ndGgpIT1uP1JyKGUsMCk6SXIoZSx0KTtpZigiQnVmZmVyIj09PXQudHlwZSYmRXIodC5kYXRhKSlyZXR1cm4gSXIoZSx0LmRhdGEpfXZhciBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4iKX0oZSx0KX1mdW5jdGlvbiBPcihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKTtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpfWZ1bmN0aW9uIERyKGUsdCl7aWYoT3IodCksZT1ScihlLHQ8MD8wOjB8VXIodCkpLCFQci5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgcj0wO3I8dDsrK3IpZVtyXT0wO3JldHVybiBlfWZ1bmN0aW9uIElyKGUsdCl7dmFyIHI9dC5sZW5ndGg8MD8wOjB8VXIodC5sZW5ndGgpO2U9UnIoZSxyKTtmb3IodmFyIG49MDtuPHI7bis9MSllW25dPTI1NSZ0W25dO3JldHVybiBlfWZ1bmN0aW9uIFVyKGUpe2lmKGU+PVRyKCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHgiK1RyKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIE1yKGUpe3JldHVybiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX1mdW5jdGlvbiBMcihlLHQpe2lmKE1yKGUpKXJldHVybiBlLmxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpfHxlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiBlLmJ5dGVMZW5ndGg7InN0cmluZyIhPXR5cGVvZiBlJiYoZT0iIitlKTt2YXIgcj1lLmxlbmd0aDtpZigwPT09cilyZXR1cm4gMDtmb3IodmFyIG49ITE7Oylzd2l0Y2godCl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ugdm9pZCAwOnJldHVybiBjbihlKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKnI7Y2FzZSJoZXgiOnJldHVybiByPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuIGZuKGUpLmxlbmd0aDtkZWZhdWx0OmlmKG4pcmV0dXJuIGNuKGUpLmxlbmd0aDt0PSgiIit0KS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIGpyKGUsdCxyKXt2YXIgbj0hMTtpZigodm9pZCAwPT09dHx8dDwwKSYmKHQ9MCksdD50aGlzLmxlbmd0aClyZXR1cm4iIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVybiIiO2lmKChyPj4+PTApPD0odD4+Pj0wKSlyZXR1cm4iIjtmb3IoZXx8KGU9InV0ZjgiKTs7KXN3aXRjaChlKXtjYXNlImhleCI6cmV0dXJuIFhyKHRoaXMsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBHcih0aGlzLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIFZyKHRoaXMsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiAkcih0aGlzLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiB6cih0aGlzLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBacih0aGlzLHQscik7ZGVmYXVsdDppZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZSk7ZT0oZSsiIikudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBIcihlLHQscil7dmFyIG49ZVt0XTtlW3RdPWVbcl0sZVtyXT1ufWZ1bmN0aW9uIHFyKGUsdCxyLG4sbyl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2Ygcj8obj1yLHI9MCk6cj4yMTQ3NDgzNjQ3P3I9MjE0NzQ4MzY0NzpyPC0yMTQ3NDgzNjQ4JiYocj0tMjE0NzQ4MzY0OCkscj0rcixpc05hTihyKSYmKHI9bz8wOmUubGVuZ3RoLTEpLHI8MCYmKHI9ZS5sZW5ndGgrcikscj49ZS5sZW5ndGgpe2lmKG8pcmV0dXJuLTE7cj1lLmxlbmd0aC0xfWVsc2UgaWYocjwwKXtpZighbylyZXR1cm4tMTtyPTB9aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1Qci5mcm9tKHQsbikpLE1yKHQpKXJldHVybiAwPT09dC5sZW5ndGg/LTE6QnIoZSx0LHIsbixvKTtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQmPTI1NSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUJiYiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9vP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHQscik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChlLHQscik6QnIoZSxbdF0scixuLG8pO3Rocm93IG5ldyBUeXBlRXJyb3IoInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlciIpfWZ1bmN0aW9uIEJyKGUsdCxyLG4sbyl7dmFyIGksYT0xLHM9ZS5sZW5ndGgsdT10Lmxlbmd0aDtpZih2b2lkIDAhPT1uJiYoInVjczIiPT09KG49U3RyaW5nKG4pLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09bnx8InV0ZjE2bGUiPT09bnx8InV0Zi0xNmxlIj09PW4pKXtpZihlLmxlbmd0aDwyfHx0Lmxlbmd0aDwyKXJldHVybi0xO2E9MixzLz0yLHUvPTIsci89Mn1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIDE9PT1hP2VbdF06ZS5yZWFkVUludDE2QkUodCphKX1pZihvKXt2YXIgZj0tMTtmb3IoaT1yO2k8cztpKyspaWYoYyhlLGkpPT09Yyh0LC0xPT09Zj8wOmktZikpe2lmKC0xPT09ZiYmKGY9aSksaS1mKzE9PT11KXJldHVybiBmKmF9ZWxzZS0xIT09ZiYmKGktPWktZiksZj0tMX1lbHNlIGZvcihyK3U+cyYmKHI9cy11KSxpPXI7aT49MDtpLS0pe2Zvcih2YXIgaD0hMCxsPTA7bDx1O2wrKylpZihjKGUsaStsKSE9PWModCxsKSl7aD0hMTticmVha31pZihoKXJldHVybiBpfXJldHVybi0xfWZ1bmN0aW9uIE5yKGUsdCxyLG4pe3I9TnVtYmVyKHIpfHwwO3ZhciBvPWUubGVuZ3RoLXI7bj8obj1OdW1iZXIobikpPm8mJihuPW8pOm49bzt2YXIgaT10Lmxlbmd0aDtpZihpJTIhPTApdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIik7bj5pLzImJihuPWkvMik7Zm9yKHZhciBhPTA7YTxuOysrYSl7dmFyIHM9cGFyc2VJbnQodC5zdWJzdHIoMiphLDIpLDE2KTtpZihpc05hTihzKSlyZXR1cm4gYTtlW3IrYV09c31yZXR1cm4gYX1mdW5jdGlvbiBLcihlLHQscixuKXtyZXR1cm4gaG4oY24odCxlLmxlbmd0aC1yKSxlLHIsbil9ZnVuY3Rpb24gRnIoZSx0LHIsbil7cmV0dXJuIGhuKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTA7cjxlLmxlbmd0aDsrK3IpdC5wdXNoKDI1NSZlLmNoYXJDb2RlQXQocikpO3JldHVybiB0fSh0KSxlLHIsbil9ZnVuY3Rpb24gWXIoZSx0LHIsbil7cmV0dXJuIEZyKGUsdCxyLG4pfWZ1bmN0aW9uIFdyKGUsdCxyLG4pe3JldHVybiBobihmbih0KSxlLHIsbil9ZnVuY3Rpb24gSnIoZSx0LHIsbil7cmV0dXJuIGhuKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4sbyxpPVtdLGE9MDthPGUubGVuZ3RoJiYhKCh0LT0yKTwwKTsrK2Epbj0ocj1lLmNoYXJDb2RlQXQoYSkpPj44LG89ciUyNTYsaS5wdXNoKG8pLGkucHVzaChuKTtyZXR1cm4gaX0odCxlLmxlbmd0aC1yKSxlLHIsbil9ZnVuY3Rpb24genIoZSx0LHIpe3JldHVybiAwPT09dCYmcj09PWUubGVuZ3RoP2tyKGUpOmtyKGUuc2xpY2UodCxyKSl9ZnVuY3Rpb24gR3IoZSx0LHIpe3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBuPVtdLG89dDtvPHI7KXt2YXIgaSxhLHMsdSxjPWVbb10sZj1udWxsLGg9Yz4yMzk/NDpjPjIyMz8zOmM+MTkxPzI6MTtpZihvK2g8PXIpc3dpdGNoKGgpe2Nhc2UgMTpjPDEyOCYmKGY9Yyk7YnJlYWs7Y2FzZSAyOjEyOD09KDE5MiYoaT1lW28rMV0pKSYmKHU9KDMxJmMpPDw2fDYzJmkpPjEyNyYmKGY9dSk7YnJlYWs7Y2FzZSAzOmk9ZVtvKzFdLGE9ZVtvKzJdLDEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJmEpJiYodT0oMTUmYyk8PDEyfCg2MyZpKTw8Nnw2MyZhKT4yMDQ3JiYodTw1NTI5Nnx8dT41NzM0MykmJihmPXUpO2JyZWFrO2Nhc2UgNDppPWVbbysxXSxhPWVbbysyXSxzPWVbbyszXSwxMjg9PSgxOTImaSkmJjEyOD09KDE5MiZhKSYmMTI4PT0oMTkyJnMpJiYodT0oMTUmYyk8PDE4fCg2MyZpKTw8MTJ8KDYzJmEpPDw2fDYzJnMpPjY1NTM1JiZ1PDExMTQxMTImJihmPXUpfW51bGw9PT1mPyhmPTY1NTMzLGg9MSk6Zj42NTUzNSYmKGYtPTY1NTM2LG4ucHVzaChmPj4+MTAmMTAyM3w1NTI5NiksZj01NjMyMHwxMDIzJmYpLG4ucHVzaChmKSxvKz1ofXJldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aDtpZih0PD00MDk2KXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlKTtmb3IodmFyIHI9IiIsbj0wO248dDspcis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZS5zbGljZShuLG4rPTQwOTYpKTtyZXR1cm4gcn0obil9ZnVuY3Rpb24gVnIoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBvPXQ7bzxyOysrbyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW29dKTtyZXR1cm4gbn1mdW5jdGlvbiAkcihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIG89dDtvPHI7KytvKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtvXSk7cmV0dXJuIG59ZnVuY3Rpb24gWHIoZSx0LHIpe3ZhciBuPWUubGVuZ3RoOyghdHx8dDwwKSYmKHQ9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgbz0iIixpPXQ7aTxyOysraSlvKz11bihlW2ldKTtyZXR1cm4gb31mdW5jdGlvbiBacihlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxvPSIiLGk9MDtpPG4ubGVuZ3RoO2krPTIpbys9U3RyaW5nLmZyb21DaGFyQ29kZShuW2ldKzI1NipuW2krMV0pO3JldHVybiBvfWZ1bmN0aW9uIFFyKGUsdCxyKXtpZihlJTEhPTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBlbihlLHQscixuLG8saSl7aWYoIU1yKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZih0Pm98fHQ8aSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiB0bihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBvPTAsaT1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO288aTsrK28pZVtyK29dPSh0JjI1NTw8OCoobj9vOjEtbykpPj4+OCoobj9vOjEtbyl9ZnVuY3Rpb24gcm4oZSx0LHIsbil7dDwwJiYodD00Mjk0OTY3Mjk1K3QrMSk7Zm9yKHZhciBvPTAsaT1NYXRoLm1pbihlLmxlbmd0aC1yLDQpO288aTsrK28pZVtyK29dPXQ+Pj44KihuP286My1vKSYyNTV9ZnVuY3Rpb24gbm4oZSx0LHIsbixvLGkpe2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBvbihlLHQscixuLG8pe3JldHVybiBvfHxubihlLDAsciw0KSxfcihlLHQscixuLDIzLDQpLHIrNH1mdW5jdGlvbiBhbihlLHQscixuLG8pe3JldHVybiBvfHxubihlLDAsciw4KSxfcihlLHQscixuLDUyLDgpLHIrOH1Qci5wb29sU2l6ZT04MTkyLFByLl9hdWdtZW50PWZ1bmN0aW9uKGUpe3JldHVybiBlLl9fcHJvdG9fXz1Qci5wcm90b3R5cGUsZX0sUHIuZnJvbT1mdW5jdGlvbihlLHQscil7cmV0dXJuIENyKG51bGwsZSx0LHIpfSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUJiYoUHIucHJvdG90eXBlLl9fcHJvdG9fXz1VaW50OEFycmF5LnByb3RvdHlwZSxQci5fX3Byb3RvX189VWludDhBcnJheSksUHIuYWxsb2M9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBmdW5jdGlvbihlLHQscixuKXtyZXR1cm4gT3IodCksdDw9MD9ScihlLHQpOnZvaWQgMCE9PXI/InN0cmluZyI9PXR5cGVvZiBuP1JyKGUsdCkuZmlsbChyLG4pOlJyKGUsdCkuZmlsbChyKTpScihlLHQpfShudWxsLGUsdCxyKX0sUHIuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIERyKG51bGwsZSl9LFByLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtyZXR1cm4gRHIobnVsbCxlKX0sUHIuaXNCdWZmZXI9bG4sUHIuY29tcGFyZT1mdW5jdGlvbihlLHQpe2lmKCFNcihlKXx8IU1yKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMiKTtpZihlPT09dClyZXR1cm4gMDtmb3IodmFyIHI9ZS5sZW5ndGgsbj10Lmxlbmd0aCxvPTAsaT1NYXRoLm1pbihyLG4pO288aTsrK28paWYoZVtvXSE9PXRbb10pe3I9ZVtvXSxuPXRbb107YnJlYWt9cmV0dXJuIHI8bj8tMTpuPHI/MTowfSxQci5pc0VuY29kaW5nPWZ1bmN0aW9uKGUpe3N3aXRjaChTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSl7Y2FzZSJoZXgiOmNhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpjYXNlImJhc2U2NCI6Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSxQci5jb25jYXQ9ZnVuY3Rpb24oZSx0KXtpZighRXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gUHIuYWxsb2MoMCk7dmFyIHI7aWYodm9pZCAwPT09dClmb3IodD0wLHI9MDtyPGUubGVuZ3RoOysrcil0Kz1lW3JdLmxlbmd0aDt2YXIgbj1Qci5hbGxvY1Vuc2FmZSh0KSxvPTA7Zm9yKHI9MDtyPGUubGVuZ3RoOysrcil7dmFyIGk9ZVtyXTtpZighTXIoaSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImxpc3QiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2kuY29weShuLG8pLG8rPWkubGVuZ3RofXJldHVybiBufSxQci5ieXRlTGVuZ3RoPUxyLFByLnByb3RvdHlwZS5faXNCdWZmZXI9ITAsUHIucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlMiE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9MilIcih0aGlzLHQsdCsxKTtyZXR1cm4gdGhpc30sUHIucHJvdG90eXBlLnN3YXAzMj1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9NClIcih0aGlzLHQsdCszKSxIcih0aGlzLHQrMSx0KzIpO3JldHVybiB0aGlzfSxQci5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU4IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz04KUhyKHRoaXMsdCx0KzcpLEhyKHRoaXMsdCsxLHQrNiksSHIodGhpcyx0KzIsdCs1KSxIcih0aGlzLHQrMyx0KzQpO3JldHVybiB0aGlzfSxQci5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgZT0wfHRoaXMubGVuZ3RoO3JldHVybiAwPT09ZT8iIjowPT09YXJndW1lbnRzLmxlbmd0aD9Hcih0aGlzLDAsZSk6anIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxQci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKGUpe2lmKCFNcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7cmV0dXJuIHRoaXM9PT1lfHwwPT09UHIuY29tcGFyZSh0aGlzLGUpfSxQci5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe3ZhciBlPSIiO3JldHVybiB0aGlzLmxlbmd0aD4wJiYoZT10aGlzLnRvU3RyaW5nKCJoZXgiLDAsNTApLm1hdGNoKC8uezJ9L2cpLmpvaW4oIiAiKSx0aGlzLmxlbmd0aD41MCYmKGUrPSIgLi4uICIpKSwiPEJ1ZmZlciAiK2UrIj4ifSxQci5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbihlLHQscixuLG8pe2lmKCFNcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIik7aWYodm9pZCAwPT09dCYmKHQ9MCksdm9pZCAwPT09ciYmKHI9ZT9lLmxlbmd0aDowKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1vJiYobz10aGlzLmxlbmd0aCksdDwwfHxyPmUubGVuZ3RofHxuPDB8fG8+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIm91dCBvZiByYW5nZSBpbmRleCIpO2lmKG4+PW8mJnQ+PXIpcmV0dXJuIDA7aWYobj49bylyZXR1cm4tMTtpZih0Pj1yKXJldHVybiAxO2lmKHRoaXM9PT1lKXJldHVybiAwO2Zvcih2YXIgaT0obz4+Pj0wKS0obj4+Pj0wKSxhPShyPj4+PTApLSh0Pj4+PTApLHM9TWF0aC5taW4oaSxhKSx1PXRoaXMuc2xpY2UobixvKSxjPWUuc2xpY2UodCxyKSxmPTA7ZjxzOysrZilpZih1W2ZdIT09Y1tmXSl7aT11W2ZdLGE9Y1tmXTticmVha31yZXR1cm4gaTxhPy0xOmE8aT8xOjB9LFByLnByb3RvdHlwZS5pbmNsdWRlcz1mdW5jdGlvbihlLHQscil7cmV0dXJuLTEhPT10aGlzLmluZGV4T2YoZSx0LHIpfSxQci5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIHFyKHRoaXMsZSx0LHIsITApfSxQci5wcm90b3R5cGUubGFzdEluZGV4T2Y9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBxcih0aGlzLGUsdCxyLCExKX0sUHIucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHZvaWQgMD09PXQpbj0idXRmOCIscj10aGlzLmxlbmd0aCx0PTA7ZWxzZSBpZih2b2lkIDA9PT1yJiYic3RyaW5nIj09dHlwZW9mIHQpbj10LHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTt0fD0wLGlzRmluaXRlKHIpPyhyfD0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIscj12b2lkIDApfXZhciBvPXRoaXMubGVuZ3RoLXQ7aWYoKHZvaWQgMD09PXJ8fHI+bykmJihyPW8pLGUubGVuZ3RoPjAmJihyPDB8fHQ8MCl8fHQ+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8KG49InV0ZjgiKTtmb3IodmFyIGk9ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBOcih0aGlzLGUsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBLcih0aGlzLGUsdCxyKTtjYXNlImFzY2lpIjpyZXR1cm4gRnIodGhpcyxlLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gWXIodGhpcyxlLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiBXcih0aGlzLGUsdCxyKTtjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuIEpyKHRoaXMsZSx0LHIpO2RlZmF1bHQ6aWYoaSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksaT0hMH19LFByLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiQnVmZmVyIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19LFByLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcy5sZW5ndGg7aWYoKGU9fn5lKTwwPyhlKz1uKTwwJiYoZT0wKTplPm4mJihlPW4pLCh0PXZvaWQgMD09PXQ/bjp+fnQpPDA/KHQrPW4pPDAmJih0PTApOnQ+biYmKHQ9biksdDxlJiYodD1lKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUKShyPXRoaXMuc3ViYXJyYXkoZSx0KSkuX19wcm90b19fPVByLnByb3RvdHlwZTtlbHNle3ZhciBvPXQtZTtyPW5ldyBQcihvLHZvaWQgMCk7Zm9yKHZhciBpPTA7aTxvOysraSlyW2ldPXRoaXNbaStlXX1yZXR1cm4gcn0sUHIucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxRcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLG89MSxpPTA7KytpPHQmJihvKj0yNTYpOyluKz10aGlzW2UraV0qbztyZXR1cm4gbn0sUHIucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxRcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxvPTE7dD4wJiYobyo9MjU2KTspbis9dGhpc1tlKy0tdF0qbztyZXR1cm4gbn0sUHIucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxRcihlLDEsdGhpcy5sZW5ndGgpLHRoaXNbZV19LFByLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8UXIoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OH0sUHIucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxRcihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxQci5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFFyKGUsNCx0aGlzLmxlbmd0aCksKHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTYpKzE2Nzc3MjE2KnRoaXNbZSszXX0sUHIucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxRcihlLDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbZV0rKHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXSl9LFByLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxRcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLG89MSxpPTA7KytpPHQmJihvKj0yNTYpOyluKz10aGlzW2UraV0qbztyZXR1cm4gbj49KG8qPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LFByLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxRcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10LG89MSxpPXRoaXNbZSstLW5dO24+MCYmKG8qPTI1Nik7KWkrPXRoaXNbZSstLW5dKm87cmV0dXJuIGk+PShvKj0xMjgpJiYoaS09TWF0aC5wb3coMiw4KnQpKSxpfSxQci5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8UXIoZSwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tlXT8tMSooMjU1LXRoaXNbZV0rMSk6dGhpc1tlXX0sUHIucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7dHx8UXIoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sUHIucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7dHx8UXIoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2UrMV18dGhpc1tlXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sUHIucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFFyKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNnx0aGlzW2UrM108PDI0fSxQci5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8UXIoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LFByLnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxRcihlLDQsdGhpcy5sZW5ndGgpLHhyKHRoaXMsZSwhMCwyMyw0KX0sUHIucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFFyKGUsNCx0aGlzLmxlbmd0aCkseHIodGhpcyxlLCExLDIzLDQpfSxQci5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFFyKGUsOCx0aGlzLmxlbmd0aCkseHIodGhpcyxlLCEwLDUyLDgpfSxQci5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFFyKGUsOCx0aGlzLmxlbmd0aCkseHIodGhpcyxlLCExLDUyLDgpfSxQci5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7ZT0rZSx0fD0wLHJ8PTAsbnx8ZW4odGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgbz0xLGk9MDtmb3IodGhpc1t0XT0yNTUmZTsrK2k8ciYmKG8qPTI1Nik7KXRoaXNbdCtpXT1lL28mMjU1O3JldHVybiB0K3J9LFByLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihlLHQscixuKXtlPStlLHR8PTAscnw9MCxufHxlbih0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBvPXItMSxpPTE7Zm9yKHRoaXNbdCtvXT0yNTUmZTstLW8+PTAmJihpKj0yNTYpOyl0aGlzW3Qrb109ZS9pJjI1NTtyZXR1cm4gdCtyfSxQci5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxlbih0aGlzLGUsdCwxLDI1NSwwKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSx0aGlzW3RdPTI1NSZlLHQrMX0sUHIucHJvdG90eXBlLndyaXRlVUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8ZW4odGhpcyxlLHQsMiw2NTUzNSwwKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCk6dG4odGhpcyxlLHQsITApLHQrMn0sUHIucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8ZW4odGhpcyxlLHQsMiw2NTUzNSwwKSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6dG4odGhpcyxlLHQsITEpLHQrMn0sUHIucHJvdG90eXBlLndyaXRlVUludDMyTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8ZW4odGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6cm4odGhpcyxlLHQsITApLHQrNH0sUHIucHJvdG90eXBlLndyaXRlVUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8ZW4odGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6cm4odGhpcyxlLHQsITEpLHQrNH0sUHIucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgbz1NYXRoLnBvdygyLDgqci0xKTtlbih0aGlzLGUsdCxyLG8tMSwtbyl9dmFyIGk9MCxhPTEscz0wO2Zvcih0aGlzW3RdPTI1NSZlOysraTxyJiYoYSo9MjU2KTspZTwwJiYwPT09cyYmMCE9PXRoaXNbdCtpLTFdJiYocz0xKSx0aGlzW3QraV09KGUvYT4+MCktcyYyNTU7cmV0dXJuIHQrcn0sUHIucHJvdG90eXBlLndyaXRlSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgbz1NYXRoLnBvdygyLDgqci0xKTtlbih0aGlzLGUsdCxyLG8tMSwtbyl9dmFyIGk9ci0xLGE9MSxzPTA7Zm9yKHRoaXNbdCtpXT0yNTUmZTstLWk+PTAmJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K2krMV0mJihzPTEpLHRoaXNbdCtpXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxQci5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fGVuKHRoaXMsZSx0LDEsMTI3LC0xMjgpLFByLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLGU8MCYmKGU9MjU1K2UrMSksdGhpc1t0XT0yNTUmZSx0KzF9LFByLnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8ZW4odGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTp0bih0aGlzLGUsdCwhMCksdCsyfSxQci5wcm90b3R5cGUud3JpdGVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fGVuKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSxQci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj44LHRoaXNbdCsxXT0yNTUmZSk6dG4odGhpcyxlLHQsITEpLHQrMn0sUHIucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxlbih0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzNdPWU+Pj4yNCk6cm4odGhpcyxlLHQsITApLHQrNH0sUHIucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxlbih0aGlzLGUsdCw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLGU8MCYmKGU9NDI5NDk2NzI5NStlKzEpLFByLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6cm4odGhpcyxlLHQsITEpLHQrNH0sUHIucHJvdG90eXBlLndyaXRlRmxvYXRMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIG9uKHRoaXMsZSx0LCEwLHIpfSxQci5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gb24odGhpcyxlLHQsITEscil9LFByLnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gYW4odGhpcyxlLHQsITAscil9LFByLnByb3RvdHlwZS53cml0ZURvdWJsZUJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gYW4odGhpcyxlLHQsITEscil9LFByLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGUsdCxyLG4pe2lmKHJ8fChyPTApLG58fDA9PT1ufHwobj10aGlzLmxlbmd0aCksdD49ZS5sZW5ndGgmJih0PWUubGVuZ3RoKSx0fHwodD0wKSxuPjAmJm48ciYmKG49ciksbj09PXIpcmV0dXJuIDA7aWYoMD09PWUubGVuZ3RofHwwPT09dGhpcy5sZW5ndGgpcmV0dXJuIDA7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzIik7aWYocjwwfHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKG48MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigic291cmNlRW5kIG91dCBvZiBib3VuZHMiKTtuPnRoaXMubGVuZ3RoJiYobj10aGlzLmxlbmd0aCksZS5sZW5ndGgtdDxuLXImJihuPWUubGVuZ3RoLXQrcik7dmFyIG8saT1uLXI7aWYodGhpcz09PWUmJnI8dCYmdDxuKWZvcihvPWktMTtvPj0wOy0tbyllW28rdF09dGhpc1tvK3JdO2Vsc2UgaWYoaTwxZTN8fCFQci5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcihvPTA7bzxpOysrbyllW28rdF09dGhpc1tvK3JdO2Vsc2UgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoZSx0aGlzLnN1YmFycmF5KHIscitpKSx0KTtyZXR1cm4gaX0sUHIucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LHIsbil7aWYoInN0cmluZyI9PXR5cGVvZiBlKXtpZigic3RyaW5nIj09dHlwZW9mIHQ/KG49dCx0PTAscj10aGlzLmxlbmd0aCk6InN0cmluZyI9PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLDE9PT1lLmxlbmd0aCl7dmFyIG89ZS5jaGFyQ29kZUF0KDApO288MjU2JiYoZT1vKX1pZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZyIpO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmIVByLmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKX1lbHNlIm51bWJlciI9PXR5cGVvZiBlJiYoZSY9MjU1KTtpZih0PDB8fHRoaXMubGVuZ3RoPHR8fHRoaXMubGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIk91dCBvZiByYW5nZSBpbmRleCIpO2lmKHI8PXQpcmV0dXJuIHRoaXM7dmFyIGk7aWYodD4+Pj0wLHI9dm9pZCAwPT09cj90aGlzLmxlbmd0aDpyPj4+MCxlfHwoZT0wKSwibnVtYmVyIj09dHlwZW9mIGUpZm9yKGk9dDtpPHI7KytpKXRoaXNbaV09ZTtlbHNle3ZhciBhPU1yKGUpP2U6Y24obmV3IFByKGUsbikudG9TdHJpbmcoKSkscz1hLmxlbmd0aDtmb3IoaT0wO2k8ci10OysraSl0aGlzW2krdF09YVtpJXNdfXJldHVybiB0aGlzfTt2YXIgc249L1teK1wvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24gdW4oZSl7cmV0dXJuIGU8MTY/IjAiK2UudG9TdHJpbmcoMTYpOmUudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGNuKGUsdCl7dmFyIHI7dD10fHwxLzA7Zm9yKHZhciBuPWUubGVuZ3RoLG89bnVsbCxpPVtdLGE9MDthPG47KythKXtpZigocj1lLmNoYXJDb2RlQXQoYSkpPjU1Mjk1JiZyPDU3MzQ0KXtpZighbyl7aWYocj41NjMxOSl7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKGErMT09PW4peyh0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1vPXI7Y29udGludWV9aWYocjw1NjMyMCl7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpLG89cjtjb250aW51ZX1yPTY1NTM2KyhvLTU1Mjk2PDwxMHxyLTU2MzIwKX1lbHNlIG8mJih0LT0zKT4tMSYmaS5wdXNoKDIzOSwxOTEsMTg5KTtpZihvPW51bGwscjwxMjgpe2lmKCh0LT0xKTwwKWJyZWFrO2kucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKHQtPTIpPDApYnJlYWs7aS5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1MzYpe2lmKCh0LT0zKTwwKWJyZWFrO2kucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHQtPTQpPDApYnJlYWs7aS5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gaX1mdW5jdGlvbiBmbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQscixuLG8saSxhO21yfHx3cigpO3ZhciBzPWUubGVuZ3RoO2lmKHMlND4wKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCIpO2k9Ij0iPT09ZVtzLTJdPzI6Ij0iPT09ZVtzLTFdPzE6MCxhPW5ldyB5cigzKnMvNC1pKSxuPWk+MD9zLTQ6czt2YXIgdT0wO2Zvcih0PTAscj0wO3Q8bjt0Kz00LHIrPTMpbz1ncltlLmNoYXJDb2RlQXQodCldPDwxOHxncltlLmNoYXJDb2RlQXQodCsxKV08PDEyfGdyW2UuY2hhckNvZGVBdCh0KzIpXTw8NnxncltlLmNoYXJDb2RlQXQodCszKV0sYVt1KytdPW8+PjE2JjI1NSxhW3UrK109bz4+OCYyNTUsYVt1KytdPTI1NSZvO3JldHVybiAyPT09aT8obz1ncltlLmNoYXJDb2RlQXQodCldPDwyfGdyW2UuY2hhckNvZGVBdCh0KzEpXT4+NCxhW3UrK109MjU1Jm8pOjE9PT1pJiYobz1ncltlLmNoYXJDb2RlQXQodCldPDwxMHxncltlLmNoYXJDb2RlQXQodCsxKV08PDR8Z3JbZS5jaGFyQ29kZUF0KHQrMildPj4yLGFbdSsrXT1vPj44JjI1NSxhW3UrK109MjU1Jm8pLGF9KGZ1bmN0aW9uKGUpe2lmKChlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KGUpLnJlcGxhY2Uoc24sIiIpKS5sZW5ndGg8MilyZXR1cm4iIjtmb3IoO2UubGVuZ3RoJTQhPTA7KWUrPSI9IjtyZXR1cm4gZX0oZSkpfWZ1bmN0aW9uIGhuKGUsdCxyLG4pe2Zvcih2YXIgbz0wO288biYmIShvK3I+PXQubGVuZ3RofHxvPj1lLmxlbmd0aCk7KytvKXRbbytyXT1lW29dO3JldHVybiBvfWZ1bmN0aW9uIGxuKGUpe3JldHVybiBudWxsIT1lJiYoISFlLl9pc0J1ZmZlcnx8cG4oZSl8fGZ1bmN0aW9uKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlYWRGbG9hdExFJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5zbGljZSYmcG4oZS5zbGljZSgwLDApKX0oZSkpfWZ1bmN0aW9uIHBuKGUpe3JldHVybiEhZS5jb25zdHJ1Y3RvciYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9dmFyIGRuPU9iamVjdC5mcmVlemUoe19fcHJvdG9fXzpudWxsLEJ1ZmZlcjpQcixJTlNQRUNUX01BWF9CWVRFUzo1MCxTbG93QnVmZmVyOmZ1bmN0aW9uKGUpe3JldHVybitlIT1lJiYoZT0wKSxQci5hbGxvYygrZSl9LGlzQnVmZmVyOmxuLGtNYXhMZW5ndGg6QXJ9KSx2bj1wcigoZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PWZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoLHI9dCU0O2lmKCFyKXJldHVybiBlO3ZhciBuPXQsbz00LXIsaT10K28sYT1Qci5hbGxvYyhpKTtmb3IoYS53cml0ZShlKTtvLS07KWEud3JpdGUoIj0iLG4rKyk7cmV0dXJuIGEudG9TdHJpbmcoKX19KSksZ249cHIoKGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLFByLmlzQnVmZmVyKGUpP28oZS50b1N0cmluZygiYmFzZTY0IikpOm8oUHIuZnJvbShlLHQpLnRvU3RyaW5nKCJiYXNlNjQiKSl9ZnVuY3Rpb24gbihlKXtyZXR1cm4gZT1lLnRvU3RyaW5nKCksdm4uZGVmYXVsdChlKS5yZXBsYWNlKC9cLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIil9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS5yZXBsYWNlKC89L2csIiIpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXI7aS5lbmNvZGU9cixpLmRlY29kZT1mdW5jdGlvbihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLFByLmZyb20obihlKSwiYmFzZTY0IikudG9TdHJpbmcodCl9LGkudG9CYXNlNjQ9bixpLmZyb21CYXNlNjQ9byxpLnRvQnVmZmVyPWZ1bmN0aW9uKGUpe3JldHVybiBQci5mcm9tKG4oZSksImJhc2U2NCIpfSx0LmRlZmF1bHQ9aX0pKSx5bj1wcigoZnVuY3Rpb24oZSl7ZS5leHBvcnRzPWduLmRlZmF1bHQsZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzfSkpLG1uPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJkZWZhdWx0Iik/ZS5kZWZhdWx0OmV9KHByKChmdW5jdGlvbihlKXshZnVuY3Rpb24odCxyKXt2YXIgbj17fTshZnVuY3Rpb24oZSl7ZS5fX2VzTW9kdWxlPSEwLGUuZGlnZXN0TGVuZ3RoPTMyLGUuYmxvY2tTaXplPTY0O3ZhciB0PW5ldyBVaW50MzJBcnJheShbMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSk7ZnVuY3Rpb24gcihlLHIsbixvLGkpe2Zvcih2YXIgYSxzLHUsYyxmLGgsbCxwLGQsdixnLHksbTtpPj02NDspe2ZvcihhPXJbMF0scz1yWzFdLHU9clsyXSxjPXJbM10sZj1yWzRdLGg9cls1XSxsPXJbNl0scD1yWzddLHY9MDt2PDE2O3YrKylnPW8rNCp2LGVbdl09KDI1NSZuW2ddKTw8MjR8KDI1NSZuW2crMV0pPDwxNnwoMjU1Jm5bZysyXSk8PDh8MjU1Jm5bZyszXTtmb3Iodj0xNjt2PDY0O3YrKyl5PSgoZD1lW3YtMl0pPj4+MTd8ZDw8MTUpXihkPj4+MTl8ZDw8MTMpXmQ+Pj4xMCxtPSgoZD1lW3YtMTVdKT4+Pjd8ZDw8MjUpXihkPj4+MTh8ZDw8MTQpXmQ+Pj4zLGVbdl09KHkrZVt2LTddfDApKyhtK2Vbdi0xNl18MCk7Zm9yKHY9MDt2PDY0O3YrKyl5PSgoKGY+Pj42fGY8PDI2KV4oZj4+PjExfGY8PDIxKV4oZj4+PjI1fGY8PDcpKSsoZiZoXn5mJmwpfDApKyhwKyh0W3ZdK2Vbdl18MCl8MCl8MCxtPSgoYT4+PjJ8YTw8MzApXihhPj4+MTN8YTw8MTkpXihhPj4+MjJ8YTw8MTApKSsoYSZzXmEmdV5zJnUpfDAscD1sLGw9aCxoPWYsZj1jK3l8MCxjPXUsdT1zLHM9YSxhPXkrbXwwO3JbMF0rPWEsclsxXSs9cyxyWzJdKz11LHJbM10rPWMscls0XSs9ZixyWzVdKz1oLHJbNl0rPWwscls3XSs9cCxvKz02NCxpLT02NH1yZXR1cm4gb312YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmRpZ2VzdExlbmd0aD1lLmRpZ2VzdExlbmd0aCx0aGlzLmJsb2NrU2l6ZT1lLmJsb2NrU2l6ZSx0aGlzLnN0YXRlPW5ldyBJbnQzMkFycmF5KDgpLHRoaXMudGVtcD1uZXcgSW50MzJBcnJheSg2NCksdGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTI4KSx0aGlzLmJ1ZmZlckxlbmd0aD0wLHRoaXMuYnl0ZXNIYXNoZWQ9MCx0aGlzLmZpbmlzaGVkPSExLHRoaXMucmVzZXQoKX1yZXR1cm4gdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZVswXT0xNzc5MDMzNzAzLHRoaXMuc3RhdGVbMV09MzE0NDEzNDI3Nyx0aGlzLnN0YXRlWzJdPTEwMTM5MDQyNDIsdGhpcy5zdGF0ZVszXT0yNzczNDgwNzYyLHRoaXMuc3RhdGVbNF09MTM1OTg5MzExOSx0aGlzLnN0YXRlWzVdPTI2MDA4MjI5MjQsdGhpcy5zdGF0ZVs2XT01Mjg3MzQ2MzUsdGhpcy5zdGF0ZVs3XT0xNTQxNDU5MjI1LHRoaXMuYnVmZmVyTGVuZ3RoPTAsdGhpcy5ieXRlc0hhc2hlZD0wLHRoaXMuZmluaXNoZWQ9ITEsdGhpc30sdC5wcm90b3R5cGUuY2xlYW49ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHRoaXMuYnVmZmVyLmxlbmd0aDtlKyspdGhpcy5idWZmZXJbZV09MDtmb3IoZT0wO2U8dGhpcy50ZW1wLmxlbmd0aDtlKyspdGhpcy50ZW1wW2VdPTA7dGhpcy5yZXNldCgpfSx0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10JiYodD1lLmxlbmd0aCksdGhpcy5maW5pc2hlZCl0aHJvdyBuZXcgRXJyb3IoIlNIQTI1NjogY2FuJ3QgdXBkYXRlIGJlY2F1c2UgaGFzaCB3YXMgZmluaXNoZWQuIik7dmFyIG49MDtpZih0aGlzLmJ5dGVzSGFzaGVkKz10LHRoaXMuYnVmZmVyTGVuZ3RoPjApe2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8NjQmJnQ+MDspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZVtuKytdLHQtLTs2ND09PXRoaXMuYnVmZmVyTGVuZ3RoJiYocih0aGlzLnRlbXAsdGhpcy5zdGF0ZSx0aGlzLmJ1ZmZlciwwLDY0KSx0aGlzLmJ1ZmZlckxlbmd0aD0wKX1mb3IodD49NjQmJihuPXIodGhpcy50ZW1wLHRoaXMuc3RhdGUsZSxuLHQpLHQlPTY0KTt0PjA7KXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWVbbisrXSx0LS07cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbihlKXtpZighdGhpcy5maW5pc2hlZCl7dmFyIHQ9dGhpcy5ieXRlc0hhc2hlZCxuPXRoaXMuYnVmZmVyTGVuZ3RoLG89dC81MzY4NzA5MTJ8MCxpPXQ8PDMsYT10JTY0PDU2PzY0OjEyODt0aGlzLmJ1ZmZlcltuXT0xMjg7Zm9yKHZhciBzPW4rMTtzPGEtODtzKyspdGhpcy5idWZmZXJbc109MDt0aGlzLmJ1ZmZlclthLThdPW8+Pj4yNCYyNTUsdGhpcy5idWZmZXJbYS03XT1vPj4+MTYmMjU1LHRoaXMuYnVmZmVyW2EtNl09bz4+PjgmMjU1LHRoaXMuYnVmZmVyW2EtNV09bz4+PjAmMjU1LHRoaXMuYnVmZmVyW2EtNF09aT4+PjI0JjI1NSx0aGlzLmJ1ZmZlclthLTNdPWk+Pj4xNiYyNTUsdGhpcy5idWZmZXJbYS0yXT1pPj4+OCYyNTUsdGhpcy5idWZmZXJbYS0xXT1pPj4+MCYyNTUscih0aGlzLnRlbXAsdGhpcy5zdGF0ZSx0aGlzLmJ1ZmZlciwwLGEpLHRoaXMuZmluaXNoZWQ9ITB9Zm9yKHM9MDtzPDg7cysrKWVbNCpzKzBdPXRoaXMuc3RhdGVbc10+Pj4yNCYyNTUsZVs0KnMrMV09dGhpcy5zdGF0ZVtzXT4+PjE2JjI1NSxlWzQqcysyXT10aGlzLnN0YXRlW3NdPj4+OCYyNTUsZVs0KnMrM109dGhpcy5zdGF0ZVtzXT4+PjAmMjU1O3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLmRpZ2VzdExlbmd0aCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpLGV9LHQucHJvdG90eXBlLl9zYXZlU3RhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLnN0YXRlLmxlbmd0aDt0KyspZVt0XT10aGlzLnN0YXRlW3RdfSx0LnByb3RvdHlwZS5fcmVzdG9yZVN0YXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTA7cjx0aGlzLnN0YXRlLmxlbmd0aDtyKyspdGhpcy5zdGF0ZVtyXT1lW3JdO3RoaXMuYnl0ZXNIYXNoZWQ9dCx0aGlzLmZpbmlzaGVkPSExLHRoaXMuYnVmZmVyTGVuZ3RoPTB9LHR9KCk7ZS5IYXNoPW47dmFyIG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuaW5uZXI9bmV3IG4sdGhpcy5vdXRlcj1uZXcgbix0aGlzLmJsb2NrU2l6ZT10aGlzLmlubmVyLmJsb2NrU2l6ZSx0aGlzLmRpZ2VzdExlbmd0aD10aGlzLmlubmVyLmRpZ2VzdExlbmd0aDt2YXIgdD1uZXcgVWludDhBcnJheSh0aGlzLmJsb2NrU2l6ZSk7aWYoZS5sZW5ndGg+dGhpcy5ibG9ja1NpemUpKG5ldyBuKS51cGRhdGUoZSkuZmluaXNoKHQpLmNsZWFuKCk7ZWxzZSBmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl0W3JdPWVbcl07Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdXj01NDtmb3IodGhpcy5pbm5lci51cGRhdGUodCkscj0wO3I8dC5sZW5ndGg7cisrKXRbcl1ePTEwNjtmb3IodGhpcy5vdXRlci51cGRhdGUodCksdGhpcy5pc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMub3N0YXRlPW5ldyBVaW50MzJBcnJheSg4KSx0aGlzLmlubmVyLl9zYXZlU3RhdGUodGhpcy5pc3RhdGUpLHRoaXMub3V0ZXIuX3NhdmVTdGF0ZSh0aGlzLm9zdGF0ZSkscj0wO3I8dC5sZW5ndGg7cisrKXRbcl09MH1yZXR1cm4gZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbm5lci5fcmVzdG9yZVN0YXRlKHRoaXMuaXN0YXRlLHRoaXMuaW5uZXIuYmxvY2tTaXplKSx0aGlzLm91dGVyLl9yZXN0b3JlU3RhdGUodGhpcy5vc3RhdGUsdGhpcy5vdXRlci5ibG9ja1NpemUpLHRoaXN9LGUucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmlzdGF0ZS5sZW5ndGg7ZSsrKXRoaXMub3N0YXRlW2VdPXRoaXMuaXN0YXRlW2VdPTA7dGhpcy5pbm5lci5jbGVhbigpLHRoaXMub3V0ZXIuY2xlYW4oKX0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmlubmVyLnVwZGF0ZShlKSx0aGlzfSxlLnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3V0ZXIuZmluaXNoZWQ/dGhpcy5vdXRlci5maW5pc2goZSk6KHRoaXMuaW5uZXIuZmluaXNoKGUpLHRoaXMub3V0ZXIudXBkYXRlKGUsdGhpcy5kaWdlc3RMZW5ndGgpLmZpbmlzaChlKSksdGhpc30sZS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5kaWdlc3RMZW5ndGgpO3JldHVybiB0aGlzLmZpbmlzaChlKSxlfSxlfSgpO2Z1bmN0aW9uIGkoZSl7dmFyIHQ9KG5ldyBuKS51cGRhdGUoZSkscj10LmRpZ2VzdCgpO3JldHVybiB0LmNsZWFuKCkscn1mdW5jdGlvbiBhKGUsdCl7dmFyIHI9bmV3IG8oZSkudXBkYXRlKHQpLG49ci5kaWdlc3QoKTtyZXR1cm4gci5jbGVhbigpLG59ZnVuY3Rpb24gcyhlLHQscixuKXt2YXIgbz1uWzBdO2lmKDA9PT1vKXRocm93IG5ldyBFcnJvcigiaGtkZjogY2Fubm90IGV4cGFuZCBtb3JlIik7dC5yZXNldCgpLG8+MSYmdC51cGRhdGUoZSksciYmdC51cGRhdGUociksdC51cGRhdGUobiksdC5maW5pc2goZSksblswXSsrfWUuSE1BQz1vLGUuaGFzaD1pLGUuZGVmYXVsdD1pLGUuaG1hYz1hO3ZhciB1PW5ldyBVaW50OEFycmF5KGUuZGlnZXN0TGVuZ3RoKTtlLmhrZGY9ZnVuY3Rpb24oZSx0LHIsbil7dm9pZCAwPT09dCYmKHQ9dSksdm9pZCAwPT09biYmKG49MzIpO2Zvcih2YXIgaT1uZXcgVWludDhBcnJheShbMV0pLGM9YSh0LGUpLGY9bmV3IG8oYyksaD1uZXcgVWludDhBcnJheShmLmRpZ2VzdExlbmd0aCksbD1oLmxlbmd0aCxwPW5ldyBVaW50OEFycmF5KG4pLGQ9MDtkPG47ZCsrKWw9PT1oLmxlbmd0aCYmKHMoaCxmLHIsaSksbD0wKSxwW2RdPWhbbCsrXTtyZXR1cm4gZi5jbGVhbigpLGguZmlsbCgwKSxpLmZpbGwoMCkscH0sZS5wYmtkZjI9ZnVuY3Rpb24oZSx0LHIsbil7Zm9yKHZhciBpPW5ldyBvKGUpLGE9aS5kaWdlc3RMZW5ndGgscz1uZXcgVWludDhBcnJheSg0KSx1PW5ldyBVaW50OEFycmF5KGEpLGM9bmV3IFVpbnQ4QXJyYXkoYSksZj1uZXcgVWludDhBcnJheShuKSxoPTA7aCphPG47aCsrKXt2YXIgbD1oKzE7c1swXT1sPj4+MjQmMjU1LHNbMV09bD4+PjE2JjI1NSxzWzJdPWw+Pj44JjI1NSxzWzNdPWw+Pj4wJjI1NSxpLnJlc2V0KCksaS51cGRhdGUodCksaS51cGRhdGUocyksaS5maW5pc2goYyk7Zm9yKHZhciBwPTA7cDxhO3ArKyl1W3BdPWNbcF07Zm9yKHA9MjtwPD1yO3ArKyl7aS5yZXNldCgpLGkudXBkYXRlKGMpLmZpbmlzaChjKTtmb3IodmFyIGQ9MDtkPGE7ZCsrKXVbZF1ePWNbZF19Zm9yKHA9MDtwPGEmJmgqYStwPG47cCsrKWZbaCphK3BdPXVbcF19Zm9yKGg9MDtoPGE7aCsrKXVbaF09Y1toXT0wO2ZvcihoPTA7aDw0O2grKylzW2hdPTA7cmV0dXJuIGkuY2xlYW4oKSxmfX0obik7dmFyIG89bi5kZWZhdWx0O2Zvcih2YXIgaSBpbiBuKW9baV09bltpXTtlLmV4cG9ydHM9b30oKX0pKSk7ZnVuY3Rpb24gd24oKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBibigpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9dmFyIGtuPXduLHhuPWJuO2Z1bmN0aW9uIF9uKGUpe2lmKGtuPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChrbj09PXdufHwha24pJiZzZXRUaW1lb3V0KXJldHVybiBrbj1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIGtuKGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiBrbi5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4ga24uY2FsbCh0aGlzLGUsMCl9fX0iZnVuY3Rpb24iPT10eXBlb2YgZHIuc2V0VGltZW91dCYmKGtuPXNldFRpbWVvdXQpLCJmdW5jdGlvbiI9PXR5cGVvZiBkci5jbGVhclRpbWVvdXQmJih4bj1jbGVhclRpbWVvdXQpO3ZhciBTbixFbj1bXSxBbj0hMSxUbj0tMTtmdW5jdGlvbiBSbigpe0FuJiZTbiYmKEFuPSExLFNuLmxlbmd0aD9Fbj1Tbi5jb25jYXQoRW4pOlRuPS0xLEVuLmxlbmd0aCYmUG4oKSl9ZnVuY3Rpb24gUG4oKXtpZighQW4pe3ZhciBlPV9uKFJuKTtBbj0hMDtmb3IodmFyIHQ9RW4ubGVuZ3RoO3Q7KXtmb3IoU249RW4sRW49W107KytUbjx0OylTbiYmU25bVG5dLnJ1bigpO1RuPS0xLHQ9RW4ubGVuZ3RofVNuPW51bGwsQW49ITEsZnVuY3Rpb24oZSl7aWYoeG49PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigoeG49PT1ibnx8IXhuKSYmY2xlYXJUaW1lb3V0KXJldHVybiB4bj1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXt4bihlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIHhuLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4geG4uY2FsbCh0aGlzLGUpfX19KGUpfX1mdW5jdGlvbiBDbihlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fUNuLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfTt2YXIgT249ZHIucGVyZm9ybWFuY2V8fHt9LERuPShPbi5ub3d8fE9uLm1vek5vd3x8T24ubXNOb3d8fE9uLm9Ob3d8fE9uLndlYmtpdE5vdyxuZXcgRGF0ZSxmdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO0VuLnB1c2gobmV3IENuKGUsdCkpLDEhPT1Fbi5sZW5ndGh8fEFufHxfbihQbil9KSxJbj1mdW5jdGlvbihlKXtpZihlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIsbi5nZXQ/bjp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZVtyXX19KX0pKSx0fShkbiksVW49cHIoKGZ1bmN0aW9uKGUsdCl7dmFyIHI9SW4uQnVmZmVyO2Z1bmN0aW9uIG4oZSx0KXtmb3IodmFyIHIgaW4gZSl0W3JdPWVbcl19ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJuIHIoZSx0LG4pfXIuZnJvbSYmci5hbGxvYyYmci5hbGxvY1Vuc2FmZSYmci5hbGxvY1Vuc2FmZVNsb3c/ZS5leHBvcnRzPUluOihuKEluLHQpLHQuQnVmZmVyPW8pLG4ocixvKSxvLmZyb209ZnVuY3Rpb24oZSx0LG4pe2lmKCJudW1iZXIiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiByKGUsdCxuKX0sby5hbGxvYz1mdW5jdGlvbihlLHQsbil7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgbz1yKGUpO3JldHVybiB2b2lkIDAhPT10PyJzdHJpbmciPT10eXBlb2Ygbj9vLmZpbGwodCxuKTpvLmZpbGwodCk6by5maWxsKDApLG99LG8uYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gcihlKX0sby5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gSW4uU2xvd0J1ZmZlcihlKX19KSksTW49cHIoKGZ1bmN0aW9uKGUpe3ZhciB0PTY1NTM2LHI9VW4uQnVmZmVyLG49bHIuY3J5cHRvfHxsci5tc0NyeXB0bztuJiZuLmdldFJhbmRvbVZhbHVlcz9lLmV4cG9ydHM9ZnVuY3Rpb24oZSxvKXtpZihlPjQyOTQ5NjcyOTUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgaT1yLmFsbG9jVW5zYWZlKGUpO2lmKGU+MClpZihlPnQpZm9yKHZhciBhPTA7YTxlO2ErPXQpbi5nZXRSYW5kb21WYWx1ZXMoaS5zbGljZShhLGErdCkpO2Vsc2Ugbi5nZXRSYW5kb21WYWx1ZXMoaSk7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG8/RG4oKGZ1bmN0aW9uKCl7byhudWxsLGkpfSkpOml9OmUuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX19KSksTG49bmV3IFRleHRFbmNvZGVyLGpuPW5ldyBUZXh0RGVjb2RlcixIbj1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpcztpZigidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYpcmV0dXJuIHNlbGY7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvdzt0aHJvdyBuZXcgRXJyb3IoInVuYWJsZSB0byBsb2NhdGUgZ2xvYmFsIG9iamVjdCIpfSgpLHFuPWZ1bmN0aW9uKGUpe3ZhciB0PWU7cmV0dXJuIHQgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYodD1qbi5kZWNvZGUodCkpLHQ9dC5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKS5yZXBsYWNlKC9ccy9nLCIiKSxuZXcgVWludDhBcnJheShIbi5hdG9iKHQpLnNwbGl0KCIiKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoYXJDb2RlQXQoMCl9KSkpfSxCbj1mdW5jdGlvbihlKXtUKHIsZSk7dmFyIHQ9YXIocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gXyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSk9TRV9HRU5FUklDIixuLm5hbWU9bi5jb25zdHJ1Y3Rvci5uYW1lLEVycm9yLmNhcHR1cmVTdGFja1RyYWNlJiZFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShFKG4pLG4uY29uc3RydWN0b3IpLG59cmV0dXJuIHJ9KEwoRXJyb3IpKSxObj1mdW5jdGlvbihlKXtUKHIsZSk7dmFyIHQ9YXIocik7ZnVuY3Rpb24gcihlKXt2YXIgbixvPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIF8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9DTEFJTV9WQUxJREFUSU9OX0ZBSUxFRCIsbi5jbGFpbT1vLG4ucmVhc29uPWksbn1yZXR1cm4gcn0oQm4pLEtuPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIF8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfQUxHX05PVF9BTExPV0VEIixlfXJldHVybiByfShCbiksRm49ZnVuY3Rpb24oZSl7VChyLGUpO3ZhciB0PWFyKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gXyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSk9TRV9OT1RfU1VQUE9SVEVEIixlfXJldHVybiByfShCbiksWW49ZnVuY3Rpb24oZSl7VChyLGUpO3ZhciB0PWFyKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gXyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX0lOVkFMSUQiLGV9cmV0dXJuIHJ9KEJuKSxXbj1mdW5jdGlvbihlKXtUKHIsZSk7dmFyIHQ9YXIocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBfKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV1RfSU5WQUxJRCIsZX1yZXR1cm4gcn0oQm4pLEpuPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIF8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXU19TSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0ZBSUxFRCIsZS5tZXNzYWdlPSJzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCIsZX1yZXR1cm4gcn0oQm4pLHpuPWZ1bmN0aW9uKGUpe1QocixlKTt2YXIgdD1hcihyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIF8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXVF9FWFBJUkVEIixlfXJldHVybiByfShObiksR249SG4uY3J5cHRvO2Z1bmN0aW9uIFZuKCl7aWYoIUhuLmlzU2VjdXJlQ29udGV4dCYmIUhuLmNyeXB0by5zdWJ0bGUpdGhyb3cgbmV3IEJuKCJXZWIgQ3J5cHRvZ3JhcGh5IEFQSSBpcyBhdmFpbGFibGUgb25seSBpbiBTZWN1cmUgQ29udGV4dHMuIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU2VjdXJpdHkvU2VjdXJlX0NvbnRleHRzIil9dmFyICRuPWZ1bmN0aW9uKCl7dmFyIGU9eChpLm1hcmsoKGZ1bmN0aW9uIGUodCl7dmFyIHIsbixvLGEscyx1LGM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIG89ZnVuY3Rpb24oZSl7dmFyIHQscjtzd2l0Y2goZS5rdHkpe2Nhc2Uib2N0Ijpzd2l0Y2goZS5hbGcpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOnQ9e25hbWU6IkhNQUMiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zdWJzdHIoLTMpKX0scj1bInNpZ24iLCJ2ZXJpZnkiXTticmVhaztjYXNlIkExMjhDQkMtSFMyNTYiOmNhc2UiQTE5MkNCQy1IUzM4NCI6Y2FzZSJBMjU2Q0JDLUhTNTEyIjp0aHJvdyBuZXcgRm4oIiIuY29uY2F0KGUuYWxnLCIga2V5cyBjYW5ub3QgYmUgaW1wb3J0ZWQgYXMgQ3J5cHRvS2V5IGluc3RhbmNlcyIpKTtjYXNlIkExMjhHQ00iOmNhc2UiQTE5MkdDTSI6Y2FzZSJBMjU2R0NNIjpjYXNlIkExMjhHQ01LVyI6Y2FzZSJBMTkyR0NNS1ciOmNhc2UiQTI1NkdDTUtXIjp0PXtuYW1lOiJBRVMtR0NNIn0scj1bImVuY3J5cHQiLCJkZWNyeXB0Il07YnJlYWs7Y2FzZSJBMTI4S1ciOmNhc2UiQTE5MktXIjpjYXNlIkEyNTZLVyI6dD17bmFtZToiQUVTLUtXIn0scj1bIndyYXBLZXkiLCJ1bndyYXBLZXkiXTticmVhaztjYXNlIlBCRVMyLUhTMjU2K0ExMjhLVyI6Y2FzZSJQQkVTMi1IUzM4NCtBMTkyS1ciOmNhc2UiUEJFUzItSFM1MTIrQTI1NktXIjp0PXtuYW1lOiJQQktERjIifSxyPVsiZGVyaXZlQml0cyJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZuKCd1bnN1cHBvcnRlZCBvciBpbnZhbGlkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIlJTQSI6c3dpdGNoKGUuYWxnKXtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjp0PXtuYW1lOiJSU0EtUFNTIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc3Vic3RyKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6dD17bmFtZToiUlNBU1NBLVBLQ1MxLXYxXzUiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zdWJzdHIoLTMpKX0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIlJTQS1PQUVQIjpjYXNlIlJTQS1PQUVQLTI1NiI6Y2FzZSJSU0EtT0FFUC0zODQiOmNhc2UiUlNBLU9BRVAtNTEyIjp0PXtuYW1lOiJSU0EtT0FFUCIsaGFzaDoiU0hBLSIuY29uY2F0KHBhcnNlSW50KGUuYWxnLnN1YnN0cigtMyksMTApfHwxKX0scj1lLmQ/WyJkZWNyeXB0IiwidW53cmFwS2V5Il06WyJlbmNyeXB0Iiwid3JhcEtleSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZuKCd1bnN1cHBvcnRlZCBvciBpbnZhbGlkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIkVDIjpzd2l0Y2goZS5hbGcpe2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOmUuY3J2fSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRUNESC1FUyI6Y2FzZSJFQ0RILUVTK0ExMjhLVyI6Y2FzZSJFQ0RILUVTK0ExOTJLVyI6Y2FzZSJFQ0RILUVTK0EyNTZLVyI6dD17bmFtZToiRUNESCIsbmFtZWRDdXJ2ZTplLmNydn0scj1lLmQ/WyJkZXJpdmVCaXRzIl06W107YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRm4oJ3Vuc3VwcG9ydGVkIG9yIGludmFsaWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEZuKCd1bnN1cHBvcnRlZCBvciBpbnZhbGlkIEpXSyAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpfXJldHVybnthbGdvcml0aG06dCxrZXlVc2FnZXM6cn19KHQpLGE9by5hbGdvcml0aG0scz1vLmtleVVzYWdlcyx1PSJqd2siLGM9aXIoe30sdCksZS5hYnJ1cHQoInJldHVybiIsKGRlbGV0ZSBjLmFsZywiUEJLREYyIj09PWEubmFtZSYmKHU9InJhdyIsYz1xbih0LmspKSxWbigpLEduLnN1YnRsZS5pbXBvcnRLZXkodSxjLGEsbnVsbCE9PShyPXQuZXh0KSYmdm9pZCAwIT09ciYmcixudWxsIT09KG49dC5rZXlfb3BzKSYmdm9pZCAwIT09bj9uOnMpKSk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIFhuKGUpe3JldHVybiEhZSYmZS5jb25zdHJ1Y3Rvcj09PU9iamVjdH1mdW5jdGlvbiBabihlLHQscil7cmV0dXJuIFFuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBRbigpe3JldHVybiBRbj14KGkubWFyaygoZnVuY3Rpb24gZSh0LHIsbil7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoWG4odCkpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoIkpXSyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZihyfHwocj10LmFsZyksInN0cmluZyI9PXR5cGVvZiByJiZyKXtlLm5leHQ9NDticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCciYWxnIiBhcmd1bWVudCBpcyByZXF1aXJlZCB3aGVuICJqd2suYWxnIiBpcyBub3QgcHJlc2VudCcpO2Nhc2UgNDplLnQwPXQua3R5LGUubmV4dD0ib2N0Ij09PWUudDA/NzoiUlNBIj09PWUudDA/MTA6IkVDIj09PWUudDB8fCJPS1AiPT09ZS50MD8xMjoxMzticmVhaztjYXNlIDc6aWYoInN0cmluZyI9PXR5cGVvZiB0LmsmJnQuayl7ZS5uZXh0PTk7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcignbWlzc2luZyAiayIgKEtleSBWYWx1ZSkgUGFyYW1ldGVyIHZhbHVlJyk7Y2FzZSA5OnJldHVybiBlLmFicnVwdCgicmV0dXJuIiwobnVsbCE9bnx8KG49ITAhPT10LmV4dCksbj8kbihpcihpcih7fSx0KSx7fSx7YWxnOnIsZXh0OiExfSkpOnFuKHQuaykpKTtjYXNlIDEwOmlmKHZvaWQgMD09PXQub3RoKXtlLm5leHQ9MTI7YnJlYWt9dGhyb3cgbmV3IEZuKCdSU0EgSldLICJvdGgiIChPdGhlciBQcmltZXMgSW5mbykgUGFyYW1ldGVyIHZhbHVlIGlzIHVuc3VwcG9ydGVkJyk7Y2FzZSAxMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsJG4oaXIoaXIoe30sdCkse30se2FsZzpyfSkpKTtjYXNlIDEzOnRocm93IG5ldyBGbigndW5zdXBwb3J0ZWQgImt0eSIgKEtleSBUeXBlKSBQYXJhbWV0ZXIgdmFsdWUnKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpLFFuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgZW89ZnVuY3Rpb24oKXt2YXIgZT14KGkubWFyaygoZnVuY3Rpb24gZSh0LHIsbixvKXt2YXIgYTtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihWbigpLCEociBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKXtlLm5leHQ9ODticmVha31pZih0LnN0YXJ0c1dpdGgoIkhTIikpe2UubmV4dD0zO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoInN5bW1ldHJpYyBrZXlzIGFyZSBvbmx5IGFwcGxpY2FibGUgZm9yIEhNQUMtYmFzZWQgYWxnb3JpdGhtcyIpO2Nhc2UgMzpyZXR1cm4gZS5uZXh0PTUsR24uc3VidGxlLmltcG9ydEtleSgicmF3IixyLHtoYXNoOiJTSEEtIi5jb25jYXQodC5zdWJzdHIoLTMpKSxuYW1lOiJITUFDIn0sITEsWyJ2ZXJpZnkiXSk7Y2FzZSA1OmE9ZS5zZW50LGUubmV4dD05O2JyZWFrO2Nhc2UgODphPXI7Y2FzZSA5OnJldHVybiBlLmFicnVwdCgicmV0dXJuIiwoZnVuY3Rpb24oZSx0KXtpZihlLnN0YXJ0c1dpdGgoIkhTIikpe3ZhciByPXBhcnNlSW50KGUuc3Vic3RyKC0zKSwxMCksbj10LmFsZ29yaXRobS5sZW5ndGg7aWYoIm51bWJlciIhPXR5cGVvZiBufHxuPHIpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoZSwiIHJlcXVpcmVzIHN5bW1ldHJpYyBrZXlzIHRvIGJlICIpLmNvbmNhdChyLCIgYml0cyBvciBsYXJnZXIiKSl9aWYoZS5zdGFydHNXaXRoKCJSUyIpfHxlLnN0YXJ0c1dpdGgoIlBTIikpe3ZhciBvPXQuYWxnb3JpdGhtLm1vZHVsdXNMZW5ndGg7aWYoIm51bWJlciIhPXR5cGVvZiBvfHxvPDIwNDgpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoZSwiIHJlcXVpcmVzIGtleSBtb2R1bHVzTGVuZ3RoIHRvIGJlIDIwNDggYml0cyBvciBsYXJnZXIiKSl9fSh0LGEpLEduLnN1YnRsZS52ZXJpZnkoZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2UiSFMyNTYiOnJldHVybntoYXNoOiJTSEEtMjU2IixuYW1lOiJITUFDIn07Y2FzZSJIUzM4NCI6cmV0dXJue2hhc2g6IlNIQS0zODQiLG5hbWU6IkhNQUMifTtjYXNlIkhTNTEyIjpyZXR1cm57aGFzaDoiU0hBLTUxMiIsbmFtZToiSE1BQyJ9O2Nhc2UiUFMyNTYiOnJldHVybntoYXNoOiJTSEEtMjU2IixuYW1lOiJSU0EtUFNTIixzYWx0TGVuZ3RoOjMyfTtjYXNlIlBTMzg0IjpyZXR1cm57aGFzaDoiU0hBLTM4NCIsbmFtZToiUlNBLVBTUyIsc2FsdExlbmd0aDo0OH07Y2FzZSJQUzUxMiI6cmV0dXJue2hhc2g6IlNIQS01MTIiLG5hbWU6IlJTQS1QU1MiLHNhbHRMZW5ndGg6NjR9O2Nhc2UiUlMyNTYiOnJldHVybntoYXNoOiJTSEEtMjU2IixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiUlMzODQiOnJldHVybntoYXNoOiJTSEEtMzg0IixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiUlM1MTIiOnJldHVybntoYXNoOiJTSEEtNTEyIixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiRVMyNTYiOnJldHVybntoYXNoOiJTSEEtMjU2IixuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC0yNTYifTtjYXNlIkVTMzg0IjpyZXR1cm57aGFzaDoiU0hBLTM4NCIsbmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtMzg0In07Y2FzZSJFUzUxMiI6cmV0dXJue2hhc2g6IlNIQS01MTIiLG5hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTUyMSJ9O2RlZmF1bHQ6dGhyb3cgbmV3IEZuKCJhbGcgIi5jb25jYXQoZSwiIGlzIHVuc3VwcG9ydGVkIGVpdGhlciBieSBKT1NFIG9yIHlvdXIgamF2YXNjcmlwdCBydW50aW1lIikpfX0odCksYSxuLG8pKSk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCxyLG4sbyl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSx0bz1mdW5jdGlvbihlLHQscixuKXtpZih2b2lkIDAhPT1uLmNyaXQmJnZvaWQgMD09PXIuY3JpdCl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKTtpZighcnx8dm9pZCAwPT09ci5jcml0KXJldHVybiBuZXcgU2V0O2lmKCFBcnJheS5pc0FycmF5KHIuY3JpdCl8fDA9PT1yLmNyaXQubGVuZ3RofHxyLmNyaXQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfHwwPT09ZS5sZW5ndGh9KSkpdGhyb3cgbmV3IGUoJyJjcml0IiAoQ3JpdGljYWwpIEhlYWRlciBQYXJhbWV0ZXIgTVVTVCBiZSBhbiBhcnJheSBvZiBub24tZW1wdHkgc3RyaW5ncyB3aGVuIHByZXNlbnQnKTt2YXIgbyxpPXJyKHIuY3JpdCk7dHJ5e2ZvcihpLnMoKTshKG89aS5uKCkpLmRvbmU7KXt2YXIgYT1vLnZhbHVlO2lmKCF0LmhhcyhhKSl0aHJvdyBuZXcgRm4oJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdChhLCciIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbicpKTtpZih2b2lkIDA9PT1uW2FdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQoYSwnIiBpcyBtaXNzaW5nJykpO2lmKHQuZ2V0KGEpJiZ2b2lkIDA9PT1yW2FdKXRocm93IG5ldyBlKCdFeHRlbnNpb24gSGVhZGVyIFBhcmFtZXRlciAiJy5jb25jYXQoYSwnIiBNVVNUIGJlIGludGVncml0eSBwcm90ZWN0ZWQnKSl9fWNhdGNoKGUpe2kuZShlKX1maW5hbGx5e2kuZigpfXJldHVybiBuZXcgU2V0KHIuY3JpdCl9LmJpbmQodm9pZCAwLFluLG5ldyBNYXAoW1siYjY0IiwhMF1dKSkscm89ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10JiYoIUFycmF5LmlzQXJyYXkodCl8fHQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfSkpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciJy5jb25jYXQoZSwnIiBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJykpO2lmKHQpcmV0dXJuIG5ldyBTZXQodCl9LmJpbmQodm9pZCAwLCJhbGdvcml0aG1zIik7ZnVuY3Rpb24gbm8oZSx0LHIpe3JldHVybiBvby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gb28oKXtyZXR1cm4gb289eChpLm1hcmsoKGZ1bmN0aW9uIGUodCxyLG4pe3ZhciBvLGEscyx1LGMsZixoLGwscCxkO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKFhuKHQpKXtlLm5leHQ9MjticmVha310aHJvdyBuZXcgWW4oIkZsYXR0ZW5lZCBKV1MgbXVzdCBiZSBhbiBvYmplY3QiKTtjYXNlIDI6aWYodm9pZCAwIT09dC5wcm90ZWN0ZWR8fHZvaWQgMCE9PXQuaGVhZGVyKXtlLm5leHQ9NDticmVha310aHJvdyBuZXcgWW4oJ0ZsYXR0ZW5lZCBKV1MgbXVzdCBoYXZlIGVpdGhlciBvZiB0aGUgInByb3RlY3RlZCIgb3IgImhlYWRlciIgbWVtYmVycycpO2Nhc2UgNDppZih2b2lkIDA9PT10LnByb3RlY3RlZHx8InN0cmluZyI9PXR5cGVvZiB0LnByb3RlY3RlZCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IFluKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgNjppZih2b2lkIDAhPT10LnBheWxvYWQpe2UubmV4dD04O2JyZWFrfXRocm93IG5ldyBZbigiSldTIFBheWxvYWQgbWlzc2luZyIpO2Nhc2UgODppZigic3RyaW5nIj09dHlwZW9mIHQuc2lnbmF0dXJlKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IFluKCJKV1MgU2lnbmF0dXJlIG1pc3Npbmcgb3IgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEwOmlmKHZvaWQgMD09PXQuaGVhZGVyfHxYbih0LmhlYWRlcikpe2UubmV4dD0xMjticmVha310aHJvdyBuZXcgWW4oIkpXUyBVbnByb3RlY3RlZCBIZWFkZXIgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDEyOmlmKG89e30sdC5wcm90ZWN0ZWQmJihhPXFuKHQucHJvdGVjdGVkKSxvPUpTT04ucGFyc2Uoam4uZGVjb2RlKGEpKSksZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbixvPXQuZmlsdGVyKEJvb2xlYW4pO2lmKDA9PT1vLmxlbmd0aHx8MT09PW8ubGVuZ3RoKXJldHVybiEwO3ZhciBpLGE9cnIobyk7dHJ5e2ZvcihhLnMoKTshKGk9YS5uKCkpLmRvbmU7KXt2YXIgcz1pLnZhbHVlLHU9T2JqZWN0LmtleXMocyk7aWYobiYmMCE9PW4uc2l6ZSl7dmFyIGMsZj1ycih1KTt0cnl7Zm9yKGYucygpOyEoYz1mLm4oKSkuZG9uZTspe3ZhciBoPWMudmFsdWU7aWYobi5oYXMoaCkpcmV0dXJuITE7bi5hZGQoaCl9fWNhdGNoKGUpe2YuZShlKX1maW5hbGx5e2YuZigpfX1lbHNlIG49bmV3IFNldCh1KX19Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9cmV0dXJuITB9KG8sdC5oZWFkZXIpKXtlLm5leHQ9MTY7YnJlYWt9dGhyb3cgbmV3IFluKCJKV1MgUHJvdGVjdGVkIGFuZCBKV1MgVW5wcm90ZWN0ZWQgSGVhZGVyIFBhcmFtZXRlciBuYW1lcyBtdXN0IGJlIGRpc2pvaW50Iik7Y2FzZSAxNjppZihzPWlyKGlyKHt9LG8pLHQuaGVhZGVyKSx1PSEwLCF0byhvLHMpLmhhcygiYjY0Iil8fCJib29sZWFuIj09dHlwZW9mKHU9by5iNjQpKXtlLm5leHQ9MjA7YnJlYWt9dGhyb3cgbmV3IFluKCdUaGUgImI2NCIgKGJhc2U2NHVybC1lbmNvZGUgcGF5bG9hZCkgSGVhZGVyIFBhcmFtZXRlciBtdXN0IGJlIGEgYm9vbGVhbicpO2Nhc2UgMjA6aWYoInN0cmluZyI9PXR5cGVvZihjPXMuYWxnKSYmYyl7ZS5uZXh0PTIzO2JyZWFrfXRocm93IG5ldyBZbignSldTICJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbWlzc2luZyBvciBpbnZhbGlkJyk7Y2FzZSAyMzppZighKGY9biYmcm8obi5hbGdvcml0aG1zKSl8fGYuaGFzKGMpKXtlLm5leHQ9MjY7YnJlYWt9dGhyb3cgbmV3IEtuKCciYWxnIiAoQWxnb3JpdGhtKSBIZWFkZXIgUGFyYW1ldGVyIG5vdCBhbGxvd2VkJyk7Y2FzZSAyNjppZighdSl7ZS5uZXh0PTMxO2JyZWFrfWlmKCJzdHJpbmciPT10eXBlb2YgdC5wYXlsb2FkKXtlLm5leHQ9Mjk7YnJlYWt9dGhyb3cgbmV3IFluKCJKV1MgUGF5bG9hZCBtdXN0IGJlIGEgc3RyaW5nIik7Y2FzZSAyOTplLm5leHQ9MzM7YnJlYWs7Y2FzZSAzMTppZigic3RyaW5nIj09dHlwZW9mIHQucGF5bG9hZHx8dC5wYXlsb2FkIGluc3RhbmNlb2YgVWludDhBcnJheSl7ZS5uZXh0PTMzO2JyZWFrfXRocm93IG5ldyBZbigiSldTIFBheWxvYWQgbXVzdCBiZSBhIHN0cmluZyBvciBhbiBVaW50OEFycmF5IGluc3RhbmNlIik7Y2FzZSAzMzppZihlLnQwPSJmdW5jdGlvbiI9PXR5cGVvZiByLCFlLnQwKXtlLm5leHQ9Mzg7YnJlYWt9cmV0dXJuIGUubmV4dD0zNyxyKG8sdCk7Y2FzZSAzNzpyPWUuc2VudDtjYXNlIDM4OnJldHVybiBmdW5jdGlvbihlLHQpe2lmKGUuc3RhcnRzV2l0aCgiSFMiKXx8ImRpciI9PT1lfHxlLnN0YXJ0c1dpdGgoIlBCRVMyIil8fGUubWF0Y2goL15BXGR7M30oPzpHQ00pS1ckLykpe2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHwic2VjcmV0Ij09PXQudHlwZSlyZXR1cm47dGhyb3cgbmV3IFR5cGVFcnJvcignQ3J5cHRvS2V5IG9yIEtleU9iamVjdCBpbnN0YW5jZXMgZm9yIHN5bW1ldHJpYyBhbGdvcml0aG1zIG11c3QgYmUgb2YgdHlwZSAic2VjcmV0IicpfWlmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXRocm93IG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBvciBLZXlPYmplY3QgaW5zdGFuY2VzIG11c3QgYmUgdXNlZCBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG1zIik7aWYoInNlY3JldCI9PT10LnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcignQ3J5cHRvS2V5IG9yIEtleU9iamVjdCBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtcyBtdXN0IG5vdCBiZSBvZiB0eXBlICJzZWNyZXQiJyl9KGMsciksaD1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3ZhciBuPXQucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlK3QubGVuZ3RofSksMCksbz1uZXcgVWludDhBcnJheShuKSxpPTA7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7by5zZXQoZSxpKSxpKz1lLmxlbmd0aH0pKSxvfShMbi5lbmNvZGUodC5wcm90ZWN0ZWR8fCIiKSxMbi5lbmNvZGUoIi4iKSwic3RyaW5nIj09dHlwZW9mIHQucGF5bG9hZD9Mbi5lbmNvZGUodC5wYXlsb2FkKTp0LnBheWxvYWQpLGw9cW4odC5zaWduYXR1cmUpLGUubmV4dD00MixlbyhjLHIsbCxoKTtjYXNlIDQyOmlmKGUuc2VudCl7ZS5uZXh0PTQ0O2JyZWFrfXRocm93IG5ldyBKbjtjYXNlIDQ0OnJldHVybiBwPXU/cW4odC5wYXlsb2FkKToic3RyaW5nIj09dHlwZW9mIHQucGF5bG9hZD9Mbi5lbmNvZGUodC5wYXlsb2FkKTp0LnBheWxvYWQsZD17cGF5bG9hZDpwfSxlLmFicnVwdCgicmV0dXJuIiwodm9pZCAwIT09dC5wcm90ZWN0ZWQmJihkLnByb3RlY3RlZEhlYWRlcj1vKSx2b2lkIDAhPT10LmhlYWRlciYmKGQudW5wcm90ZWN0ZWRIZWFkZXI9dC5oZWFkZXIpLGQpKTtjYXNlIDQ3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpLG9vLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgaW89L14oXGQrfFxkK1wuXGQrKSA/KHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSkkL2ksYW89ZnVuY3Rpb24oZSl7dmFyIHQ9aW8uZXhlYyhlKTtpZighdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHRpbWUgcGVyaW9kIGZvcm1hdCIpO3ZhciByPXBhcnNlRmxvYXQodFsxXSk7c3dpdGNoKHRbMl0udG9Mb3dlckNhc2UoKSl7Y2FzZSJzZWMiOmNhc2Uic2VjcyI6Y2FzZSJzZWNvbmQiOmNhc2Uic2Vjb25kcyI6Y2FzZSJzIjpyZXR1cm4gTWF0aC5yb3VuZChyKTtjYXNlIm1pbnV0ZSI6Y2FzZSJtaW51dGVzIjpjYXNlIm1pbiI6Y2FzZSJtaW5zIjpjYXNlIm0iOnJldHVybiBNYXRoLnJvdW5kKDYwKnIpO2Nhc2UiaG91ciI6Y2FzZSJob3VycyI6Y2FzZSJociI6Y2FzZSJocnMiOmNhc2UiaCI6cmV0dXJuIE1hdGgucm91bmQoMzYwMCpyKTtjYXNlImRheSI6Y2FzZSJkYXlzIjpjYXNlImQiOnJldHVybiBNYXRoLnJvdW5kKDg2NDAwKnIpO2Nhc2Uid2VlayI6Y2FzZSJ3ZWVrcyI6Y2FzZSJ3IjpyZXR1cm4gTWF0aC5yb3VuZCg2MDQ4MDAqcik7ZGVmYXVsdDpyZXR1cm4gTWF0aC5yb3VuZCgzMTU1NzYwMCpyKX19LHNvPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXmFwcGxpY2F0aW9uXC8vLCIiKX0sdW89ZnVuY3Rpb24oZSx0KXt2YXIgcixvPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxpPW8udHlwO2lmKGkmJigic3RyaW5nIiE9dHlwZW9mIGUudHlwfHxzbyhlLnR5cCkhPT1zbyhpKSkpdGhyb3cgbmV3IE5uKCd1bmV4cGVjdGVkICJ0eXAiIEpXVCBoZWFkZXIgdmFsdWUnLCJ0eXAiLCJjaGVja19mYWlsZWQiKTt0cnl7cj1KU09OLnBhcnNlKGpuLmRlY29kZSh0KSl9Y2F0Y2goZSl7fWlmKCJvYmplY3QiIT1uKHIpfHwhcnx8QXJyYXkuaXNBcnJheShyKSl0aHJvdyBuZXcgV24oIkpXVCBDbGFpbXMgU2V0IG11c3QgYmUgYSB0b3AtbGV2ZWwgSlNPTiBvYmplY3QiKTt2YXIgYT1vLmlzc3VlcjtpZihhJiYhKCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSkuaW5jbHVkZXMoci5pc3MpKXRocm93IG5ldyBObigndW5leHBlY3RlZCAiaXNzIiBjbGFpbSB2YWx1ZScsImlzcyIsImNoZWNrX2ZhaWxlZCIpO3ZhciBzPW8uc3ViamVjdDtpZihzJiZyLnN1YiE9PXMpdGhyb3cgbmV3IE5uKCd1bmV4cGVjdGVkICJzdWIiIGNsYWltIHZhbHVlJywic3ViIiwiY2hlY2tfZmFpbGVkIik7dmFyIHUsYyxmLGg9by5hdWRpZW5jZTtpZihoJiYoYz0ic3RyaW5nIj09dHlwZW9mIGg/W2hdOmgsISgic3RyaW5nIj09dHlwZW9mKHU9ci5hdWQpP2MuaW5jbHVkZXModSk6Yy5zb21lKFNldC5wcm90b3R5cGUuaGFzLmJpbmQobmV3IFNldCh1KSkpKSkpdGhyb3cgbmV3IE5uKCd1bmV4cGVjdGVkICJhdWQiIGNsYWltIHZhbHVlJywiYXVkIiwiY2hlY2tfZmFpbGVkIik7c3dpdGNoKG4oby5jbG9ja1RvbGVyYW5jZSkpe2Nhc2Uic3RyaW5nIjpmPWFvKG8uY2xvY2tUb2xlcmFuY2UpO2JyZWFrO2Nhc2UibnVtYmVyIjpmPW8uY2xvY2tUb2xlcmFuY2U7YnJlYWs7Y2FzZSJ1bmRlZmluZWQiOmY9MDticmVhaztkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgY2xvY2tUb2xlcmFuY2Ugb3B0aW9uIHR5cGUiKX12YXIgbCxwPW8uY3VycmVudERhdGUsZD0obD1wfHxuZXcgRGF0ZSxNYXRoLmZsb29yKGwuZ2V0VGltZSgpLzFlMykpO2lmKHZvaWQgMCE9PXIuaWF0fHxvLm1heFRva2VuQWdlKXtpZigibnVtYmVyIiE9dHlwZW9mIHIuaWF0KXRocm93IG5ldyBObignImlhdCIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsImlhdCIsImludmFsaWQiKTtpZih2b2lkIDA9PT1yLmV4cCYmci5pYXQ+ZCtmKXRocm93IG5ldyBObignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAoaXQgc2hvdWxkIGJlIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpfWlmKHZvaWQgMCE9PXIubmJmKXtpZigibnVtYmVyIiE9dHlwZW9mIHIubmJmKXRocm93IG5ldyBObignIm5iZiIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsIm5iZiIsImludmFsaWQiKTtpZihyLm5iZj5kK2YpdGhyb3cgbmV3IE5uKCcibmJmIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywibmJmIiwiY2hlY2tfZmFpbGVkIil9aWYodm9pZCAwIT09ci5leHApe2lmKCJudW1iZXIiIT10eXBlb2Ygci5leHApdGhyb3cgbmV3IE5uKCciZXhwIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywiZXhwIiwiaW52YWxpZCIpO2lmKHIuZXhwPD1kLWYpdGhyb3cgbmV3IHpuKCciZXhwIiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkJywiZXhwIiwiY2hlY2tfZmFpbGVkIil9aWYoby5tYXhUb2tlbkFnZSl7dmFyIHY9ZC1yLmlhdDtpZih2LWY+KCJudW1iZXIiPT10eXBlb2Ygby5tYXhUb2tlbkFnZT9vLm1heFRva2VuQWdlOmFvKG8ubWF4VG9rZW5BZ2UpKSl0aHJvdyBuZXcgem4oJyJpYXQiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQgKHRvbyBmYXIgaW4gdGhlIHBhc3QpJywiaWF0IiwiY2hlY2tfZmFpbGVkIik7aWYodjwwLWYpdGhyb3cgbmV3IE5uKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkIChpdCBzaG91bGQgYmUgaW4gdGhlIHBhc3QpJywiaWF0IiwiY2hlY2tfZmFpbGVkIil9cmV0dXJuIHJ9O2Z1bmN0aW9uIGNvKCl7cmV0dXJuIGNvPXgoaS5tYXJrKChmdW5jdGlvbiBlKHQscixuKXt2YXIgbztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsZnVuY3Rpb24oKXt2YXIgZT14KGkubWFyaygoZnVuY3Rpb24gZSh0LHIsbil7dmFyIG8sYSxzLHUsYztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZih0IGluc3RhbmNlb2YgVWludDhBcnJheSYmKHQ9am4uZGVjb2RlKHQpKSwic3RyaW5nIj09dHlwZW9mIHQpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBZbigiQ29tcGFjdCBKV1MgbXVzdCBiZSBhIHN0cmluZyBvciBVaW50OEFycmF5Iik7Y2FzZSAyOmlmKG89dC5zcGxpdCgiLiIpLGE9b1swXSxzPW9bMV0sdT1vWzJdLDM9PT1vLmxlbmd0aCl7ZS5uZXh0PTU7YnJlYWt9dGhyb3cgbmV3IFluKCJJbnZhbGlkIENvbXBhY3QgSldTIik7Y2FzZSA1OnJldHVybiBlLm5leHQ9Nyxubyh7cGF5bG9hZDpzfHx2b2lkIDAscHJvdGVjdGVkOmF8fHZvaWQgMCxzaWduYXR1cmU6dXx8dm9pZCAwfSxyLG4pO2Nhc2UgNzpyZXR1cm4gYz1lLnNlbnQsZS5hYnJ1cHQoInJldHVybiIse3BheWxvYWQ6Yy5wYXlsb2FkLHByb3RlY3RlZEhlYWRlcjpjLnByb3RlY3RlZEhlYWRlcn0pO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKTtyZXR1cm4gZnVuY3Rpb24odCxyLG4pe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCkodCxyLG4pO2Nhc2UgMjpyZXR1cm4gbz1lLnNlbnQsZS5hYnJ1cHQoInJldHVybiIse3BheWxvYWQ6dW8oby5wcm90ZWN0ZWRIZWFkZXIsby5wYXlsb2FkLG4pLHByb3RlY3RlZEhlYWRlcjpvLnByb3RlY3RlZEhlYWRlcn0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSxjby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGZvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe18odGhpcyxlKX1yZXR1cm4gdyhlLG51bGwsW3trZXk6ImJhc2U2NFVSTEVuY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHluLmVuY29kZShlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9fSx7a2V5OiJnZXRDb2RlVmVyaWZpZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmFzZTY0VVJMRW5jb2RlKE1uKDMyKSl9fSx7a2V5OiJnZXRDb2RlQ2hhbGxlbmdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5iYXNlNjRVUkxFbmNvZGUobmV3IFgobW4oKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGUpKSkpfX0se2tleToiZ2V0U3VwcG9ydGVkU2lnbmF0dXJlQWxnb3JpdGhtcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bIlJTMjU2IiwiUlM1MTIiLCJSUzM4NCIsIlBTMjU2Il19fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZSh5bi5kZWNvZGUoZSwidXRmOCIpKSxvPXJyKHQpO3RyeXtmb3Ioby5zKCk7IShyPW8ubigpKS5kb25lOyl7dmFyIGk9ci52YWx1ZTtpZihuLmtpZD09PWkua2lkKXJldHVybiBabih7YWxnOmkuYWxnLGU6aS5lLGt0eTppLmt0eSxuOmkubn0pfX1jYXRjaChlKXtvLmUoZSl9ZmluYWxseXtvLmYoKX1yZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJDUllQVE9fVVRJTC1HVEZUSVQtSVYwMSIsImNyeXB0by11dGlscyIsImdldEpXS0ZvclRoZUlkVG9rZW4iLCJraWQgbm90IGZvdW5kLiIsIkZhaWxlZCB0byBmaW5kIHRoZSAna2lkJyBzcGVjaWZpZWQgaW4gdGhlIGlkX3Rva2VuLiAna2lkJyBmb3VuZCBpbiB0aGUgaGVhZGVyIDogIituLmtpZCsiLCBFeHBlY3RlZCB2YWx1ZXM6ICIrdC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmtpZH0pKS5qb2luKCIsICIpKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixvLGkpe3JldHVybiBmdW5jdGlvbihlLHQscil7cmV0dXJuIGNvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oZSx0LHthbGdvcml0aG1zOnRoaXMuZ2V0U3VwcG9ydGVkU2lnbmF0dXJlQWxnb3JpdGhtcygpLGF1ZGllbmNlOnIsY2xvY2tUb2xlcmFuY2U6aSxpc3N1ZXI6bixzdWJqZWN0Om99KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJDUllQVE9fVVRJTC1JVklULUlWMDIiLCJjcnlwdG8tdXRpbHMiLCJpc1ZhbGlkSWRUb2tlbiIsIlZhbGlkYXRpbmcgSUQgdG9rZW4gZmFpbGVkIixlKSl9KSl9fSx7a2V5OiJkZWNvZGVJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt0cnl7dmFyIHQ9eW4uZGVjb2RlKGUuc3BsaXQoIi4iKVsxXSwidXRmOCIpO3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe3Rocm93IG5ldyBmcigiQ1JZUFRPX1VUSUwtRElULUlWMDEiLCJjcnlwdG8tdXRpbHMiLCJkZWNvZGVJRFRva2VuIiwiRGVjb2RpbmcgSUQgdG9rZW4gZmFpbGVkLiIsZSl9fX1dKSxlfSgpLGhvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe18odGhpcyxlKX1yZXR1cm4gdyhlLG51bGwsW3trZXk6ImdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuLG8saT1mby5kZWNvZGVJRFRva2VuKGUpLGE9dGhpcy5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQoaSkscz1udWxsIT09KHQ9bnVsbD09aT92b2lkIDA6aS51c2VybmFtZSkmJnZvaWQgMCE9PXQ/dDoiIix1PW51bGwhPT0ocj1pLmdpdmVuX25hbWUpJiZ2b2lkIDAhPT1yP3I6IiIsYz1udWxsIT09KG49aS5mYW1pbHlfbmFtZSkmJnZvaWQgMCE9PW4/bjoiIixmPXUmJmM/IiIuY29uY2F0KHUsIiAiKS5jb25jYXQoYyk6dXx8Y3x8IiIsaD1udWxsIT09KG89aS5wcmVmZXJyZWRfdXNlcm5hbWUpJiZ2b2lkIDAhPT1vP286ZjtyZXR1cm4gT2JqZWN0LmFzc2lnbih7ZGlzcGxheU5hbWU6aCx0ZW5hbnREb21haW46YSx1c2VybmFtZTpzfSx0aGlzLmZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZChpKSl9fSx7a2V5OiJmaWx0ZXJDbGFpbXNGcm9tSURUb2tlblBheWxvYWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5hc3NpZ24oe30sZSk7bnVsbD09dHx8ZGVsZXRlIHQuaXNzLG51bGw9PXR8fGRlbGV0ZSB0LmF1ZCxudWxsPT10fHxkZWxldGUgdC5leHAsbnVsbD09dHx8ZGVsZXRlIHQuaWF0LG51bGw9PXR8fGRlbGV0ZSB0LmFjcixudWxsPT10fHxkZWxldGUgdC5hbXIsbnVsbD09dHx8ZGVsZXRlIHQuYXpwLG51bGw9PXR8fGRlbGV0ZSB0LmF1dGhfdGltZSxudWxsPT10fHxkZWxldGUgdC5ub25jZSxudWxsPT10fHxkZWxldGUgdC5jX2hhc2gsbnVsbD09dHx8ZGVsZXRlIHQuYXRfaGFzaCxudWxsPT10fHxkZWxldGUgdC5uYmYsbnVsbD09dHx8ZGVsZXRlIHQuaXNrLG51bGw9PXR8fGRlbGV0ZSB0LnNpZDt2YXIgcj17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9eShlLDIpLG49dFswXSxvPXRbMV0saT1uLnNwbGl0KCJfIikubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiAwPT09dD9lOltlWzBdLnRvVXBwZXJDYXNlKCldLmNvbmNhdChsKGUuc2xpY2UoMSkpKS5qb2luKCIiKX0pKS5qb2luKCIiKTtyW2ldPW99KSkscn19LHtrZXk6ImdldFRva2VuUmVxdWVzdEhlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiIsIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9fX1dKSxlfSgpO2hvLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06IkAiLHI9ZS5zdWIuc3BsaXQodCk7cmV0dXJuIHIubGVuZ3RoPjI/cltyLmxlbmd0aC0xXToiIn07dmFyIGxvLHBvLHZvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgcj10aGlzO18odGhpcyxlKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gc3Iocix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gc3Iocix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fXJldHVybiB3KGUsW3trZXk6InJlc29sdmVXZWxsS25vd25FbmRwb2ludCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9jb25maWcoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLHQud2VsbEtub3duRW5kcG9pbnQ/dC5zZXJ2ZXJPcmlnaW4rdC53ZWxsS25vd25FbmRwb2ludDp0LnNlcnZlck9yaWdpbisiL29hdXRoMi90b2tlbi8ud2VsbC1rbm93bi9vcGVuaWQtY29uZmlndXJhdGlvbiIpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVzb2x2ZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPXt9LHQubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gbj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKG4ub3ZlcnJpZGVXZWxsRW5kcG9pbnRDb25maWcmJm4uZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhuLmVuZHBvaW50cykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7clt0XT0obnVsbD09bj92b2lkIDA6bi5lbmRwb2ludHMpP24uZW5kcG9pbnRzW2VdOiIifSkpLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSxyKSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVzb2x2ZUZhbGxiYWNrRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQscixuO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXt9LGUubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4ocj1lLnNlbnQpLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoci5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbbl09KG51bGw9PXI/dm9pZCAwOnIuZW5kcG9pbnRzKT9yLmVuZHBvaW50c1tlXToiIn0pKSxuPXthdXRob3JpemF0aW9uX2VuZHBvaW50OnIuc2VydmVyT3JpZ2luKyIvb2F1dGgyL2F1dGhvcml6ZSIsZW5kX3Nlc3Npb25fZW5kcG9pbnQ6ci5zZXJ2ZXJPcmlnaW4rIi9vaWRjL2xvZ291dCIsandrc191cmk6ci5zZXJ2ZXJPcmlnaW4rIi9vYXV0aDIvandrcyIsY2hlY2tfc2Vzc2lvbl9pZnJhbWU6ci5zZXJ2ZXJPcmlnaW4rIi9vaWRjL2NoZWNrc2Vzc2lvbiIscmV2b2NhdGlvbl9lbmRwb2ludDpyLnNlcnZlck9yaWdpbisiL29hdXRoMi9yZXZva2UiLHRva2VuX2VuZHBvaW50OnIuc2VydmVyT3JpZ2luKyIvb2F1dGgyL3Rva2VuIn0sZS5hYnJ1cHQoInJldHVybiIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHQpLG4pKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InZhbGlkYXRlSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLG89dGhpcztyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiByPXQuc2VudC5qd2tzX3VyaSx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6cmV0dXJuIG49dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHImJjAhPT1yLnRyaW0oKS5sZW5ndGg/dHIuZ2V0KHIse3dpdGhDcmVkZW50aWFsczpudWxsPT1uP3ZvaWQgMDpuLnNlbmRDb29raWVzSW5SZXF1ZXN0c30pLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBzcihvLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sbyxhPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoMjAwPT09dC5zdGF0dXMpe3IubmV4dD0yO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfSEVMUEVSLVZJVC1OUjAyIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIiwiSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgandrcyByZXR1cm5lZCAiK3Quc3RhdHVzKyIgLCB3aGljaCBpcyBpbnZhbGlkLiIpKSk7Y2FzZSAyOnJldHVybiByLm5leHQ9NCx0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgNDpyZXR1cm4gbj1yLnNlbnQuaXNzdWVyLHIubmV4dD03LHRoaXMucmVzb2x2ZVdlbGxLbm93bkVuZHBvaW50KCk7Y2FzZSA3OnJldHVybiBvPXIuc2VudC5zcGxpdCgiLy53ZWxsLWtub3duIilbMF0sci5hYnJ1cHQoInJldHVybiIsbiYmbj09PW8/Zm8uZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0sdC5kYXRhLmtleXMpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBzcihhLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9Zm8sci50MT1lLHIudDI9dCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6cmV0dXJuIHIudDM9ci5zZW50LmNsaWVudElELHIudDQ9bixyLnQ1PWZvLmRlY29kZUlEVG9rZW4oZSkuc3ViLHIubmV4dD0xMCx0aGlzLl9jb25maWcoKTtjYXNlIDEwOnJldHVybiByLnQ2PXIuc2VudC5jbG9ja1RvbGVyYW5jZSxyLmFicnVwdCgicmV0dXJuIixyLnQwLmlzVmFsaWRJZFRva2VuLmNhbGwoci50MCxyLnQxLHIudDIsci50MyxyLnQ0LHIudDUsci50NikudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfSEVMUEVSLVZJVC1FUzAzIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIix2b2lkIDAsdm9pZCAwLGUpKX0pKSk7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0hFTFBFUi1WSVQtRVMwNCIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsInZhbGlkYXRlSWRUb2tlbiIsdm9pZCAwLHZvaWQgMCxlKSl9KSk6UHJvbWlzZS5yZXNvbHZlKCExKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0hFTFBFUi1WSVQtTlIwNSIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsInZhbGlkYXRlSWRUb2tlbiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIiwiVGhlIHJlcXVlc3Qgc2VudCB0byBnZXQgdGhlIGp3a3MgZnJvbSB0aGUgc2VydmVyIGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRhdGEpKX0pKTpQcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfSEVMUEVSLVZJVC1ORjAxIiwiYXV0aGVudGljYXRpb24taGVscGVyIiwidmFsaWRhdGVJZFRva2VuIiwiSldLUyBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gSldLUyBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBKV0tTIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZXBsYWNlQ3VzdG9tR3JhbnRUZW1wbGF0ZVRhZ3MiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sbyxhO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiBuPSJvcGVuaWQiLHIubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzpyZXR1cm4gbz1yLnNlbnQsci5uZXh0PTYsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSA2OnJldHVybiBhPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIiwoby5zY29wZSYmby5zY29wZS5sZW5ndGg+MCYmKG8uc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxvLnNjb3BlLnB1c2goIm9wZW5pZCIpLG49by5zY29wZS5qb2luKCIgIikpLGUucmVwbGFjZSgie3t0b2tlbn19IixhLmFjY2Vzc190b2tlbikucmVwbGFjZSgie3t1c2VybmFtZX19Iixoby5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8oYS5pZF90b2tlbikudXNlcm5hbWUpLnJlcGxhY2UoInt7c2NvcGV9fSIsbikucmVwbGFjZSgie3tjbGllbnRJRH19IixvLmNsaWVudElEKS5yZXBsYWNlKCJ7e2NsaWVudFNlY3JldH19IixudWxsIT09KHQ9by5jbGllbnRTZWNyZXQpJiZ2b2lkIDAhPT10P3Q6IiIpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclVzZXJTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUubmV4dD00LHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhKCk7Y2FzZSA0OnJldHVybiBlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlU2Vzc2lvbkRhdGEoKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImhhbmRsZVRva2VuUmVzcG9uc2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbj10aGlzO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzKXt0Lm5leHQ9MjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0hFTFBFUi1IVFItTlIwMSIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsImhhbmRsZVRva2VuUmVzcG9uc2UiLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdG9rZW4gcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgdG9rZW4gcmV0dXJuZWQgIitlLnN0YXR1cysiICwgd2hpY2ggaXMgaW52YWxpZC4iKSkpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5fY29uZmlnKCk7Y2FzZSA0OmlmKCF0LnNlbnQudmFsaWRhdGVJRFRva2VuKXt0Lm5leHQ9NjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4oZS5kYXRhLmlkX3Rva2VuKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gc3Iobix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKCF0KXtyLm5leHQ9NTticmVha31yZXR1cm4gci5uZXh0PTMsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhKGUuZGF0YSk7Y2FzZSAzOnJldHVybiBuPXthY2Nlc3NUb2tlbjplLmRhdGEuYWNjZXNzX3Rva2VuLGV4cGlyZXNJbjplLmRhdGEuZXhwaXJlc19pbixpZFRva2VuOmUuZGF0YS5pZF90b2tlbixyZWZyZXNoVG9rZW46ZS5kYXRhLnJlZnJlc2hfdG9rZW4sc2NvcGU6ZS5kYXRhLnNjb3BlLHRva2VuVHlwZTplLmRhdGEudG9rZW5fdHlwZX0sci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKG4pKTtjYXNlIDU6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBmcigiQVVUSF9IRUxQRVItSFRSLUlWMDIiLCJhdXRoZW50aWNhdGlvbi1oZWxwZXIiLCJoYW5kbGVUb2tlblJlc3BvbnNlIiwiVGhlIGlkIHRva2VuIHJldHVybmVkIGlzIG5vdCB2YWxpZC4iLCJUaGUgaWQgdG9rZW4gcmV0dXJuZWQgaGFzIGZhaWxlZCB0aGUgdmFsaWRhdGlvbiBjaGVjay4iKSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0hFTFBFUi1IQVQtRVMwMyIsImF1dGhlbnRpY2F0aW9uLWhlbHBlciIsImhhbmRsZVRva2VuUmVzcG9uc2UiLHZvaWQgMCx2b2lkIDAsZSkpfSkpKTtjYXNlIDY6cmV0dXJuIHI9e2FjY2Vzc1Rva2VuOmUuZGF0YS5hY2Nlc3NfdG9rZW4sZXhwaXJlc0luOmUuZGF0YS5leHBpcmVzX2luLGlkVG9rZW46ZS5kYXRhLmlkX3Rva2VuLHJlZnJlc2hUb2tlbjplLmRhdGEucmVmcmVzaF90b2tlbixzY29wZTplLmRhdGEuc2NvcGUsdG9rZW5UeXBlOmUuZGF0YS50b2tlbl90eXBlfSx0Lm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEoZS5kYXRhKTtjYXNlIDk6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShyKSk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLGdvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXt2YXIgcj10aGlzO18odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlcj1uZXcgdm8odCksdGhpcy5fZGF0YUxheWVyPXQsdGhpcy5fY29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJuIHNyKHIsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHNyKHIsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1yZXR1cm4gdyhlLFt7a2V5OiJnZXRBdXRob3JpemF0aW9uVVJMIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sbyxhLHMsdSxjLGYsaCxsLHAsZDtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyKCJhdXRob3JpemF0aW9uX2VuZHBvaW50Iik7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0Lm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYobj10LnNlbnQsciYmMCE9PXIudHJpbSgpLmxlbmd0aCl7dC5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IGZyKCJBVVRIX0NPUkUtR0FVLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0QXV0aG9yaXphdGlvblVSTCIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgZm91bmQuIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIGZyb20gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OmlmKChvPW5ldyBVUkwocikpLnNlYXJjaFBhcmFtcy5hcHBlbmQoInJlc3BvbnNlX3R5cGUiLCJjb2RlIiksby5zZWFyY2hQYXJhbXMuYXBwZW5kKCJjbGllbnRfaWQiLG4uY2xpZW50SUQpLGE9Im9wZW5pZCIsbi5zY29wZSYmbi5zY29wZS5sZW5ndGg+MCYmKG4uc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxuLnNjb3BlLnB1c2goIm9wZW5pZCIpLGE9bi5zY29wZS5qb2luKCIgIikpLG8uc2VhcmNoUGFyYW1zLmFwcGVuZCgic2NvcGUiLGEpLG8uc2VhcmNoUGFyYW1zLmFwcGVuZCgicmVkaXJlY3RfdXJpIixuLnNpZ25JblJlZGlyZWN0VVJMKSxuLnJlc3BvbnNlTW9kZSYmby5zZWFyY2hQYXJhbXMuYXBwZW5kKCJyZXNwb25zZV9tb2RlIixuLnJlc3BvbnNlTW9kZSksIW4uZW5hYmxlUEtDRSl7dC5uZXh0PTE3O2JyZWFrfXJldHVybiBzPWZvLmdldENvZGVWZXJpZmllcigpLHU9Zm8uZ2V0Q29kZUNoYWxsZW5nZShzKSx0Lm5leHQ9MTUsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoInBrY2VfY29kZV92ZXJpZmllciIscyk7Y2FzZSAxNTpvLnNlYXJjaFBhcmFtcy5hcHBlbmQoImNvZGVfY2hhbGxlbmdlX21ldGhvZCIsIlMyNTYiKSxvLnNlYXJjaFBhcmFtcy5hcHBlbmQoImNvZGVfY2hhbGxlbmdlIix1KTtjYXNlIDE3OmlmKG4ucHJvbXB0JiZvLnNlYXJjaFBhcmFtcy5hcHBlbmQoInByb21wdCIsbi5wcm9tcHQpLGM9ZSlmb3IoZj0wLGg9T2JqZWN0LmVudHJpZXMoYyk7ZjxoLmxlbmd0aDtmKyspbD15KGhbZl0sMikscD1sWzBdLGQ9bFsxXSwiIiE9cCYmIiIhPWQmJm8uc2VhcmNoUGFyYW1zLmFwcGVuZChwLGQudG9TdHJpbmcoKSk7cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLG8udG9TdHJpbmcoKSk7Y2FzZSAyMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sbyxhLHMsdT10aGlzO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQudG9rZW5fZW5kcG9pbnQsci5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG89ci5zZW50LG4mJjAhPT1uLnRyaW0oKS5sZW5ndGgpe3IubmV4dD04O2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfQ09SRS1SQVQxLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEFjY2Vzc1Rva2VuIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpKSk7Y2FzZSA4OmlmKHIudDA9dCwhci50MCl7ci5uZXh0PTEyO2JyZWFrfXJldHVybiByLm5leHQ9MTIsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhUGFyYW1ldGVyKCJzZXNzaW9uX3N0YXRlIix0KTtjYXNlIDEyOmlmKChhPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQoby5jbGllbnRJRCkpLG8uY2xpZW50U2VjcmV0JiZvLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJmEucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChvLmNsaWVudFNlY3JldCkpLHM9ZSxhLnB1c2goImNvZGU9Ii5jb25jYXQocykpLGEucHVzaCgiZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGUiKSxhLnB1c2goInJlZGlyZWN0X3VyaT0iLmNvbmNhdChvLnNpZ25JblJlZGlyZWN0VVJMKSksci50MT1vLmVuYWJsZVBLQ0UsIXIudDEpe3IubmV4dD0yOTticmVha31yZXR1cm4gci50Mj1hLHIudDM9ImNvZGVfdmVyaWZpZXI9IixyLm5leHQ9MjQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoInBrY2VfY29kZV92ZXJpZmllciIpO2Nhc2UgMjQ6cmV0dXJuIHIudDQ9ci5zZW50LHIudDU9ci50My5jb25jYXQuY2FsbChyLnQzLHIudDQpLHIudDIucHVzaC5jYWxsKHIudDIsci50NSksci5uZXh0PTI5LHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJwa2NlX2NvZGVfdmVyaWZpZXIiKTtjYXNlIDI5OnJldHVybiByLmFicnVwdCgicmV0dXJuIix0ci5wb3N0KG4sYS5qb2luKCImIikse2hlYWRlcnM6aG8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpLHdpdGhDcmVkZW50aWFsczpvLnNlbmRDb29raWVzSW5SZXF1ZXN0c30pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiB1Ll9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0NPUkUtUkFUMS1FUzAyIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlcXVlc3RBY2Nlc3NUb2tlbiIsdm9pZCAwLHZvaWQgMCxlKSl9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0NPUkUtUkFUMS1OUjAzIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlcXVlc3RBY2Nlc3NUb2tlbiIsIlJlcXVlc3RpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCIsIlRoZSByZXF1ZXN0IHRvIGdldCB0aGUgYWNjZXNzIHRva2VuIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIixudWxsIT09KHQ9bnVsbD09ZT92b2lkIDA6ZS5jb2RlKSYmdm9pZCAwIT09dD90OiIiLG51bGw9PWU/dm9pZCAwOmUubWVzc2FnZSxudWxsPT09KHI9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuc3RhdHVzLG51bGw9PT0obj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5kYXRhKSl9KSkpO2Nhc2UgMzA6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixvLGE9dGhpcztyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LnRva2VuX2VuZHBvaW50LGUubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTpyZXR1cm4gcj1lLnNlbnQsZS5uZXh0PTgsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSA4OmlmKChuPWUuc2VudCkucmVmcmVzaF90b2tlbil7ZS5uZXh0PTExO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfQ09SRS1SQVQyLU5GMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVmcmVzaEFjY2Vzc1Rva2VuIiwiTm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4iLCJUaGVyZSB3YXMgbm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4gQXNnYXJkZW8gZG9lc24ndCByZXR1cm4gYSByZWZyZXNoIHRva2VuIGlmIHRoZSByZWZyZXNoIHRva2VuIGdyYW50IGlzIG5vdCBlbmFibGVkLiIpKSk7Y2FzZSAxMTppZih0JiYwIT09dC50cmltKCkubGVuZ3RoKXtlLm5leHQ9MTM7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBmcigiQVVUSF9DT1JFLVJBVDItTkYwMiIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZWZyZXNoQWNjZXNzVG9rZW4iLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IGZvdW5kLiIsIk5vIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgd2FzIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKSkpO2Nhc2UgMTM6cmV0dXJuIG89W10sZS5hYnJ1cHQoInJldHVybiIsKG8ucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KHIuY2xpZW50SUQpKSxvLnB1c2goInJlZnJlc2hfdG9rZW49Ii5jb25jYXQobi5yZWZyZXNoX3Rva2VuKSksby5wdXNoKCJncmFudF90eXBlPXJlZnJlc2hfdG9rZW4iKSxyLmNsaWVudFNlY3JldCYmci5jbGllbnRTZWNyZXQudHJpbSgpLmxlbmd0aD4wJiZvLnB1c2goImNsaWVudF9zZWNyZXQ9Ii5jb25jYXQoci5jbGllbnRTZWNyZXQpKSx0ci5wb3N0KHQsby5qb2luKCImIikse2hlYWRlcnM6aG8uZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpLHdpdGhDcmVkZW50aWFsczpyLnNlbmRDb29raWVzSW5SZXF1ZXN0c30pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBhLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0NPUkUtUkFUMi1FUzAzIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlZnJlc2hBY2Nlc3NUb2tlbiIsdm9pZCAwLHZvaWQgMCxlKSl9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0NPUkUtUkFUMi1OUjAzIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlZnJlc2hBY2Nlc3NUb2tlbiIsIlJlZnJlc2ggYWNjZXNzIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsIlRoZSByZXF1ZXN0IHRvIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIixudWxsIT09KHQ9bnVsbD09ZT92b2lkIDA6ZS5jb2RlKSYmdm9pZCAwIT09dD90OiIiLG51bGw9PWU/dm9pZCAwOmUubWVzc2FnZSxudWxsPT09KHI9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuc3RhdHVzLG51bGw9PT0obj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09bj92b2lkIDA6bi5kYXRhKSl9KSkpKTtjYXNlIDE1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixvPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiB0PWUuc2VudC5yZXZvY2F0aW9uX2VuZHBvaW50LGUubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihyPWUuc2VudCx0JiYwIT09dC50cmltKCkubGVuZ3RoKXtlLm5leHQ9ODticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0NPUkUtUkFUMy1ORjAxIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJldm9rZUFjY2Vzc1Rva2VuIiwiTm8gcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIikpKTtjYXNlIDg6cmV0dXJuKG49W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChyLmNsaWVudElEKSksZS50MD1uLGUudDE9InRva2VuPSIsZS5uZXh0PTE0LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMTQ6cmV0dXJuIGUudDI9ZS5zZW50LmFjY2Vzc190b2tlbixlLnQzPWUudDEuY29uY2F0LmNhbGwoZS50MSxlLnQyKSxlLnQwLnB1c2guY2FsbChlLnQwLGUudDMpLG4ucHVzaCgidG9rZW5fdHlwZV9oaW50PWFjY2Vzc190b2tlbiIpLGUuYWJydXB0KCJyZXR1cm4iLHRyLnBvc3QodCxuLmpvaW4oIiYiKSx7aGVhZGVyczpoby5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCksd2l0aENyZWRlbnRpYWxzOnIuc2VuZENvb2tpZXNJblJlcXVlc3RzfSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIDIwMCE9PWUuc3RhdHVzP1Byb21pc2UucmVqZWN0KG5ldyBmcigiQVVUSF9DT1JFLVJBVDMtTlIwMiIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXZva2VBY2Nlc3NUb2tlbiIsIkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciByZXZva2UgYWNjZXNzIHRva2VuIHJlcXVlc3QuIiwiVGhlIHJlcXVlc3Qgc2VudCB0byByZXZva2UgdGhlIGFjY2VzcyB0b2tlbiByZXR1cm5lZCAiK2Uuc3RhdHVzKyIgLCB3aGljaCBpcyBpbnZhbGlkLiIpKTooby5fYXV0aGVudGljYXRpb25IZWxwZXIuY2xlYXJVc2VyU2Vzc2lvbkRhdGEoKSxQcm9taXNlLnJlc29sdmUoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXt2YXIgdCxyLG47cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBocigiQVVUSF9DT1JFLVJBVDMtTlIwMyIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXZva2VBY2Nlc3NUb2tlbiIsIlRoZSByZXF1ZXN0IHRvIHJldm9rZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIsIlRoZSByZXF1ZXN0IHNlbnQgdG8gcmV2b2tlIHRoZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIsbnVsbCE9PSh0PW51bGw9PWU/dm9pZCAwOmUuY29kZSkmJnZvaWQgMCE9PXQ/dDoiIixudWxsPT1lP3ZvaWQgMDplLm1lc3NhZ2UsbnVsbD09PShyPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLnN0YXR1cyxudWxsPT09KG49bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZGF0YSkpfSkpKTtjYXNlIDE5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixvLGEscz10aGlzO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKG49dC5zZW50LChvPWUudG9rZW5FbmRwb2ludCYmMCE9PWUudG9rZW5FbmRwb2ludC50cmltKCkubGVuZ3RoP2UudG9rZW5FbmRwb2ludDpyLnRva2VuX2VuZHBvaW50KSYmMCE9PW8udHJpbSgpLmxlbmd0aCl7dC5uZXh0PTg7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBmcigiQVVUSF9DT1JFLVJDRy1ORjAxIiwiYXV0aGVudGljYXRpb24tY29yZSIsInJlcXVlc3RDdXN0b21HcmFudCIsIlRva2VuIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKSkpO2Nhc2UgODpyZXR1cm4gdC5uZXh0PTEwLFByb21pc2UuYWxsKE9iamVjdC5lbnRyaWVzKGUuZGF0YSkubWFwKChmdW5jdGlvbihlKXt2YXIgdD15KGUsMikscj10WzBdLG49dFsxXTtyZXR1cm4gc3Iocyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXBsYWNlQ3VzdG9tR3JhbnRUZW1wbGF0ZVRhZ3Mobik7Y2FzZSAyOnJldHVybiB0PWUuc2VudCxlLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQociwiPSIpLmNvbmNhdCh0KSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTA6aWYodC50MD10LnNlbnQuam9pbigiJiIpLHQudDE9T2JqZWN0LmFzc2lnbih7fSxoby5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLHQudDI9byx0LnQzPW4uc2VuZENvb2tpZXNJblJlcXVlc3RzLGE9e2RhdGE6dC50MCxoZWFkZXJzOnQudDEsbWV0aG9kOiJQT1NUIix1cmw6dC50Mix3aXRoQ3JlZGVudGlhbHM6dC50M30sdC50ND1lLmF0dGFjaFRva2VuLCF0LnQ0KXt0Lm5leHQ9MjY7YnJlYWt9cmV0dXJuIHQudDU9T2JqZWN0LHQudDY9T2JqZWN0LmFzc2lnbih7fSxhLmhlYWRlcnMpLHQudDc9IkJlYXJlciAiLHQubmV4dD0yMix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoKTtjYXNlIDIyOnQudDg9dC5zZW50LmFjY2Vzc190b2tlbix0LnQ5PXQudDcuY29uY2F0LmNhbGwodC50Nyx0LnQ4KSx0LnQxMD17QXV0aG9yaXphdGlvbjp0LnQ5fSxhLmhlYWRlcnM9dC50NS5hc3NpZ24uY2FsbCh0LnQ1LHQudDYsdC50MTApO2Nhc2UgMjY6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRyKGEpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiAyMDAhPT10LnN0YXR1cz9Qcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfQ09SRS1SQ0ctTlIwMiIsImF1dGhlbnRpY2F0aW9uLWNvcmUiLCJyZXF1ZXN0Q3VzdG9tR3JhbnQiLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdGhlIGN1c3RvbSBncmFudCByZXF1ZXN0LiIsIlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBjdXN0b20gZ3JhbnQgcmV0dXJuZWQgIit0LnN0YXR1cysiICwgd2hpY2ggaXMgaW52YWxpZC4iKSk6ZS5yZXR1cm5zU2Vzc2lvbj9zLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGZyKCJBVVRIX0NPUkUtUkNHLUVTMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEN1c3RvbUdyYW50Iix2b2lkIDAsdm9pZCAwLGUpKX0pKTpQcm9taXNlLnJlc29sdmUodCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IGhyKCJBVVRIX0NPUkUtUkNHLU5SMDQiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwicmVxdWVzdEN1c3RvbUdyYW50IiwiVGhlIGN1c3RvbSBncmFudCByZXF1ZXN0IGZhaWxlZC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgY3VzdG9tIGdyYW50IGZhaWxlZC4iLG51bGwhPT0odD1udWxsPT1lP3ZvaWQgMDplLmNvZGUpJiZ2b2lkIDAhPT10P3Q6IiIsbnVsbD09ZT92b2lkIDA6ZS5tZXNzYWdlLG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMsbnVsbD09PShuPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmRhdGEpKX0pKSk7Y2FzZSAyNzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbjtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOnJldHVybiB0PWUuc2VudCxyPWhvLmdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyhudWxsPT10P3ZvaWQgMDp0LmlkX3Rva2VuKSxuPXthbGxvd2VkU2NvcGVzOnQuc2NvcGUsc2Vzc2lvblN0YXRlOnQuc2Vzc2lvbl9zdGF0ZX0sZS5hYnJ1cHQoInJldHVybiIsKE9iamVjdC5rZXlzKHIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZvaWQgMCE9PXJbZV0mJiIiIT09cltlXSYmbnVsbCE9PXJbZV18fGRlbGV0ZSByW2VdfSkpLG49T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG4pLHIpKSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LmlkX3Rva2VuLGUuYWJydXB0KCJyZXR1cm4iLGZvLmRlY29kZUlEVG9rZW4odCkpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudC5pZF90b2tlbik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYodC50MD0hZSwhdC50MCl7dC5uZXh0PTU7YnJlYWt9cmV0dXJuIHQubmV4dD00LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSA0OnQudDA9dC5zZW50O2Nhc2UgNTppZighdC50MCl7dC5uZXh0PTc7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSghMCkpO2Nhc2UgNzpyZXR1cm4gdC5uZXh0PTksdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZVdlbGxLbm93bkVuZHBvaW50KCk7Y2FzZSA5OnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIix0ci5nZXQocikudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIHNyKG4sdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZigyMDA9PT1lLnN0YXR1cyl7dC5uZXh0PTQ7YnJlYWt9dC50MD1Qcm9taXNlLnJlamVjdChuZXcgZnIoIkFVVEhfQ09SRS1HT1BNLU5SMDEiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLCJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmVxdWVzdC4iLCJUaGUgcmVxdWVzdCBzZW50IHRvIHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IHRvIGdldCB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgIitlLnN0YXR1cysiICwgd2hpY2ggaXMgaW52YWxpZC4iKSksdC5uZXh0PTEzO2JyZWFrO2Nhc2UgNDpyZXR1cm4gdC50MT10aGlzLl9kYXRhTGF5ZXIsdC5uZXh0PTcsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50cyhlLmRhdGEpO2Nhc2UgNzpyZXR1cm4gdC50Mj10LnNlbnQsdC5uZXh0PTEwLHQudDEuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbCh0LnQxLHQudDIpO2Nhc2UgMTA6cmV0dXJuIHQubmV4dD0xMix0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIsITApO2Nhc2UgMTI6dC50MD1Qcm9taXNlLnJlc29sdmUoITApO2Nhc2UgMTM6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQudDApO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oKXtyZXR1cm4gc3Iobix2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLnQwPXRoaXMuX2RhdGFMYXllcixlLm5leHQ9Myx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRmFsbGJhY2tFbmRwb2ludHMoKTtjYXNlIDM6cmV0dXJuIGUudDE9ZS5zZW50LGUubmV4dD02LGUudDAuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbChlLnQwLGUudDEpO2Nhc2UgNjpyZXR1cm4gZS5uZXh0PTgsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDg6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSghMCkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpKTtjYXNlIDExOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDU2VydmljZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gdD1lLnNlbnQsZS50MD10LmF1dGhvcml6YXRpb25fZW5kcG9pbnQsZS50MT10LmNoZWNrX3Nlc3Npb25faWZyYW1lLGUudDI9dC5lbmRfc2Vzc2lvbl9lbmRwb2ludCxlLnQzPXQuaW50cm9zcGVjdGlvbl9lbmRwb2ludCxlLnQ0PXQuaXNzdWVyLGUudDU9dC5qd2tzX3VyaSxlLnQ2PXQucmVnaXN0cmF0aW9uX2VuZHBvaW50LGUudDc9dC5yZXZvY2F0aW9uX2VuZHBvaW50LGUudDg9dC50b2tlbl9lbmRwb2ludCxlLnQ5PXQudXNlcmluZm9fZW5kcG9pbnQsZS5uZXh0PTE1LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVXZWxsS25vd25FbmRwb2ludCgpO2Nhc2UgMTU6cmV0dXJuIGUudDEwPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvbkVuZHBvaW50OmUudDAsY2hlY2tTZXNzaW9uSWZyYW1lOmUudDEsZW5kU2Vzc2lvbkVuZHBvaW50OmUudDIsaW50cm9zcGVjdGlvbkVuZHBvaW50OmUudDMsaXNzdWVyOmUudDQsandrc1VyaTplLnQ1LHJlZ2lzdHJhdGlvbkVuZHBvaW50OmUudDYscmV2b2NhdGlvbkVuZHBvaW50OmUudDcsdG9rZW5FbmRwb2ludDplLnQ4LHVzZXJpbmZvRW5kcG9pbnQ6ZS50OSx3ZWxsS25vd25FbmRwb2ludDplLnQxMH0pO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldFNpZ25PdXRVUkwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxyO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIG8sYSxzLHU7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOmlmKG4udDE9ZT1uLnNlbnQsbi50MD1udWxsPT09bi50MSxuLnQwKXtuLm5leHQ9NjticmVha31uLnQwPXZvaWQgMD09PWU7Y2FzZSA2OmlmKCFuLnQwKXtuLm5leHQ9MTA7YnJlYWt9bi50Mj12b2lkIDAsbi5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6bi50Mj1lLmVuZF9zZXNzaW9uX2VuZHBvaW50O2Nhc2UgMTE6cmV0dXJuIG89bi50MixuLm5leHQ9MTQsdGhpcy5fY29uZmlnKCk7Y2FzZSAxNDppZihhPW4uc2VudCxvJiYwIT09by50cmltKCkubGVuZ3RoKXtuLm5leHQ9MTc7YnJlYWt9dGhyb3cgbmV3IGZyKCJBVVRIX0NPUkUtR1NPVS1ORjAxIiwiYXV0aGVudGljYXRpb24tY29yZSIsImdldFNpZ25PdXRVUkwiLCJTaWduLW91dCBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gc2lnbi1vdXQgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgc2lnbi1vdXQgZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxNzpyZXR1cm4gbi5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMTk6aWYobi50ND10PW4uc2VudCxuLnQzPW51bGw9PT1uLnQ0LG4udDMpe24ubmV4dD0yMzticmVha31uLnQzPXZvaWQgMD09PXQ7Y2FzZSAyMzppZighbi50Myl7bi5uZXh0PTI3O2JyZWFrfW4udDU9dm9pZCAwLG4ubmV4dD0yODticmVhaztjYXNlIDI3Om4udDU9dC5pZF90b2tlbjtjYXNlIDI4OmlmKChzPW4udDUpJiYwIT09cy50cmltKCkubGVuZ3RoKXtuLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IGZyKCJBVVRIX0NPUkUtR1NPVS1ORjAyIiwiYXV0aGVudGljYXRpb24tY29yZSIsImdldFNpZ25PdXRVUkwiLCJJRCB0b2tlbiBub3QgZm91bmQuIiwiTm8gSUQgdG9rZW4gY291bGQgYmUgZm91bmQuIEVpdGhlciB0aGUgc2Vzc2lvbiBpbmZvcm1hdGlvbiBpcyBsb3N0IG9yIHlvdSBoYXZlIG5vdCBzaWduZWQgaW4uIik7Y2FzZSAzMTppZigodT1udWxsIT09KHI9bnVsbD09YT92b2lkIDA6YS5zaWduT3V0UmVkaXJlY3RVUkwpJiZ2b2lkIDAhPT1yP3I6bnVsbD09YT92b2lkIDA6YS5zaWduSW5SZWRpcmVjdFVSTCkmJjAhPT11LnRyaW0oKS5sZW5ndGgpe24ubmV4dD0zNDticmVha310aHJvdyBuZXcgZnIoIkFVVEhfQ09SRS1HU09VLU5GMDMiLCJhdXRoZW50aWNhdGlvbi1jb3JlIiwiZ2V0U2lnbk91dFVSTCIsIk5vIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBmb3VuZC4iLCJUaGUgc2lnbi1vdXQgcmVkaXJlY3QgVVJMIGNhbm5vdCBiZSBmb3VuZCBvciB0aGUgVVJMIHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiBObyBzaWduLWluIHJlZGlyZWN0IFVSTCBoYXMgYmVlbiBmb3VuZCBlaXRoZXIuICIpO2Nhc2UgMzQ6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChvLCI/aWRfdG9rZW5faGludD0iKS5jb25jYXQocywiJnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaT0iKS5jb25jYXQodSwiJnN0YXRlPXNpZ25fb3V0X3N1Y2Nlc3MiKSk7Y2FzZSAzNTpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLmdldFNpZ25PdXRVUkwoKTtjYXNlIDI6cmV0dXJuIHQ9ZS5zZW50LGUuYWJydXB0KCJyZXR1cm4iLCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YSgpLHQpKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMjppZih0LnQxPWU9dC5zZW50LHQudDA9bnVsbD09PXQudDEsdC50MCl7dC5uZXh0PTY7YnJlYWt9dC50MD12b2lkIDA9PT1lO2Nhc2UgNjppZighdC50MCl7dC5uZXh0PTEwO2JyZWFrfXQudDI9dm9pZCAwLHQubmV4dD0xMTticmVhaztjYXNlIDEwOnQudDI9ZS5hY2Nlc3NfdG9rZW47Y2FzZSAxMTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC50Mik7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUudDA9Qm9vbGVhbixlLm5leHQ9Myx0aGlzLmdldEFjY2Vzc1Rva2VuKCk7Y2FzZSAzOnJldHVybiBlLnQxPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIiwoMCxlLnQwKShlLnQxKSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigicGtjZV9jb2RlX3ZlcmlmaWVyIik7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToic2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJwa2NlX2NvZGVfdmVyaWZpZXIiLGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoZSk7Y2FzZSAyOmlmKCFlLm92ZXJyaWRlV2VsbEVuZHBvaW50Q29uZmlnKXt0Lm5leHQ9MTM7YnJlYWt9aWYodC50MD1udWxsPT1lP3ZvaWQgMDplLmVuZHBvaW50cywhdC50MCl7dC5uZXh0PTExO2JyZWFrfXJldHVybiB0LnQxPXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9OCx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRW5kcG9pbnRzKHt9KTtjYXNlIDg6cmV0dXJuIHQudDI9dC5zZW50LHQubmV4dD0xMSx0LnQxLnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50MSx0LnQyKTtjYXNlIDExOnQubmV4dD0xNzticmVhaztjYXNlIDEzOmlmKHQudDM9bnVsbD09ZT92b2lkIDA6ZS5lbmRwb2ludHMsIXQudDMpe3QubmV4dD0xNzticmVha31yZXR1cm4gdC5uZXh0PTE3LHRoaXMuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITApO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSx5bz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXtfKHRoaXMsZSksdGhpcy5faWQ9dCx0aGlzLl9zdG9yZT1yfXJldHVybiB3KGUsW3trZXk6InNldERhdGFJbkJ1bGsiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgbyxhLHMsdTtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYobi50MT1yPW4uc2VudCxuLnQwPW51bGwhPT1uLnQxLCFuLnQwKXtuLm5leHQ9NjticmVha31uLnQwPXZvaWQgMCE9PXI7Y2FzZSA2OmlmKCFuLnQwKXtuLm5leHQ9MTA7YnJlYWt9bi50Mj1yLG4ubmV4dD0xMTticmVhaztjYXNlIDEwOm4udDI9bnVsbDtjYXNlIDExOnJldHVybiBvPW4udDIsYT1vJiZKU09OLnBhcnNlKG8pLHM9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGEpLHQpLHU9SlNPTi5zdHJpbmdpZnkocyksbi5uZXh0PTE3LHRoaXMuX3N0b3JlLnNldERhdGEoZSx1KTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJzZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBvKCl7dmFyIGEscyx1LGM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cmV0dXJuIG8ubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKG8udDE9bj1vLnNlbnQsby50MD1udWxsIT09by50MSwhby50MCl7by5uZXh0PTY7YnJlYWt9by50MD12b2lkIDAhPT1uO2Nhc2UgNjppZighby50MCl7by5uZXh0PTEwO2JyZWFrfW8udDI9bixvLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpvLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gYT1vLnQyLHM9YSYmSlNPTi5wYXJzZShhKSx1PU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxzKSxiKHt9LHQscikpLGM9SlNPTi5zdHJpbmdpZnkodSksby5uZXh0PTE3LHRoaXMuX3N0b3JlLnNldERhdGEoZSxjKTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBvLGEscyx1O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihuLnQxPXI9bi5zZW50LG4udDA9bnVsbCE9PW4udDEsIW4udDApe24ubmV4dD02O2JyZWFrfW4udDA9dm9pZCAwIT09cjtjYXNlIDY6aWYoIW4udDApe24ubmV4dD0xMDticmVha31uLnQyPXIsbi5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6bi50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIG89bi50MixhPW8mJkpTT04ucGFyc2UobyksZGVsZXRlKHM9T2JqZWN0LmFzc2lnbih7fSxhKSlbdF0sdT1KU09OLnN0cmluZ2lmeShzKSxuLm5leHQ9MTgsdGhpcy5fc3RvcmUuc2V0RGF0YShlLHUpO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6Il9yZXNvbHZlS2V5Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4iIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCl9fSx7a2V5OiJzZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleSh1ci5Db25maWdEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KHVyLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldFRlbXBvcmFyeURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkodXIuVGVtcG9yYXJ5RGF0YSksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJzZXRTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleSh1ci5TZXNzaW9uRGF0YSksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuQ29uZmlnRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleSh1ci5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUpTT04sdC5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KHVyLlRlbXBvcmFyeURhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuU2Vzc2lvbkRhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KHVyLkNvbmZpZ0RhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleSh1ci5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuVGVtcG9yYXJ5RGF0YSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KHVyLlNlc3Npb25EYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuQ29uZmlnRGF0YSkpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsciYmSlNPTi5wYXJzZShyKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KHVyLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiZKU09OLnBhcnNlKHIpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleSh1ci5UZW1wb3JhcnlEYXRhKSk7Y2FzZSAyOnJldHVybiByPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixyJiZKU09OLnBhcnNlKHIpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkodXIuU2Vzc2lvbkRhdGEpKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHImJkpTT04ucGFyc2UocilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0Q29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkodXIuQ29uZmlnRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleSh1ci5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KHVyLlRlbXBvcmFyeURhdGEpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkodXIuU2Vzc2lvbkRhdGEpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkodXIuQ29uZmlnRGF0YSksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KHVyLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleSh1ci5UZW1wb3JhcnlEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkodXIuU2Vzc2lvbkRhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLG1vPXtjbG9ja1RvbGVyYW5jZTozMDAsZW5hYmxlUEtDRTohMCxyZXNwb25zZU1vZGU6UXQucXVlcnksc2NvcGU6WyJvcGVuaWQiXSxzZW5kQ29va2llc0luUmVxdWVzdHM6ITAsdmFsaWRhdGVJRFRva2VuOiEwfSx3bz1mdW5jdGlvbigpewovKioKCSAgICAgICAqIFRoaXMgaXMgdGhlIGNvbnN0cnVjdG9yIG1ldGhvZCB0aGF0IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIC4KCSAgICAgICAqCgkgICAgICAgKiBAcGFyYW0ge1N0b3JlfSBzdG9yZSAtIFRoZSBzdG9yZSBvYmplY3QuCgkgICAgICAgKgoJICAgICAgICogQGV4YW1wbGUKCSAgICAgICAqIGBgYAoJICAgICAgICogY29uc3QgX3N0b3JlOiBTdG9yZSA9IG5ldyBEYXRhU3RvcmUoKTsKCSAgICAgICAqIGNvbnN0IGF1dGggPSBuZXcgQXNnYXJkZW9BdXRoQ2xpZW50PEN1c3RvbUNsaWVudENvbmZpZz4oX3N0b3JlKTsKCSAgICAgICAqIGBgYAoJICAgICAgICoKCSAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNjb25zdHJ1Y3RvcgoJICAgICAgICogQHByZXNlcnZlCgkgICAgICAgKi8KZnVuY3Rpb24gZSh0KXtfKHRoaXMsZSksZS5faW5zdGFuY2VJRD9lLl9pbnN0YW5jZUlEKz0xOmUuX2luc3RhbmNlSUQ9MCx0aGlzLl9kYXRhTGF5ZXI9bmV3IHlvKCJpbnN0YW5jZV8iLmNvbmNhdChlLl9pbnN0YW5jZUlEKSx0KSx0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmU9bmV3IGdvKHRoaXMuX2RhdGFMYXllcil9Ci8qKgoJICAgICAgICoKCSAgICAgICAqIFRoaXMgbWV0aG9kIGluaXRpYWxpemVzIHRoZSBTREsgd2l0aCB0aGUgY29uZmlnIGRhdGEuCgkgICAgICAgKgoJICAgICAgICogQHBhcmFtIHtBdXRoQ2xpZW50Q29uZmlnPFQ+fSBjb25maWcgLSBUaGUgY29uZmlnIG9iamVjdCB0byBpbml0aWFsaXplIHdpdGguCgkgICAgICAgKgoJICAgICAgICogQGV4YW1wbGUKCSAgICAgICAqIGNvbnN0IGNvbmZpZyA9IHsKCSAgICAgICAqICAgICBzaWduSW5SZWRpcmVjdFVSTDogImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC9zaWduLWluIiwKCSAgICAgICAqICAgICBjbGllbnRJRDogImNsaWVudCBJRCIsCgkgICAgICAgKiAgICAgc2VydmVyT3JpZ2luOiAiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyIKCSAgICAgICAqIH0KCSAgICAgICAqCgkgICAgICAgKiBhd2FpdCBhdXRoLmluaXRpYWxpemUoY29uZmlnKTsKCSAgICAgICAqCgkgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjaW5pdGlhbGl6ZQoJICAgICAgICoKCSAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICovcmV0dXJuIHcoZSxbe2tleToiaW5pdGlhbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBvKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cmV0dXJuIG8ubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRDb25maWdEYXRhKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG1vKSxlKSx7c2NvcGU6W10uY29uY2F0KGwobnVsbCE9PSh0PW1vLnNjb3BlKSYmdm9pZCAwIT09dD90OltdKSxsKG51bGwhPT0obj1udWxsPT09KHI9ZS5zY29wZSl8fHZvaWQgMD09PXI/dm9pZCAwOnIuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4hKG51bGw9PT0odD1udWxsPT1tbz92b2lkIDA6bW8uc2NvcGUpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmluY2x1ZGVzKGUpKX0pKSkmJnZvaWQgMCE9PW4/bjpbXSkpfSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIG8uc3RvcCgpfX0pLG8sdGhpcyl9KSkpfQovKioKCSAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYERhdGFMYXllcmAgb2JqZWN0IHRoYXQgYWxsb3dzIHlvdSB0byBhY2Nlc3MgYXV0aGVudGljYXRpb24gZGF0YS4KCSAgICAgICAgICoKCSAgICAgICAgICogQHJldHVybiB7RGF0YUxheWVyfSAtIFRoZSBgRGF0YUxheWVyYCBvYmplY3QuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBjb25zdCBkYXRhID0gYXV0aC5nZXREYXRhTGF5ZXIoKTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXREYXRhTGF5ZXIKCSAgICAgICAgICoKCSAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAoJICAgICAgICAgKgoJICAgICAgICAgKiBAcHJlc2VydmUKCSAgICAgICAgICovfSx7a2V5OiJnZXREYXRhTGF5ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGFMYXllcn0KLyoqCgkgICAgICAgICAqIFRoaXMgaXMgYW4gYXN5bmMgbWV0aG9kIHRoYXQgcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhdXRob3JpemF0aW9uIFVSTC4KCSAgICAgICAgICoKCSAgICAgICAgICogQHBhcmFtIHtHZXRBdXRoVVJMQ29uZmlnfSBjb25maWcgLSAoT3B0aW9uYWwpIEEgY29uZmlnIG9iamVjdCB0byBmb3JjZSBpbml0aWFsaXphdGlvbiBhbmQgcGFzcwoJICAgICAgICAgKiBjdXN0b20gcGF0aCBwYXJhbWV0ZXJzIHN1Y2ggYXMgdGhlIGZpZHAgcGFyYW1ldGVyLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IC0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgYXV0aG9yaXphdGlvbiBVUkwuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBhdXRoLmdldEF1dGhvcml6YXRpb25VUkwoKS50aGVuKCh1cmwpPT57CgkgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyh1cmwpOwoJICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CgkgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKCSAgICAgICAgICogfSk7CgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKgoJICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0QXV0aG9yaXphdGlvblVSTAoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbj10aGlzO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBudWxsPT0ocj1PYmplY3QuYXNzaWduKHt9LGUpKXx8ZGVsZXRlIHIuZm9yY2VJbml0LHQubmV4dD00LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSA0OmlmKCF0LnNlbnQpe3QubmV4dD04O2JyZWFrfXQudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEF1dGhvcml6YXRpb25VUkwociksdC5uZXh0PTk7YnJlYWs7Y2FzZSA4OnQudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKG51bGw9PWU/dm9pZCAwOmUuZm9yY2VJbml0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBuLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChyKX0pKTtjYXNlIDk6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQudDApO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX0KLyoqCgkgICAgICAgICAqIFRoaXMgaXMgYW4gYXN5bmMgbWV0aG9kIHRoYXQgc2VuZHMgYSByZXF1ZXN0IHRvIG9idGFpbiB0aGUgYWNjZXNzIHRva2VuIGFuZCByZXR1cm5zIGEgUHJvbWlzZQoJICAgICAgICAgKiB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHRva2VuIGFuZCBvdGhlciByZWxldmFudCBkYXRhLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYXV0aG9yaXphdGlvbkNvZGUgLSBUaGUgYXV0aG9yaXphdGlvbiBjb2RlLgoJICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2Vzc2lvblN0YXRlIC0gVGhlIHNlc3Npb24gc3RhdGUuCgkgICAgICAgICAqCgkgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG9rZW4gcmVzcG9uc2UuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBhdXRoLnJlcXVlc3RBY2Nlc3NUb2tlbihhdXRoQ29kZSwgc2Vzc2lvblN0YXRlKS50aGVuKCh0b2tlbik9PnsKCSAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHRva2VuKTsKCSAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewoJICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CgkgICAgICAgICAqIH0pOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3JlcXVlc3RBY2Nlc3NUb2tlbgoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6InJlcXVlc3RBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuPXRoaXM7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSAyOmlmKCFyLnNlbnQpe3IubmV4dD02O2JyZWFrfXIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQpLHIubmV4dD03O2JyZWFrO2Nhc2UgNjpyLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSghMSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbi5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQpfSkpO2Nhc2UgNzpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MCk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9Ci8qKgoJICAgICAgICAgKiBUaGlzIG1ldGhvZCBjbGVhcnMgYWxsIGF1dGhlbnRpY2F0aW9uIGRhdGEgYW5kIHJldHVybnMgdGhlIHNpZ24tb3V0IFVSTC4KCSAgICAgICAgICoKCSAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNpZ24tb3V0IFVSTC4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGNvbnN0IHNpZ25PdXRVcmwgPSBhd2FpdCBhdXRoLnNpZ25PdXQoKTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNzaWduT3V0CgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuc2lnbk91dCgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHNpZ24tb3V0IFVSTC4KCSAgICAgICAgICoKCSAgICAgICAgICogKipUaGlzIGRvZXNuJ3QgY2xlYXIgdGhlIGF1dGhlbnRpY2F0aW9uIGRhdGEuKioKCSAgICAgICAgICoKCSAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIHNpZ24tb3V0IFVSTC4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGNvbnN0IHNpZ25PdXRVcmwgPSBhd2FpdCBhdXRoLmdldFNpZ25PdXRVUkwoKTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRTaWduT3V0VVJMCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0U2lnbk91dFVSTCgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgT0lEQyBzZXJ2aWNlIGVuZHBvaW50cyB0aGF0IGFyZSBmZXRjaGVkIGZyb20gdGhlIGAud2VsbC1rbm93bmAgZW5kcG9pbnQuCgkgICAgICAgICAqCgkgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8T0lEQ0VuZHBvaW50cz59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgT0lEQyBzZXJ2aWNlIGVuZHBvaW50cy4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGNvbnN0IGVuZHBvaW50cyA9IGF3YWl0IGF1dGguZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRPSURDU2VydmljZUVuZHBvaW50cwoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIGRlY29kZXMgdGhlIHBheWxvYWQgb2YgdGhlIElEIHRva2VuIGFuZCByZXR1cm5zIGl0LgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPERlY29kZWRJRFRva2VuUGF5bG9hZD59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgZGVjb2RlZCBJRCB0b2tlbiBwYXlsb2FkLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICogY29uc3QgZGVjb2RlZElkVG9rZW4gPSBhd2FpdCBhdXRoLmdldERlY29kZWRJRFRva2VuKCk7CgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKgoJICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjZ2V0RGVjb2RlZElEVG9rZW4KCSAgICAgICAgICoKCSAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAoJICAgICAgICAgKgoJICAgICAgICAgKiBAcHJlc2VydmUKCSAgICAgICAgICovfSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0RGVjb2RlZElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9Ci8qKgoJICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBJRCB0b2tlbi4KCSAgICAgICAgICoKCSAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIElEIHRva2VuLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICogY29uc3QgaWRUb2tlbiA9IGF3YWl0IGF1dGguZ2V0SURUb2tlbigpOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI2dldElEVG9rZW4KCSAgICAgICAgICoKCSAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAoJICAgICAgICAgKgoJICAgICAgICAgKiBAcHJlc2VydmUKCSAgICAgICAgICovfSx7a2V5OiJnZXRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfQovKioKCSAgICAgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYmFzaWMgdXNlciBpbmZvcm1hdGlvbiBvYnRhaW5lZCBmcm9tIHRoZSBJRCB0b2tlbi4KCSAgICAgICAgICoKCSAgICAgICAgICogQHJldHVybiB7UHJvbWlzZTxCYXNpY1VzZXJJbmZvPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBiYXNpYyB1c2VyIGluZm9ybWF0aW9uLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICogY29uc3QgdXNlckluZm8gPSBhd2FpdCBhdXRoLmdldEJhc2ljVXNlckluZm8oKTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRCYXNpY1VzZXJJbmZvCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldm9rZXMgdGhlIGFjY2VzcyB0b2tlbi4KCSAgICAgICAgICoKCSAgICAgICAgICogKipUaGlzIG1ldGhvZCBhbHNvIGNsZWFycyB0aGUgYXV0aGVudGljYXRpb24gZGF0YS4qKgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPEF4aW9zUmVzcG9uc2U+fSAtIEEgUHJvbWlzZSB0aGF0IHJldHVybnMgdGhlIHJlc3BvbnNlIG9mIHRoZSByZXZva2UtYWNjZXNzLXRva2VuIHJlcXVlc3QuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBhdXRoLnJldm9rZUFjY2Vzc1Rva2VuKCkudGhlbigocmVzcG9uc2UpPT57CgkgICAgICAgICAqICAvLyBjb25zb2xlLmxvZyhyZXNwb25zZSk7CgkgICAgICAgICAqIH0pLmNhdGNoKChlcnJvcik9PnsKCSAgICAgICAgICogIC8vIGNvbnNvbGUuZXJyb3IoZXJyb3IpOwoJICAgICAgICAgKiB9KTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNyZXZva2VBY2Nlc3NUb2tlbgoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6InJldm9rZUFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmV2b2tlQWNjZXNzVG9rZW4oKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHJlZnJlc2hlcyB0aGUgYWNjZXNzIHRva2VuIGFuZCByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG5ldyBhY2Nlc3MKCSAgICAgICAgICogdG9rZW4gYW5kIG90aGVyIHJlbGV2YW50IGRhdGEuCgkgICAgICAgICAqCgkgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8VG9rZW5SZXNwb25zZT59IC0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgdG9rZW4gcmVzcG9uc2UuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBhdXRoLnJlZnJlc2hBY2Nlc3NUb2tlbigpLnRoZW4oKHJlc3BvbnNlKT0+ewoJICAgICAgICAgKiAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UpOwoJICAgICAgICAgKiB9KS5jYXRjaCgoZXJyb3IpPT57CgkgICAgICAgICAqICAvLyBjb25zb2xlLmVycm9yKGVycm9yKTsKCSAgICAgICAgICogfSk7CgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKgoJICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjcmVmcmVzaEFjY2Vzc1Rva2VuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBtZW1iZXJvZiBBc2dhcmRlb0F1dGhDbGllbnQKCSAgICAgICAgICoKCSAgICAgICAgICogQHByZXNlcnZlCgkgICAgICAgICAqL30se2tleToicmVmcmVzaEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVmcmVzaEFjY2Vzc1Rva2VuKCl9Ci8qKgoJICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBhY2Nlc3MgdG9rZW4uCgkgICAgICAgICAqCgkgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBhY2Nlc3MgdG9rZW4uCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGF1dGguZ2V0QWNjZXNzVG9rZW4oKTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRBY2Nlc3NUb2tlbgoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBY2Nlc3NUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHNlbmRzIGEgY3VzdG9tLWdyYW50IHJlcXVlc3QgYW5kIHJldHVybnMgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2l0aCB0aGUgcmVzcG9uc2UKCSAgICAgICAgICogZGVwZW5kaW5nIG9uIHRoZSBjb25maWcgcGFzc2VkLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcGFyYW0ge0N1c3RvbUdyYW50Q29uZmlnfSBjb25maWcgLSBBIGNvbmZpZyBvYmplY3QgY29udGFpbmluZyB0aGUgY3VzdG9tIGdyYW50IGNvbmZpZ3VyYXRpb25zLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPFRva2VuUmVzcG9uc2UgfCBBeGlvc1Jlc3BvbnNlPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSByZXNwb25zZSBkZXBlbmRpbmcKCSAgICAgICAgICogb24geW91ciBjb25maWd1cmF0aW9ucy4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGNvbnN0IGNvbmZpZyA9IHsKCSAgICAgICAgICogICBhdHRhY2hUb2tlbjogZmFsc2UsCgkgICAgICAgICAqICAgZGF0YTogewoJICAgICAgICAgKiAgICAgICBjbGllbnRfaWQ6ICJ7e2NsaWVudElEfX0iLAoJICAgICAgICAgKiAgICAgICBncmFudF90eXBlOiAiYWNjb3VudF9zd2l0Y2giLAoJICAgICAgICAgKiAgICAgICBzY29wZTogInt7c2NvcGV9fSIsCgkgICAgICAgICAqICAgICAgIHRva2VuOiAie3t0b2tlbn19IiwKCSAgICAgICAgICogICB9LAoJICAgICAgICAgKiAgIGlkOiAiYWNjb3VudC1zd2l0Y2giLAoJICAgICAgICAgKiAgIHJldHVyblJlc3BvbnNlOiB0cnVlLAoJICAgICAgICAgKiAgIHJldHVybnNTZXNzaW9uOiB0cnVlLAoJICAgICAgICAgKiAgIHNpZ25JblJlcXVpcmVkOiB0cnVlCgkgICAgICAgICAqIH0KCSAgICAgICAgICoKCSAgICAgICAgICogYXV0aC5yZXF1ZXN0Q3VzdG9tR3JhbnQoY29uZmlnKS50aGVuKChyZXNwb25zZSk9PnsKCSAgICAgICAgICogIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTsKCSAgICAgICAgICogfSkuY2F0Y2goKGVycm9yKT0+ewoJICAgICAgICAgKiAgLy8gY29uc29sZS5lcnJvcihlcnJvcik7CgkgICAgICAgICAqIH0pOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICoKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3JlcXVlc3RDdXN0b21HcmFudAoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6InJlcXVlc3RDdXN0b21HcmFudCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSl9Ci8qKgoJICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQgb3Igbm90LgoJICAgICAgICAgKgoJICAgICAgICAgKiBAcmV0dXJuIHtQcm9taXNlPGJvb2xlYW4+fSAtIEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggYHRydWVgIGlmIHRoZSB1c2VyIGlzIGF1dGhlbnRpY2F0ZWQsIGBmYWxzZWAgb3RoZXJ3aXNlLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICogYXdhaXQgYXV0aC5pc0F1dGhlbnRpY2F0ZWQoKTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNpc0F1dGhlbnRpY2F0ZWQKCSAgICAgICAgICoKCSAgICAgICAgICogQG1lbWJlcm9mIEFzZ2FyZGVvQXV0aENsaWVudAoJICAgICAgICAgKgoJICAgICAgICAgKiBAcHJlc2VydmUKCSAgICAgICAgICovfSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmlzQXV0aGVudGljYXRlZCgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIFBLQ0UgY29kZSBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBVUkwuCgkgICAgICAgICAqCgkgICAgICAgICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gLSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB3aXRoIHRoZSBQS0NFIGNvZGUuCgkgICAgICAgICAqCgkgICAgICAgICAqIEBleGFtcGxlCgkgICAgICAgICAqIGBgYAoJICAgICAgICAgKiBjb25zdCBwa2NlID0gYXdhaXQgZ2V0UEtDRUNvZGUoKTsKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNnZXRQS0NFQ29kZQoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzcih0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRQS0NFQ29kZSgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0KLyoqCgkgICAgICAgICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIFBLQ0UgY29kZSB0byB0aGUgZGF0YSBzdG9yZS4KCSAgICAgICAgICoKCSAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBrY2UgLSBUaGUgUEtDRSBjb2RlLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAZXhhbXBsZQoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICogYXdhaXQgYXV0aC5zZXRQS0NFQ29kZSgicGtjZV9jb2RlIikKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqCgkgICAgICAgICAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2dhcmRlby9hc2dhcmRlby1hdXRoLWpzLXNkay90cmVlL21hc3RlciNzZXRQS0NFQ29kZQoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gc3IodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuc2V0UEtDRUNvZGUoZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9Ci8qKgoJICAgICAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGlmIHRoZSBzaWduLW91dCBpcyBzdWNjZXNzZnVsIG9yIG5vdC4KCSAgICAgICAgICoKCSAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNpZ25PdXRSZWRpcmVjdFVybCAtIFRoZSBVUkwgdG8gd2hpY2ggdGhlIHVzZXIgaGFzIGJlZW4gcmVkaXJlY3RlZCB0byBhZnRlciBzaWduaW5nLW91dC4KCSAgICAgICAgICoKCSAgICAgICAgICogKipUaGUgc2VydmVyIGFwcGVuZHMgcGF0aCBwYXJhbWV0ZXJzIHRvIHRoZSBgc2lnbk91dFJlZGlyZWN0VVJMYCBhbmQgdGhlc2UgcGF0aCBwYXJhbWV0ZXJzCgkgICAgICAgICAqICBhcmUgcmVxdWlyZWQgZm9yIHRoaXMgbWV0aG9kIHRvIGZ1bmN0aW9uLioqCgkgICAgICAgICAqCgkgICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IC0gYHRydWVgIGlmIHN1Y2Nlc3NmdWwsIGBmYWxzZWAgb3RoZXJ3aXNlLgoJICAgICAgICAgKgoJICAgICAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXNnYXJkZW8vYXNnYXJkZW8tYXV0aC1qcy1zZGsvdHJlZS9tYXN0ZXIjaXNTaWduT3V0U3VjY2Vzc2Z1bAoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi99LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6Ci8qKgoJICAgICAgICAgKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgd2FzIHBhc3NlZCBpbnRvIHRoZSBjb25zdHJ1Y3RvciB3aGVuIGluc3RhbnRpYXRpbmcgdGhpcyBjbGFzcy4KCSAgICAgICAgICoKCSAgICAgICAgICogQHBhcmFtIHtQYXJ0aWFsPEF1dGhDbGllbnRDb25maWc8VD4+fSBjb25maWcgLSBBIGNvbmZpZyBvYmplY3QgdG8gdXBkYXRlIHRoZSBTREsgY29uZmlndXJhdGlvbnMgd2l0aC4KCSAgICAgICAgICoKCSAgICAgICAgICogQGV4YW1wbGUKCSAgICAgICAgICogYGBgCgkgICAgICAgICAqIGNvbnN0IGNvbmZpZyA9IHsKCSAgICAgICAgICogICAgIHNpZ25JblJlZGlyZWN0VVJMOiAiaHR0cDovL2xvY2FsaG9zdDozMDAwL3NpZ24taW4iLAoJICAgICAgICAgKiAgICAgY2xpZW50SUQ6ICJjbGllbnQgSUQiLAoJICAgICAgICAgKiAgICAgc2VydmVyT3JpZ2luOiAiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyIKCSAgICAgICAgICogfQoJICAgICAgICAgKgoJICAgICAgICAgKiBhd2FpdCBhdXRoLnVwZGF0ZUNvbmZpZyhjb25maWcpOwoJICAgICAgICAgKiBgYGAKCSAgICAgICAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2FzZ2FyZGVvL2FzZ2FyZGVvLWF1dGgtanMtc2RrL3RyZWUvbWFzdGVyI3VwZGF0ZUNvbmZpZwoJICAgICAgICAgKgoJICAgICAgICAgKiBAbWVtYmVyb2YgQXNnYXJkZW9BdXRoQ2xpZW50CgkgICAgICAgICAqCgkgICAgICAgICAqIEBwcmVzZXJ2ZQoJICAgICAgICAgKi8KZnVuY3Rpb24oZSl7cmV0dXJuIHNyKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSxbe2tleToiaXNTaWduT3V0U3VjY2Vzc2Z1bCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVSTChlKSxyPXQuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSxuPUJvb2xlYW4odC5zZWFyY2hQYXJhbXMuZ2V0KCJlcnJvciIpKTtyZXR1cm4hIXImJiJzaWduX291dF9zdWNjZXNzIj09PXImJiFufX1dKSxlfSgpLGJvPSJpbml0IjshZnVuY3Rpb24oZSl7ZS5Mb2NhbFN0b3JhZ2U9ImxvY2FsU3RvcmFnZSIsZS5TZXNzaW9uU3RvcmFnZT0ic2Vzc2lvblN0b3JhZ2UiLGUuV2ViV29ya2VyPSJ3ZWJXb3JrZXIiLGUuQnJvd3Nlck1lbW9yeT0iYnJvd3Nlck1lbW9yeSJ9KGxvfHwobG89e30pKSxmdW5jdGlvbihlKXtlLlNpZ25Jbj0ic2lnbi1pbiIsZS5TaWduT3V0PSJzaWduLW91dCIsZS5Jbml0aWFsaXplPSJpbml0aWFsaXplIixlLkh0dHBSZXF1ZXN0U3RhcnQ9Imh0dHAtcmVxdWVzdC1zdGFydCIsZS5IdHRwUmVxdWVzdEZpbmlzaD0iaHR0cC1yZXF1ZXN0LWZpbmlzaCIsZS5IdHRwUmVxdWVzdEVycm9yPSJodHRwLXJlcXVlc3QtZXJyb3IiLGUuSHR0cFJlcXVlc3RTdWNjZXNzPSJodHRwLXJlcXVlc3Qtc3VjY2VzcyIsZS5SZXZva2VBY2Nlc3NUb2tlbj0icmV2b2tlLWFjY2Vzcy10b2tlbiIsZS5DdXN0b21HcmFudD0iY3VzdG9tLWdyYW50In0ocG98fChwbz17fSkpO3ZhciBrbz0iY3VzdG9tX2dyYW50X2NvbmZpZyI7ZnVuY3Rpb24geG8oZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLG49TyhlKTtpZih0KXt2YXIgbz1PKHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsbyl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBQKHRoaXMscil9fXZhciBfbyxTbz1mdW5jdGlvbihlKXtUKHIsZSk7dmFyIHQ9eG8ocik7ZnVuY3Rpb24gcihlLG4sbyxpLGEscyl7dmFyIHU7cmV0dXJuIF8odGhpcyxyKSwodT10LmNhbGwodGhpcyxudWxsIT1pP2k6bnVsbD09cz92b2lkIDA6cy5tZXNzYWdlKSkubmFtZT11LmNvbnN0cnVjdG9yLm5hbWUsdS5jb2RlPWUsdS5maWxlPW4sdS5tZXRob2Q9byx1LmVycm9yPXMsdS5kZXNjcmlwdGlvbj1hLE9iamVjdC5zZXRQcm90b3R5cGVPZihFKHUpLCh0aGlzIGluc3RhbmNlb2Ygcj90aGlzLmNvbnN0cnVjdG9yOnZvaWQgMCkucHJvdG90eXBlKSx1fXJldHVybiByfShMKEVycm9yKSksRW89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe18odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudD10LHRoaXMuX2RhdGFMYXllcj10aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREYXRhTGF5ZXIoKX1yZXR1cm4gdyhlLFt7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyLG4sbz10aGlzO3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoKTtjYXNlIDI6aWYoISh0PWUuc2VudCkucmVmcmVzaF90b2tlbil7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIHI9cGFyc2VJbnQodC5leHBpcmVzX2luKSxuPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGEobyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pLDFlMyoocjw9MTA/cjpyLTEwKSksZS5uZXh0PTksdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoY3IsSlNPTi5zdHJpbmdpZnkobikpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoY3IpO2Nhc2UgMjppZighZS5zZW50KXtlLm5leHQ9OTticmVha31yZXR1cm4gZS50MD1KU09OLGUubmV4dD02LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGNyKTtjYXNlIDY6ZS50MT1lLnNlbnQsdD1lLnQwLnBhcnNlLmNhbGwoZS50MCxlLnQxKSxjbGVhclRpbWVvdXQodCk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fV0pLGV9KCksQW89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Xyh0aGlzLGUpfXJldHVybiB3KGUsbnVsbCxbe2tleToiZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJue2Jsb2I6KG51bGw9PWU/dm9pZCAwOmUuZGF0YSlpbnN0YW5jZW9mIEJsb2I/bnVsbD09ZT92b2lkIDA6ZS5kYXRhOm51bGwsZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITB9fX0se2tleToiZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUudG9KU09OKSYmZGVsZXRlIGUudG9KU09OLHtlcnJvcjpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITF9fX1dKSxlfSgpO3ZhciBUbz1fbz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtfKHRoaXMsZSksdGhpcy5hdHRhY2hUb2tlbj1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoKX0sdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLmluaXQ9dGhpcy5pbml0LmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2suYmluZCh0aGlzKX1yZXR1cm4gdyhlLFt7a2V5OiJyZXF1ZXN0SGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG47cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuYXR0YWNoVG9rZW4oZSk7Y2FzZSAyOnJldHVybihudWxsPT1lP3ZvaWQgMDplLnNob3VsZEVuY29kZVRvRm9ybURhdGEpJiYocj1udWxsPT1lP3ZvaWQgMDplLmRhdGEsbj1uZXcgRm9ybURhdGEsT2JqZWN0LmtleXMocikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bi5hcHBlbmQoZSxyW2VdKX0pKSxlLmRhdGE9biksX28uaXNIYW5kbGVyRW5hYmxlZCYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2soZSksdC5hYnJ1cHQoInJldHVybiIsZSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJlcnJvckhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3Rocm93IF9vLmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToic3VjY2Vzc0hhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBfby5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSx0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpfby5pc0hhbmRsZXJFbmFibGVkPWUsdGhpcy5hdHRhY2hUb2tlbj10O2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZW5hYmxlSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oKXtfby5pc0hhbmRsZXJFbmFibGVkPSEwfX0se2tleToiZGlzYWJsZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7X28uaXNIYW5kbGVyRW5hYmxlZD0hMX19LHtrZXk6ImRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOl9vLkRFRkFVTFRfSEFORExFUl9ESVNBQkxFX1RJTUVPVVQ7X28uaXNIYW5kbGVyRW5hYmxlZD0hMSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe19vLmlzSGFuZGxlckVuYWJsZWQ9ITB9KSxlKX19LHtrZXk6InNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaz1lfX1dLFt7a2V5OiJnZXRJbnN0YW5jZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLmF4aW9zSW5zdGFuY2V8fCh0aGlzLmF4aW9zSW5zdGFuY2U9dHIuY3JlYXRlKHt3aXRoQ3JlZGVudGlhbHM6ITB9KSx0aGlzLmNsaWVudEluc3RhbmNlfHwodGhpcy5jbGllbnRJbnN0YW5jZT1uZXcgX28pLHRoaXMuYXhpb3NJbnN0YW5jZS5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UoKGZ1bmN0aW9uKHQpe3JldHVybiBhKGUsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5jbGllbnRJbnN0YW5jZS5yZXF1ZXN0SGFuZGxlcih0KTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSksdGhpcy5heGlvc0luc3RhbmNlLmludGVyY2VwdG9ycy5yZXNwb25zZS51c2UoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsaWVudEluc3RhbmNlLnN1Y2Nlc3NIYW5kbGVyKHQpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsaWVudEluc3RhbmNlLmVycm9ySGFuZGxlcih0KX0pKSx0aGlzLmF4aW9zSW5zdGFuY2UuYWxsPXRyLmFsbCx0aGlzLmF4aW9zSW5zdGFuY2Uuc3ByZWFkPXRyLnNwcmVhZCx0aGlzLmF4aW9zSW5zdGFuY2UuaW5pdD10aGlzLmNsaWVudEluc3RhbmNlLmluaXQsdGhpcy5heGlvc0luc3RhbmNlLmVuYWJsZUhhbmRsZXI9dGhpcy5jbGllbnRJbnN0YW5jZS5lbmFibGVIYW5kbGVyLHRoaXMuYXhpb3NJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcj10aGlzLmNsaWVudEluc3RhbmNlLmRpc2FibGVIYW5kbGVyLHRoaXMuYXhpb3NJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0PXRoaXMuY2xpZW50SW5zdGFuY2UuZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dCx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEVycm9yQ2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKSx0aGlzLmF4aW9zSW5zdGFuY2V9fV0pLGV9KCk7VG8uREVGQVVMVF9IQU5ETEVSX0RJU0FCTEVfVElNRU9VVD0xZTMsVG89X289ZnVuY3Rpb24oZSx0LHIsbyl7dmFyIGksYT1hcmd1bWVudHMubGVuZ3RoLHM9YTwzP3Q6bnVsbD09PW8/bz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscik6bztpZigib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3Q/InVuZGVmaW5lZCI6bihSZWZsZWN0KSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBSZWZsZWN0LmRlY29yYXRlKXM9UmVmbGVjdC5kZWNvcmF0ZShlLHQscixvKTtlbHNlIGZvcih2YXIgdT1lLmxlbmd0aC0xO3U+PTA7dS0tKShpPWVbdV0pJiYocz0oYTwzP2kocyk6YT4zP2kodCxyLHMpOmkodCxyKSl8fHMpO3JldHVybiBhPjMmJnMmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIscyksc30oW2Z1bmN0aW9uKGUpe31dLFRvKTt2YXIgUm89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7Xyh0aGlzLGUpLHRoaXMuX2RhdGE9bmV3IE1hcH1yZXR1cm4gdyhlLFt7a2V5OiJzZXREYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBhKHRoaXMsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLl9kYXRhLnNldChlLHQpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscjtyZXR1cm4gYSh0aGlzLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLG51bGwhPT0ocj1udWxsPT09KHQ9dGhpcy5fZGF0YSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0KGUpKSYmdm9pZCAwIT09cj9yOiJ7fSIpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToicmVtb3ZlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGEodGhpcyx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuX2RhdGEuZGVsZXRlKGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpO2Z1bmN0aW9uIFBvKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1mdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIENvKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpOyJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZigiTWFwIj09PXJ8fCJTZXQiPT09cilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZigiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpKXJldHVybiBDbyhlLHQpfShlKSl8fHQmJmUmJiJudW1iZXIiPT10eXBlb2YgZS5sZW5ndGgpe3ImJihlPXIpO3ZhciBuPTAsbz1mdW5jdGlvbigpe307cmV0dXJue3M6byxuOmZ1bmN0aW9uKCl7cmV0dXJuIG4+PWUubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTplW24rK119fSxlOmZ1bmN0aW9uKGUpe3Rocm93IGV9LGY6b319dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBpLGE9ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe3I9ci5jYWxsKGUpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIGE9ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7cz0hMCxpPWV9LGY6ZnVuY3Rpb24oKXt0cnl7YXx8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fX19ZnVuY3Rpb24gQ28oZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn12YXIgT28sRG89ZnVuY3Rpb24oZSl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixvLHMsdSxjLGYsaCxwLGQsdixnLHksbSx3LGIsayx4LF8sUyxFLEEsVCxSLFAsQyxPLEQsSSxVLE07cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHI9bmV3IFJvLG49bmV3IHdvKHIpLHQubmV4dD00LG4uaW5pdGlhbGl6ZShlKTtjYXNlIDQ6aWYobz1uZXcgRW8obikscz1uLmdldERhdGFMYXllcigpLHU9VG8uZ2V0SW5zdGFuY2UoKSxjPWZ1bmN0aW9uKGUpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKCFPYmplY3QuYXNzaWduKHthdHRhY2hUb2tlbjohMH0sZSkuYXR0YWNoVG9rZW4pe3QubmV4dD0xMTticmVha31yZXR1cm4gdC50MD1PYmplY3QsdC50MT1PYmplY3QuYXNzaWduKHt9LGUuaGVhZGVycyksdC50Mj0iQmVhcmVyICIsdC5uZXh0PTcsbi5nZXRBY2Nlc3NUb2tlbigpO2Nhc2UgNzp0LnQzPXQuc2VudCx0LnQ0PXQudDIuY29uY2F0LmNhbGwodC50Mix0LnQzKSx0LnQ1PXtBdXRob3JpemF0aW9uOnQudDR9LGUuaGVhZGVycz10LnQwLmFzc2lnbi5jYWxsKHQudDAsdC50MSx0LnQ1KTtjYXNlIDExOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSx0LnQwPW51bGw9PXU/dm9pZCAwOnUuaW5pdCwhdC50MCl7dC5uZXh0PTEyO2JyZWFrfXJldHVybiB0Lm5leHQ9MTIsdS5pbml0KCEwLGMpO2Nhc2UgMTI6cmV0dXJuIGY9ZnVuY3Rpb24oZSl7KG51bGw9PXU/dm9pZCAwOnUuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKSYmdS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2soZSl9LGg9ZnVuY3Rpb24oZSl7KG51bGw9PXU/dm9pZCAwOnUuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2spJiZ1LnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKGUpfSxwPWZ1bmN0aW9uKGUpeyhudWxsPT11P3ZvaWQgMDp1LnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spJiZ1LnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2soZSl9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixvLGEsYyxmLGgscDtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gYT0hMSx0Lm5leHQ9MyxzLmdldENvbmZpZ0RhdGEoKTtjYXNlIDM6cmV0dXJuIGM9dC5zZW50LGY9MCx0LnQwPVtdLHQudDE9bCx0Lm5leHQ9OSxzLmdldENvbmZpZ0RhdGEoKTtjYXNlIDk6aWYodC50ND1yPXQuc2VudCx0LnQzPW51bGw9PT10LnQ0LHQudDMpe3QubmV4dD0xMzticmVha310LnQzPXZvaWQgMD09PXI7Y2FzZSAxMzppZighdC50Myl7dC5uZXh0PTE3O2JyZWFrfXQudDU9dm9pZCAwLHQubmV4dD0xODticmVhaztjYXNlIDE3OnQudDU9ci5yZXNvdXJjZVNlcnZlclVSTHM7Y2FzZSAxODppZih0LnQ2PW49dC50NSx0LnQyPW51bGwhPT10LnQ2LCF0LnQyKXt0Lm5leHQ9MjI7YnJlYWt9dC50Mj12b2lkIDAhPT1uO2Nhc2UgMjI6aWYoIXQudDIpe3QubmV4dD0yNjticmVha310LnQ3PW4sdC5uZXh0PTI3O2JyZWFrO2Nhc2UgMjY6dC50Nz1bXTtjYXNlIDI3OnQudDg9dC50Nyx0LnQ5PSgwLHQudDEpKHQudDgpLHQudDEwPVtudWxsPT1jP3ZvaWQgMDpjLnNlcnZlck9yaWdpbl0saD10LnQwLmNvbmNhdC5jYWxsKHQudDAsdC50OSx0LnQxMCk7Y2FzZSAzMTppZighKGY8aC5sZW5ndGgpKXt0Lm5leHQ9Mzk7YnJlYWt9aWYocD1oW2ZdLCEobnVsbD09PShvPW51bGw9PWU/dm9pZCAwOmUudXJsKXx8dm9pZCAwPT09bz92b2lkIDA6by5zdGFydHNXaXRoKHApKSl7dC5uZXh0PTM2O2JyZWFrfXJldHVybiBhPSEwLHQuYWJydXB0KCJicmVhayIsMzkpO2Nhc2UgMzY6ZisrLHQubmV4dD0zMTticmVhaztjYXNlIDM5OmlmKCFhKXt0Lm5leHQ9NDM7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHUucmVxdWVzdChlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbih0KXt2YXIgcjtyZXR1cm4gNDAxIT09KG51bGw9PT0ocj1udWxsPT10P3ZvaWQgMDp0LnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMpJiYobnVsbD09dD92b2lkIDA6dC5yZXNwb25zZSk/UHJvbWlzZS5yZWplY3QodCk6UygpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHUucmVxdWVzdChlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgU28oIldPUktFUl9DT1JFLUhSLUVTMDEiLCJ3b3JrZXItY29yZSIsImh0dHBSZXF1ZXN0IiwiIiwiIixlKSl9KSl9KSkpO2Nhc2UgNDM6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBTbygiV09SS0VSX0NPUkUtSFItSVYwMiIsIndvcmtlci1jb3JlIiwiaHR0cFJlcXVlc3QiLCJSZXF1ZXN0IHRvIHRoZSBwcm92aWRlZCBlbmRwb2ludCBpcyBwcm9oaWJpdGVkLiIsIlJlcXVlc3RzIGNhbiBvbmx5IGJlIHNlbnQgdG8gcmVzb3VyY2Ugc2VydmVycyBzcGVjaWZpZWQgYnkgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIGF0dHJpYnV0ZSB3aGlsZSBpbml0aWFsaXppbmcgdGhlIFNESy4gVGhlIHNwZWNpZmllZCBlbmRwb2ludCBpbiB0aGlzIHJlcXVlc3QgY2Fubm90IGJlIGZvdW5kIGFtb25nIHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCIpKSk7Y2FzZSA0NDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sdj1mdW5jdGlvbihlKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixvLGEsYyxmLGgscCxkLHYsZyx5LG0sdztyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gYz0hMCx0Lm5leHQ9MyxzLmdldENvbmZpZ0RhdGEoKTtjYXNlIDM6Zj10LnNlbnQsaD1QbyhlKSx0LnByZXY9NSxoLnMoKTtjYXNlIDc6aWYoKHA9aC5uKCkpLmRvbmUpe3QubmV4dD01MDticmVha31yZXR1cm4gZD1wLnZhbHVlLHY9ITEsZz0wLHQudDA9W10sdC50MT1sLHQubmV4dD0xNSxzLmdldENvbmZpZ0RhdGEoKTtjYXNlIDE1OmlmKHQudDQ9cj10LnNlbnQsdC50Mz1udWxsPT09dC50NCx0LnQzKXt0Lm5leHQ9MTk7YnJlYWt9dC50Mz12b2lkIDA9PT1yO2Nhc2UgMTk6aWYoIXQudDMpe3QubmV4dD0yMzticmVha310LnQ1PXZvaWQgMCx0Lm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMzp0LnQ1PXIucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgMjQ6aWYodC50Nj1vPXQudDUsdC50Mj1udWxsIT09dC50NiwhdC50Mil7dC5uZXh0PTI4O2JyZWFrfXQudDI9dm9pZCAwIT09bztjYXNlIDI4OmlmKCF0LnQyKXt0Lm5leHQ9MzI7YnJlYWt9dC50Nz1vLHQubmV4dD0zMzticmVhaztjYXNlIDMyOnQudDc9W107Y2FzZSAzMzp0LnQ4PXQudDcsdC50OT0oMCx0LnQxKSh0LnQ4KSx0LnQxMD1bbnVsbD09Zj92b2lkIDA6Zi5zZXJ2ZXJPcmlnaW5dLHk9dC50MC5jb25jYXQuY2FsbCh0LnQwLHQudDksdC50MTApO2Nhc2UgMzc6aWYoIShnPHkubGVuZ3RoKSl7dC5uZXh0PTQ1O2JyZWFrfWlmKG09eVtnXSwhKG51bGw9PT0oYT1kLnVybCl8fHZvaWQgMD09PWE/dm9pZCAwOmEuc3RhcnRzV2l0aChtKSkpe3QubmV4dD00MjticmVha31yZXR1cm4gdj0hMCx0LmFicnVwdCgiYnJlYWsiLDQ1KTtjYXNlIDQyOmcrKyx0Lm5leHQ9Mzc7YnJlYWs7Y2FzZSA0NTppZih2KXt0Lm5leHQ9NDg7YnJlYWt9cmV0dXJuIGM9ITEsdC5hYnJ1cHQoImJyZWFrIiw1MCk7Y2FzZSA0ODp0Lm5leHQ9NzticmVhaztjYXNlIDUwOnQubmV4dD01NTticmVhaztjYXNlIDUyOnQucHJldj01Mix0LnQxMT10LmNhdGNoKDUpLGguZSh0LnQxMSk7Y2FzZSA1NTpyZXR1cm4gdC5wcmV2PTU1LGguZigpLHQuZmluaXNoKDU1KTtjYXNlIDU4OmlmKHc9W10sIWMpe3QubmV4dD02NDticmVha31yZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXt3LnB1c2godS5yZXF1ZXN0KGUpKX0pKSx0LmFicnVwdCgicmV0dXJuIiwobnVsbD09dT92b2lkIDA6dS5hbGwpJiZ1LmFsbCh3KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gNDAxPT09KG51bGw9PT0odD1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5zdGF0dXMpP24ucmVmcmVzaEFjY2Vzc1Rva2VuKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gdS5hbGwmJnUuYWxsKHcpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBTbygiV09SS0VSX0NPUkUtSFJBLUVTMDEiLCJ3b3JrZXItY29yZSIsImh0dHBSZXF1ZXN0QWxsIiwiIiwiIixlKSl9KSk6UHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgNjQ6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBTbygiV09SS0VSX0NPUkUtSFJBLUlWMDIiLCJ3b3JrZXItY29yZSIsImh0dHBSZXF1ZXN0IiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNjU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1s1LDUyLDU1LDU4XV0pfSkpKX0sZz1mdW5jdGlvbigpe3UuZW5hYmxlSGFuZGxlciYmdS5lbmFibGVIYW5kbGVyKCl9LHk9ZnVuY3Rpb24oKXt1LmRpc2FibGVIYW5kbGVyJiZ1LmRpc2FibGVIYW5kbGVyKCl9LG09ZnVuY3Rpb24oZSl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLG4uZ2V0QXV0aG9yaXphdGlvblVSTChlKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1lLHQubmV4dD0zLG4uZ2V0UEtDRUNvZGUoKTtjYXNlIDM6cmV0dXJuIHQudDE9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHthdXRob3JpemF0aW9uVVJMOnQudDAscGtjZTp0LnQxfSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sdz1mdW5jdGlvbigpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBvLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLG8ucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LGI9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gYSgpe3ZhciB1O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGkpe2Zvcig7Oylzd2l0Y2goaS5wcmV2PWkubmV4dCl7Y2FzZSAwOnJldHVybiBpLm5leHQ9MixzLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6aWYodT1pLnNlbnQsIXJ8fCF1LmVuYWJsZVBLQ0Upe2kubmV4dD02O2JyZWFrfXJldHVybiBpLm5leHQ9NixuLnNldFBLQ0VDb2RlKHIpO2Nhc2UgNjppZighZSl7aS5uZXh0PTg7YnJlYWt9cmV0dXJuIGkuYWJydXB0KCJyZXR1cm4iLG4ucmVxdWVzdEFjY2Vzc1Rva2VuKGUsbnVsbCE9dD90OiIiKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxuLmdldEJhc2ljVXNlckluZm8oKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDg6cmV0dXJuIGkuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBTbygiV09SS0VSX0NPUkUtUkFUMS1ORjAxIiwid29ya2VyLWNvcmUiLCJyZXF1ZXN0QWNjZXNzVG9rZW4iLCJObyBhdXRob3JpemF0aW9uIGNvZGUuIiwiTm8gYXV0aG9yaXphdGlvbiBjb2RlIHdhcyBmb3VuZC4iKSkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGkuc3RvcCgpfX0pLGEpfSkpKX0saz1mdW5jdGlvbigpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBvLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLGUubmV4dD0zLG4uc2lnbk91dCgpO2Nhc2UgMzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LHg9ZnVuY3Rpb24oKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsbi5nZXRTaWduT3V0VVJMKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sXz1mdW5jdGlvbihlKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcix1LGMsZixoLHAsZCx2LGc7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIGY9ITAsaD0hMSx0Lm5leHQ9NCxzLmdldENvbmZpZ0RhdGEoKTtjYXNlIDQ6aWYocD10LnNlbnQsIShudWxsPT1lP3ZvaWQgMDplLnRva2VuRW5kcG9pbnQpKXt0Lm5leHQ9NDI7YnJlYWt9cmV0dXJuIGY9ITEsZD0wLHQudDA9W10sdC50MT1sLHQubmV4dD0xMixzLmdldENvbmZpZ0RhdGEoKTtjYXNlIDEyOmlmKHQudDQ9cj10LnNlbnQsdC50Mz1udWxsPT09dC50NCx0LnQzKXt0Lm5leHQ9MTY7YnJlYWt9dC50Mz12b2lkIDA9PT1yO2Nhc2UgMTY6aWYoIXQudDMpe3QubmV4dD0yMDticmVha310LnQ1PXZvaWQgMCx0Lm5leHQ9MjE7YnJlYWs7Y2FzZSAyMDp0LnQ1PXIucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgMjE6aWYodC50Nj11PXQudDUsdC50Mj1udWxsIT09dC50NiwhdC50Mil7dC5uZXh0PTI1O2JyZWFrfXQudDI9dm9pZCAwIT09dTtjYXNlIDI1OmlmKCF0LnQyKXt0Lm5leHQ9Mjk7YnJlYWt9dC50Nz11LHQubmV4dD0zMDticmVhaztjYXNlIDI5OnQudDc9W107Y2FzZSAzMDp0LnQ4PXQudDcsdC50OT0oMCx0LnQxKSh0LnQ4KSx0LnQxMD1bbnVsbD09cD92b2lkIDA6cC5zZXJ2ZXJPcmlnaW5dLHY9dC50MC5jb25jYXQuY2FsbCh0LnQwLHQudDksdC50MTApO2Nhc2UgMzQ6aWYoIShkPHYubGVuZ3RoKSl7dC5uZXh0PTQyO2JyZWFrfWlmKGc9dltkXSwhKG51bGw9PT0oYz1lLnRva2VuRW5kcG9pbnQpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLnN0YXJ0c1dpdGgoZykpKXt0Lm5leHQ9Mzk7YnJlYWt9cmV0dXJuIGg9ITAsdC5hYnJ1cHQoImJyZWFrIiw0Mik7Y2FzZSAzOTpkKyssdC5uZXh0PTM0O2JyZWFrO2Nhc2UgNDI6aWYoZS5zaG91bGRSZXBsYXlBZnRlclJlZnJlc2gmJnMuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihrbyxKU09OLnN0cmluZ2lmeShlKSksIWYmJiFoKXt0Lm5leHQ9NDc7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLG4ucmVxdWVzdEN1c3RvbUdyYW50KGUpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKCFlLnJldHVybnNTZXNzaW9uKXtyLm5leHQ9NTticmVha31yZXR1cm4gby5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksci5hYnJ1cHQoInJldHVybiIsbi5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgNTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdCk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscil9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgNDc6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBTbygiV09SS0VSX0NPUkUtUkNHLUlWMDEiLCJ3b3JrZXItY29yZSIsInJlcXVlc3RDdXN0b21HcmFudCIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIHRva2VuIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQ4OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxTPWZ1bmN0aW9uKCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUucHJldj0wLGUubmV4dD0zLG4ucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAzOnJldHVybiBlLm5leHQ9NSxNKCk7Y2FzZSA1OmlmKCEodD1lLnNlbnQpKXtlLm5leHQ9OTticmVha31yZXR1cm4gZS5uZXh0PTksXyh0KTtjYXNlIDk6cmV0dXJuIG8ucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGUuYWJydXB0KCJyZXR1cm4iLG4uZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDEzOnJldHVybiBlLnByZXY9MTMsZS50MD1lLmNhdGNoKDApLGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KGUudDApKTtjYXNlIDE2OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMCwxM11dKX0pKSl9LEU9ZnVuY3Rpb24oKXtyZXR1cm4gbi5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8uY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksUHJvbWlzZS5yZXNvbHZlKCEwKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpfSxBPWZ1bmN0aW9uKCl7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIGkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG4uZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LFQ9ZnVuY3Rpb24oKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbi5nZXREZWNvZGVkSURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LFI9ZnVuY3Rpb24oKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbi5nZXRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sUD1mdW5jdGlvbigpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixuLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sQz1mdW5jdGlvbigpe3JldHVybiBuLmdldEFjY2Vzc1Rva2VuKCl9LE89ZnVuY3Rpb24oKXtyZXR1cm4gbi5pc0F1dGhlbnRpY2F0ZWQoKX0sRD1mdW5jdGlvbihlKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIscy5zZXRTZXNzaW9uRGF0YVBhcmFtZXRlcigic2Vzc2lvbl9zdGF0ZSIsZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxJPWZ1bmN0aW9uKGUpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixuLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LFU9ZnVuY3Rpb24oKXtyZXR1cm4gYSh2b2lkIDAsdm9pZCAwLHZvaWQgMCxpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIscy5nZXRDb25maWdEYXRhKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sTT1mdW5jdGlvbigpe3JldHVybiBhKHZvaWQgMCx2b2lkIDAsdm9pZCAwLGkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0O3JldHVybiBpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixzLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoa28pO2Nhc2UgMjppZighKHQ9ZS5zZW50KSl7ZS5uZXh0PTc7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLEpTT04ucGFyc2UodCkpO2Nhc2UgNzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsbnVsbCk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx0LmFicnVwdCgicmV0dXJuIix7ZGlzYWJsZUh0dHBIYW5kbGVyOnksZW5hYmxlSHR0cEhhbmRsZXI6ZyxnZXRBY2Nlc3NUb2tlbjpDLGdldEF1dGhvcml6YXRpb25VUkw6bSxnZXRCYXNpY1VzZXJJbmZvOkEsZ2V0Q29uZmlnRGF0YTpVLGdldERlY29kZWRJRFRva2VuOlQsZ2V0SURUb2tlbjpSLGdldE9JRENTZXJ2aWNlRW5kcG9pbnRzOlAsZ2V0U2lnbk91dFVSTDp4LGh0dHBSZXF1ZXN0OmQsaHR0cFJlcXVlc3RBbGw6dixpc0F1dGhlbnRpY2F0ZWQ6TyxyZWZyZXNoQWNjZXNzVG9rZW46UyxyZXF1ZXN0QWNjZXNzVG9rZW46YixyZXF1ZXN0Q3VzdG9tR3JhbnQ6XyxyZXZva2VBY2Nlc3NUb2tlbjpFLHNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s6cCxzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s6ZixzZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjazpoLHNldFNlc3Npb25TdGF0ZTpELHNpZ25PdXQ6ayxzdGFydEF1dG9SZWZyZXNoVG9rZW46dyx1cGRhdGVDb25maWc6SX0pO2Nhc2UgMzg6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LElvPXNlbGY7SW8ub25tZXNzYWdlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuZGF0YSxyPWUucG9ydHM7cmV0dXJuIGEodm9pZCAwLHZvaWQgMCx2b2lkIDAsaS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIG4sbyxhLHMsdTtyZXR1cm4gaS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihzPXJbMF0sdC50eXBlPT09Ym98fE9vKXtlLm5leHQ9NDticmVha31yZXR1cm4gcy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBTbygiQ0xJRU5UX1dPUktFUi1PTk1TRy1ORjAxIiwiY2xpZW50LndvcmtlciIsdC50eXBlLCJUaGUgd2ViIHdvcmtlciBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LiIsIlRoZSBpbml0aWFsaXplIG1ldGhvZCBuZWVkcyB0byBiZSBjYWxsZWQgYmVmb3JlIHRoZSBzcGVjaWZpZWQgb3BlcmF0aW9uIGNhbiBiZSBjYXJyaWVkIG91dC4iKSkpLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDQ6ZS50MD10LnR5cGUsZS5uZXh0PWUudDA9PT1ibz83OiJnZXRfYXV0aF91cmwiPT09ZS50MD8yMjoicmVxdWVzdF9nZXRfdG9rZW4iPT09ZS50MD8yNDoiaHR0cC1yZXF1ZXN0Ij09PWUudDA/MjY6Imh0dHAtcmVxdWVzdC1hbGwiPT09ZS50MD8yODoic2lnbi1vdXQiPT09ZS50MD8zMDoicmVxdWVzdC1jdXN0b20tZ3JhbnQiPT09ZS50MD80NDoicmV2b2tlLWFjY2Vzcy10b2tlbiI9PT1lLnQwPzQ2OiJnZXQtb2lkYy1zZXJ2aWNlLWVuZHBvaW50cyI9PT1lLnQwPzQ4OiJnZXQtYmFzaWMtdXNlci1pbmZvIj09PWUudDA/NjI6ImdldC1kZWNvZGVkLWlkLXRva2VuIj09PWUudDA/NzY6ImdldF9pZF90b2tlbiI9PT1lLnQwPzkwOiJlbmFibGVfaHR0cF9oYW5kbGVyIj09PWUudDA/MTA0OiJkaXNhYmxlX2h0dHBfaGFuZGxlciI9PT1lLnQwPzEwNzoiaXNfYXV0aGVudGljYXRlZCI9PT1lLnQwPzExMDoiZ2V0X3NpZ25fb3V0X3VybCI9PT1lLnQwPzEyNDoicmVmcmVzaF9hY2Nlc3MtdG9rZW4iPT09ZS50MD8xMzg6InN0YXJ0X2F1dG9fcmVmcmVzaF90b2tlbiI9PT1lLnQwPzE1Mjoic2V0X3Nlc3Npb25fc3RhdGUiPT09ZS50MD8xNTQ6InVwZGF0ZV9jb25maWciPT09ZS50MD8xNjg6ImdldF9jb25maWdfZGF0YSI9PT1lLnQwPzE4MjoxOTY7YnJlYWs7Y2FzZSA3OnJldHVybiBlLnByZXY9Nyx1PU9iamVjdC5hc3NpZ24oe30sdC5kYXRhKSxlLm5leHQ9MTEsRG8odSk7Y2FzZSAxMTooT289ZS5zZW50KS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKExvKSxPby5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2soVW8pLE9vLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKE1vKSxzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoKSksZS5uZXh0PTIxO2JyZWFrO2Nhc2UgMTg6ZS5wcmV2PTE4LGUudDE9ZS5jYXRjaCg3KSxzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MSkpO2Nhc2UgMjE6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDIyOnJldHVybiBPby5nZXRBdXRob3JpemF0aW9uVVJMKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyNDpyZXR1cm4gT28ucmVxdWVzdEFjY2Vzc1Rva2VuKG51bGw9PT0obj1udWxsPT10P3ZvaWQgMDp0LmRhdGEpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmNvZGUsbnVsbD09PShvPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PW8/dm9pZCAwOm8uc2Vzc2lvblN0YXRlLG51bGw9PT0oYT1udWxsPT10P3ZvaWQgMDp0LmRhdGEpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLnBrY2UpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjY6cmV0dXJuIE9vLmh0dHBSZXF1ZXN0KHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyODpyZXR1cm4gT28uaHR0cFJlcXVlc3RBbGwodC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDMwOnJldHVybiBlLnByZXY9MzAsZS50Mj1zLGUudDM9QW8sZS5uZXh0PTM1LE9vLnNpZ25PdXQoKTtjYXNlIDM1OmUudDQ9ZS5zZW50LGUudDU9ZS50My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MyxlLnQ0KSxlLnQyLnBvc3RNZXNzYWdlLmNhbGwoZS50MixlLnQ1KSxlLm5leHQ9NDM7YnJlYWs7Y2FzZSA0MDplLnByZXY9NDAsZS50Nj1lLmNhdGNoKDMwKSxzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NikpO2Nhc2UgNDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ0OnJldHVybiBPby5yZXF1ZXN0Q3VzdG9tR3JhbnQodC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ2OnJldHVybiBPby5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNDg6cmV0dXJuIGUucHJldj00OCxlLnQ3PXMsZS50OD1BbyxlLm5leHQ9NTMsT28uZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKTtjYXNlIDUzOmUudDk9ZS5zZW50LGUudDEwPWUudDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDgsZS50OSksZS50Ny5wb3N0TWVzc2FnZS5jYWxsKGUudDcsZS50MTApLGUubmV4dD02MTticmVhaztjYXNlIDU4OmUucHJldj01OCxlLnQxMT1lLmNhdGNoKDQ4KSxzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MTEpKTtjYXNlIDYxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA2MjpyZXR1cm4gZS5wcmV2PTYyLGUudDEyPXMsZS50MTM9QW8sZS5uZXh0PTY3LE9vLmdldEJhc2ljVXNlckluZm8oKTtjYXNlIDY3OmUudDE0PWUuc2VudCxlLnQxNT1lLnQxMy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MTMsZS50MTQpLGUudDEyLnBvc3RNZXNzYWdlLmNhbGwoZS50MTIsZS50MTUpLGUubmV4dD03NTticmVhaztjYXNlIDcyOmUucHJldj03MixlLnQxNj1lLmNhdGNoKDYyKSxzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MTYpKTtjYXNlIDc1OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA3NjpyZXR1cm4gZS5wcmV2PTc2LGUudDE3PXMsZS50MTg9QW8sZS5uZXh0PTgxLE9vLmdldERlY29kZWRJRFRva2VuKCk7Y2FzZSA4MTplLnQxOT1lLnNlbnQsZS50MjA9ZS50MTguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDE4LGUudDE5KSxlLnQxNy5wb3N0TWVzc2FnZS5jYWxsKGUudDE3LGUudDIwKSxlLm5leHQ9ODk7YnJlYWs7Y2FzZSA4NjplLnByZXY9ODYsZS50MjE9ZS5jYXRjaCg3Nikscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDIxKSk7Y2FzZSA4OTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgOTA6cmV0dXJuIGUucHJldj05MCxlLnQyMj1zLGUudDIzPUFvLGUubmV4dD05NSxPby5nZXRJRFRva2VuKCk7Y2FzZSA5NTplLnQyND1lLnNlbnQsZS50MjU9ZS50MjMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDIzLGUudDI0KSxlLnQyMi5wb3N0TWVzc2FnZS5jYWxsKGUudDIyLGUudDI1KSxlLm5leHQ9MTAzO2JyZWFrO2Nhc2UgMTAwOmUucHJldj0xMDAsZS50MjY9ZS5jYXRjaCg5MCkscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDI2KSk7Y2FzZSAxMDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNDpyZXR1cm4gT28uZW5hYmxlSHR0cEhhbmRsZXIoKSxzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoKSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTA3OnJldHVybiBPby5kaXNhYmxlSHR0cEhhbmRsZXIoKSxzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoKSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTEwOnJldHVybiBlLnByZXY9MTEwLGUudDI3PXMsZS50Mjg9QW8sZS5uZXh0PTExNSxPby5pc0F1dGhlbnRpY2F0ZWQoKTtjYXNlIDExNTplLnQyOT1lLnNlbnQsZS50MzA9ZS50MjguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDI4LGUudDI5KSxlLnQyNy5wb3N0TWVzc2FnZS5jYWxsKGUudDI3LGUudDMwKSxlLm5leHQ9MTIzO2JyZWFrO2Nhc2UgMTIwOmUucHJldj0xMjAsZS50MzE9ZS5jYXRjaCgxMTApLHMucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQzMSkpO2Nhc2UgMTIzOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMjQ6cmV0dXJuIGUucHJldj0xMjQsZS50MzI9cyxlLnQzMz1BbyxlLm5leHQ9MTI5LE9vLmdldFNpZ25PdXRVUkwoKTtjYXNlIDEyOTplLnQzND1lLnNlbnQsZS50MzU9ZS50MzMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDMzLGUudDM0KSxlLnQzMi5wb3N0TWVzc2FnZS5jYWxsKGUudDMyLGUudDM1KSxlLm5leHQ9MTM3O2JyZWFrO2Nhc2UgMTM0OmUucHJldj0xMzQsZS50MzY9ZS5jYXRjaCgxMjQpLHMucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQzNikpO2Nhc2UgMTM3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMzg6cmV0dXJuIGUucHJldj0xMzgsZS50Mzc9cyxlLnQzOD1BbyxlLm5leHQ9MTQzLE9vLnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMTQzOmUudDM5PWUuc2VudCxlLnQ0MD1lLnQzOC5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50MzgsZS50MzkpLGUudDM3LnBvc3RNZXNzYWdlLmNhbGwoZS50MzcsZS50NDApLGUubmV4dD0xNTE7YnJlYWs7Y2FzZSAxNDg6ZS5wcmV2PTE0OCxlLnQ0MT1lLmNhdGNoKDEzOCkscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDQxKSk7Y2FzZSAxNTE6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE1Mjp0cnl7cy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKE9vLnN0YXJ0QXV0b1JlZnJlc2hUb2tlbigpKSl9Y2F0Y2goZSl7cy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX1yZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTU0OnJldHVybiBlLnByZXY9MTU0LGUudDQyPXMsZS50NDM9QW8sZS5uZXh0PTE1OSxPby5zZXRTZXNzaW9uU3RhdGUobnVsbD09dD92b2lkIDA6dC5kYXRhKTtjYXNlIDE1OTplLnQ0ND1lLnNlbnQsZS50NDU9ZS50NDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDQzLGUudDQ0KSxlLnQ0Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDQyLGUudDQ1KSxlLm5leHQ9MTY3O2JyZWFrO2Nhc2UgMTY0OmUucHJldj0xNjQsZS50NDY9ZS5jYXRjaCgxNTQpLHMucG9zdE1lc3NhZ2UoQW8uZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0NikpO2Nhc2UgMTY3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNjg6cmV0dXJuIGUucHJldj0xNjgsZS50NDc9cyxlLnQ0OD1BbyxlLm5leHQ9MTczLE9vLnVwZGF0ZUNvbmZpZyhudWxsPT10P3ZvaWQgMDp0LmRhdGEpO2Nhc2UgMTczOmUudDQ5PWUuc2VudCxlLnQ1MD1lLnQ0OC5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50NDgsZS50NDkpLGUudDQ3LnBvc3RNZXNzYWdlLmNhbGwoZS50NDcsZS50NTApLGUubmV4dD0xODE7YnJlYWs7Y2FzZSAxNzg6ZS5wcmV2PTE3OCxlLnQ1MT1lLmNhdGNoKDE2OCkscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDUxKSk7Y2FzZSAxODE6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE4MjpyZXR1cm4gZS5wcmV2PTE4MixlLnQ1Mj1zLGUudDUzPUFvLGUubmV4dD0xODcsT28uZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTg3OmUudDU0PWUuc2VudCxlLnQ1NT1lLnQ1My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50NTMsZS50NTQpLGUudDUyLnBvc3RNZXNzYWdlLmNhbGwoZS50NTIsZS50NTUpLGUubmV4dD0xOTU7YnJlYWs7Y2FzZSAxOTI6ZS5wcmV2PTE5MixlLnQ1Nj1lLmNhdGNoKDE4Mikscy5wb3N0TWVzc2FnZShBby5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDU2KSk7Y2FzZSAxOTU6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE5NjpudWxsPT1zfHxzLnBvc3RNZXNzYWdlKEFvLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UobmV3IFNvKCJDTElFTlRfV09SS0VSLU9OTVNHLUlWMDIiLCJjbGllbnQud29ya2VyIiwib25tZXNzYWdlIiwiVGhlIG1lc3NhZ2UgdHlwZSBpcyBpbnZhbGlkLiIsIlRoZSBtZXNzYWdlIHR5cGUgcHJvdmlkZWQsICIuY29uY2F0KHQudHlwZSwiLCBpcyBpbnZhbGlkLiIpKSkpO2Nhc2UgMTk3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbNywxOF0sWzMwLDQwXSxbNDgsNThdLFs2Miw3Ml0sWzc2LDg2XSxbOTAsMTAwXSxbMTEwLDEyMF0sWzEyNCwxMzRdLFsxMzgsMTQ4XSxbMTU0LDE2NF0sWzE2OCwxNzhdLFsxODIsMTkyXV0pfSkpKX07dmFyIFVvPWZ1bmN0aW9uKCl7SW8ucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3Qtc3RhcnQifSl9LE1vPWZ1bmN0aW9uKGUpe0lvLnBvc3RNZXNzYWdlKHtkYXRhOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksdHlwZToicmVxdWVzdC1zdWNjZXNzIn0pfSxMbz1mdW5jdGlvbigpe0lvLnBvc3RNZXNzYWdlKHt0eXBlOiJyZXF1ZXN0LWZpbmlzaCJ9KX07cmV0dXJue319KCk7Cgo=",Av=null,Mv=!1,function(t){return Pv=Pv||zv(jv,Av,Mv),new Worker(Pv,t)}),Dv=function(t){var e,n,i=null!==(e=null==t?void 0:t.requestTimeout)&&void 0!==e?e:6e4,r=!0,c=!1,l=xv((function(){return zX(void 0,void 0,void 0,BX.mark((function t(){var e,n;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={type:"sign-out"},t.prev=1,t.next=4,a(e);case 4:return n=t.sent,t.abrupt("return",n);case 8:return t.prev=8,t.t0=t.catch(1),t.abrupt("return",Jv.getSignOutURL());case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))}),t.storage,(function(t){return u(t)})),o=new Qv,a=function(t){var e=new MessageChannel;return o.postMessage(t,[e.port2]),new Promise((function(t,n){var r=setTimeout((function(){n(new Kv("WEB_WORKER_CLIENT-COM-TO-01","web-worker-client","communicate","Operation timed out.","No response was received from the web worker for "+i/1e3+" since dispatching the request"))}),i);return e.port1.onmessage=function(e){var i=e.data;if(clearTimeout(r),null==i?void 0:i.success){var c=(null==i?void 0:i.data)?JSON.parse(null==i?void 0:i.data):null;(null==i?void 0:i.blob)&&(c.data=null==i?void 0:i.blob),t(c)}else n(i.error?JSON.parse(i.error):null)}}))},u=function(t){return a({data:t,type:"set_session_state"})},d=function(){return a({type:"start_auto_refresh_token"})},s=function(){return zX(void 0,void 0,void 0,BX.mark((function t(){var e,n,i,r,c,o;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,h();case 2:return c=t.sent,t.next=5,b();case 5:o=t.sent,l.initialize(o.clientID,null!==(e=c.checkSessionIframe)&&void 0!==e?e:"",(function(){return zX(void 0,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Z();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),null!==(n=o.checkSessionInterval)&&void 0!==n?n:3,null!==(i=o.sessionRefreshInterval)&&void 0!==i?i:300,o.signInRedirectURL,null!==(r=c.authorizationEndpoint)&&void 0!==r?r:"",o.enablePKCE);case 7:case"end":return t.stop()}}),t)})))},m=function(t,e){return zX(void 0,void 0,void 0,BX.mark((function n(){var i,r;return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,b();case 2:return i=n.sent,r={data:{code:t,pkce:i.enablePKCE?Jv.getPKCE():void 0,sessionState:e},type:"request_get_token"},i.enablePKCE&&Jv.removePKCE(),n.abrupt("return",a(r).then((function(t){return a({type:"get_sign_out_url"}).then((function(e){return Jv.setSignOutURL(e),i.enableOIDCSessionManagement&&s(),d(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))})).catch((function(t){return Promise.reject(t)})));case 6:case"end":return n.stop()}}),n)})))},h=function(){return a({type:"get-oidc-service-endpoints"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},b=function(){return a({type:"get_config_data"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},Z=function(){return a({type:"get-basic-user-info"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},p=function(){return a({type:"is_authenticated"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))};return{disableHttpHandler:function(){return a({type:"disable_http_handler"}).then((function(){return r=!1,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},enableHttpHandler:function(){return a({type:"enable_http_handler"}).then((function(){return r=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},getBasicUserInfo:Z,getDecodedIDToken:function(){return a({type:"get-decoded-id-token"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},getIDToken:function(){return a({type:"get_id_token"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},getOIDCServiceEndpoints:h,httpRequest:function(t){return a({data:t,type:"http-request"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!r){e.next=5;break}if("function"!=typeof n.requestErrorCallback){e.next=4;break}return e.next=4,n.requestErrorCallback(t);case 4:"function"==typeof n.requestFinishCallback&&n.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},httpRequestAll:function(t){return a({data:t,type:"http-request-all"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!r){e.next=5;break}if("function"!=typeof n.requestErrorCallback){e.next=4;break}return e.next=4,n.requestErrorCallback(t);case 4:"function"==typeof n.requestFinishCallback&&n.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},initialize:function(){return n||(n={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),o.onmessage=function(t){var e=t.data;switch(e.type){case"request-finish":(null==n?void 0:n.requestFinishCallback)&&(null==n||n.requestFinishCallback());break;case"request-start":(null==n?void 0:n.requestStartCallback)&&(null==n||n.requestStartCallback());break;case"request-success":(null==n?void 0:n.requestSuccessCallback)&&(null==n||n.requestSuccessCallback(e.data?JSON.parse(e.data):null))}},a({data:t,type:"init"}).then((function(){return Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},isAuthenticated:p,refreshAccessToken:function(){return a({type:"refresh_access-token"})},requestCustomGrant:function(t){return a({data:t,type:"request-custom-grant"}).then((function(e){return t.preventSignOutURLUpdate&&(c=!0),Promise.resolve(e)})).catch((function(t){return Promise.reject(t)}))},revokeAccessToken:function(){return a({type:"revoke-access-token"}).then((function(t){return l.reset(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},setHttpRequestErrorCallback:function(t){t&&"function"==typeof t&&(n.requestErrorCallback=t)},setHttpRequestFinishCallback:function(t){t&&"function"==typeof t&&(n.requestFinishCallback=t)},setHttpRequestStartCallback:function(t){t&&"function"==typeof t&&(n.requestStartCallback=t)},setHttpRequestSuccessCallback:function(t){t&&"function"==typeof t&&(n.requestSuccessCallback=t)},signIn:function(t,e,n){return zX(void 0,void 0,void 0,BX.mark((function i(){var r,c,o,h,y,I,X,g,G;return BX.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,b();case 2:return o=i.sent,i.next=5,l.receivePromptNoneResponse((function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",u(t));case 1:case"end":return e.stop()}}),e)})))}));case 5:if(!i.sent){i.next=8;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:if(h=new URL(window.location.href).searchParams.get("error"),y=new URL(window.location.href).searchParams.get("error_description"),!h){i.next=16;break}return(I=new URL(window.location.href)).searchParams.delete("error"),I.searchParams.delete("error_description"),history.pushState(null,document.title,I.toString()),i.abrupt("return",Promise.reject(new Kv("WEB_WORKER_CLIENT-SI-BE","web-worker-client","signIn",h,null!=y?y:"")));case 16:return i.next=18,p();case 18:if(!i.sent){i.next=23;break}return i.next=21,d();case 21:return o.enableOIDCSessionManagement&&s(),i.abrupt("return",Z());case 23:if((null==o?void 0:o.responseMode)===xf.formPost&&e?(X=e,g=null!=n?n:""):(X=null!==(r=new URL(window.location.href).searchParams.get(Of))&&void 0!==r?r:"",g=null!==(c=new URL(window.location.href).searchParams.get(_f))&&void 0!==c?c:"",Jv.removeAuthorizationCode()),!X){i.next=26;break}return i.abrupt("return",m(X,g));case 26:return G={data:t,type:"get_auth_url"},i.abrupt("return",a(G).then((function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.pkce&&o.enablePKCE&&Jv.setPKCE(t.pkce),location.href=t.authorizationURL,e.next=4,Jv.waitTillPageRedirect();case 4:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 5:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 28:case"end":return i.stop()}}),i)})))},signOut:function(){return p().then((function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){var n;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t||c){e.next=5;break}return n={type:"sign-out"},e.abrupt("return",a(n).then((function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return window.location.href=t,e.next=3,Jv.waitTillPageRedirect();case 3:return e.abrupt("return",Promise.resolve(!0));case 4:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 5:return window.location.href=Jv.getSignOutURL(),e.next=8,Jv.waitTillPageRedirect();case 8:return e.abrupt("return",Promise.resolve(!0));case 9:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)}))},trySignInSilently:function(){return zX(void 0,void 0,void 0,BX.mark((function t(){var e,n,i,r,c,o,u,d,s;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,b();case 2:if(n=t.sent,!Jv.isInitializedSilentSignIn()){t.next=7;break}return t.next=6,l.receivePromptNoneResponse();case 6:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById("rpIFrame"),r=null===(e=null==i?void 0:i.contentDocument)||void 0===e?void 0:e.getElementById("promptNoneIFrame"),c={data:{prompt:"none",state:"sign-in-silently"},type:"get_auth_url"},t.prev=10,t.next=13,a(c);case 13:(o=t.sent).pkce&&n.enablePKCE&&Jv.setPKCE(o.pkce),u=o.authorizationURL,(d=new URL(u)).searchParams.set("response_mode","query"),s=d.toString(),r.src=s,t.next=25;break;case 22:return t.prev=22,t.t0=t.catch(10),t.abrupt("return",Promise.reject(t.t0));case 25:return t.abrupt("return",new Promise((function(t,e){var n=setTimeout((function(){t(!1)}),1e4);window.addEventListener("message",(function i(r){return zX(void 0,void 0,void 0,BX.mark((function c(){var l,o,a,u;return BX.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:"check_session_signed_out"==(null==(u=r.data)?void 0:u.type)&&(window.removeEventListener("message",i),clearTimeout(n),t(!1)),"check_session_signed_in"==(null==u?void 0:u.type)&&(null===(l=null==u?void 0:u.data)||void 0===l?void 0:l.code)&&m(null===(o=null==u?void 0:u.data)||void 0===o?void 0:o.code,null===(a=null==u?void 0:u.data)||void 0===a?void 0:a.sessionState).then((function(e){window.removeEventListener("message",i),t(e)})).catch((function(t){window.removeEventListener("message",i),e(t)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 26:case"end":return t.stop()}}),t,null,[[10,22]])})))},updateConfig:function(t){return zX(void 0,void 0,void 0,BX.mark((function e(){var n,i,r,c;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,b();case 2:return n=e.sent,i=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),r=Object.assign(Object.assign({},n),t),c={data:r,type:"update_config"},e.next=8,a(c);case 8:r.enableOIDCSessionManagement&&i&&(l.reset(),s());case 9:case"end":return e.stop()}}),e)})))}}},Ev={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:nv.SessionStorage},Ov=function(){function t(e){wX(this,t),this._initialized=!1,this._startedInitialize=!1,this._onSignInCallback=function(){return null},this._onSignOutCallback=function(){return null},this._onEndUserSession=function(){return null},this._onInitialize=function(){return null},this._onCustomGrant=new Map,this._instanceID=e}return FX(t,[{key:"_isInitialized",value:function(){return zX(this,void 0,void 0,BX.mark((function t(){var e,n;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._startedInitialize){t.next=2;break}return t.abrupt("return",!1);case 2:e=0,n=function(){return new Promise((function(t){return setTimeout(t,1e3)}))};case 4:if(this._initialized){t.next=11;break}return 10===e&&console.warn("It is taking longer than usual for the object to be initialized"),t.next=8,n();case 8:e++,t.next=4;break;case 11:return t.abrupt("return",!0);case 12:case"end":return t.stop()}}),t,this)})))}},{key:"_validateMethod",value:function(){return zX(this,void 0,void 0,BX.mark((function t(){return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(t.sent){t.next=4;break}return t.abrupt("return",Promise.reject());case 4:return t.next=6,this.isAuthenticated();case 6:if(t.sent){t.next=8;break}return t.abrupt("return",Promise.reject());case 8:return t.abrupt("return",!0);case 9:case"end":return t.stop()}}),t,this)})))}
394
394
  /**
395
395
  * This method returns the instance of the singleton class.
396
396
  *
@@ -429,7 +429,7 @@ function(t){return zf(this,void 0,void 0,zX.mark((function e(){return zX.wrap((f
429
429
  *
430
430
  * @preserve
431
431
  */
432
- function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l=this;return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(this._storage=null!==(e=t.storage)&&void 0!==e?e:lv.SessionStorage,this._initialized=!1,this._startedInitialize=!0,this._storage===lv.WebWorker){n.next=15;break}if(this._client){n.next=10;break}return r=t,i=Object.assign({},$v),n.next=9,Qv(Object.assign(Object.assign({},i),r));case 9:this._client=n.sent;case 10:return this._initialized=!0,this._onInitialize&&this._onInitialize(!0),n.abrupt("return",Promise.resolve(!0));case 15:if(this._client){n.next=19;break}return c=t,this._client=qv(Object.assign(Object.assign({},$v),c)),n.abrupt("return",this._client.initialize().then((function(){return l._onInitialize&&l._onInitialize(!0),l._initialized=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)})));case 19:return n.abrupt("return",Promise.resolve(!0));case 20:case"end":return n.stop()}}),n,this)})))}
432
+ function(t){var e;return zX(this,void 0,void 0,BX.mark((function n(){var i,r,c,l=this;return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(this._storage=null!==(e=t.storage)&&void 0!==e?e:nv.SessionStorage,this._initialized=!1,this._startedInitialize=!0,this._storage===nv.WebWorker){n.next=15;break}if(this._client){n.next=10;break}return i=t,r=Object.assign({},Ev),n.next=9,Bv(Object.assign(Object.assign({},r),i));case 9:this._client=n.sent;case 10:return this._initialized=!0,this._onInitialize&&this._onInitialize(!0),n.abrupt("return",Promise.resolve(!0));case 15:if(this._client){n.next=19;break}return c=t,this._client=Dv(Object.assign(Object.assign({},Ev),c)),n.abrupt("return",this._client.initialize().then((function(){return l._onInitialize&&l._onInitialize(!0),l._initialized=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)})));case 19:return n.abrupt("return",Promise.resolve(!0));case 20:case"end":return n.stop()}}),n,this)})))}
433
433
  /**
434
434
  * This method returns a Promise that resolves with the basic user information obtained from the ID token.
435
435
  *
@@ -449,7 +449,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
449
449
  * @memberof AsgardeoSPAClient
450
450
  *
451
451
  * @preserve
452
- */},{key:"getBasicUserInfo",value:function(){var t;return BX(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getBasicUserInfo());case 3:case"end":return e.stop()}}),e,this)})))}
452
+ */},{key:"getBasicUserInfo",value:function(){var t;return zX(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getBasicUserInfo());case 3:case"end":return e.stop()}}),e,this)})))}
453
453
  /**
454
454
  * This method initiates the authentication flow. This should be called twice.
455
455
  * 1. To initiate the authentication flow.
@@ -482,7 +482,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
482
482
  * @memberof AsgardeoSPAClient
483
483
  *
484
484
  * @preserve
485
- */},{key:"signIn",value:function(t,e,n){var r;return BX(this,void 0,void 0,zX.mark((function i(){var c=this;return zX.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._isInitialized();case 2:if(kv.canContinueSignIn(Boolean(null==t?void 0:t.callOnlyOnRedirect),e)){i.next=4;break}return i.abrupt("return");case 4:return null==t||delete t.callOnlyOnRedirect,i.abrupt("return",null===(r=this._client)||void 0===r?void 0:r.signIn(t,e,n).then((function(t){return c._onSignInCallback&&(t.allowedScopes||t.displayName||t.email||t.username)&&c._onSignInCallback(t),t})));case 6:case"end":return i.stop()}}),i,this)})))}},{key:"trySignInSilently",value:function(){var t;return BX(this,void 0,void 0,zX.mark((function e(){var n=this;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(!kv.wasSignInCalled()){e.next=4;break}return e.abrupt("return");case 4:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.trySignInSilently().then((function(t){if(n._onSignInCallback&&t){var e=t;(e.allowedScopes||e.displayName||e.email||e.username)&&n._onSignInCallback(e)}return t})));case 5:case"end":return e.stop()}}),e,this)})))}
485
+ */},{key:"signIn",value:function(t,e,n){var i;return zX(this,void 0,void 0,BX.mark((function r(){var c=this;return BX.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._isInitialized();case 2:if(Jv.canContinueSignIn(Boolean(null==t?void 0:t.callOnlyOnRedirect),e)){r.next=4;break}return r.abrupt("return");case 4:return null==t||delete t.callOnlyOnRedirect,r.abrupt("return",null===(i=this._client)||void 0===i?void 0:i.signIn(t,e,n).then((function(t){return c._onSignInCallback&&(t.allowedScopes||t.displayName||t.email||t.username)&&c._onSignInCallback(t),t})));case 6:case"end":return r.stop()}}),r,this)})))}},{key:"trySignInSilently",value:function(){var t;return zX(this,void 0,void 0,BX.mark((function e(){var n=this;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(!Jv.wasSignInCalled()){e.next=4;break}return e.abrupt("return");case 4:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.trySignInSilently().then((function(t){if(n._onSignInCallback&&t){var e=t;(e.allowedScopes||e.displayName||e.email||e.username)&&n._onSignInCallback(e)}return t})));case 5:case"end":return e.stop()}}),e,this)})))}
486
486
  /**
487
487
  * This method initiates the sign-out flow.
488
488
  *
@@ -502,7 +502,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
502
502
  * @memberof AsgardeoSPAClient
503
503
  *
504
504
  * @preserve
505
- */},{key:"signOut",value:function(){var t,e;return BX(this,void 0,void 0,zX.mark((function n(){var r;return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.next=4,null===(t=this._client)||void 0===t?void 0:t.signOut();case 4:if(n.t1=e=n.sent,n.t0=null!==n.t1,!n.t0){n.next=8;break}n.t0=void 0!==e;case 8:if(!n.t0){n.next=12;break}n.t2=e,n.next=13;break;case 12:n.t2=!1;case 13:return r=n.t2,n.abrupt("return",r);case 15:case"end":return n.stop()}}),n,this)})))}
505
+ */},{key:"signOut",value:function(){var t,e;return zX(this,void 0,void 0,BX.mark((function n(){var i;return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.next=4,null===(t=this._client)||void 0===t?void 0:t.signOut();case 4:if(n.t1=e=n.sent,n.t0=null!==n.t1,!n.t0){n.next=8;break}n.t0=void 0!==e;case 8:if(!n.t0){n.next=12;break}n.t2=e,n.next=13;break;case 12:n.t2=!1;case 13:return i=n.t2,n.abrupt("return",i);case 15:case"end":return n.stop()}}),n,this)})))}
506
506
  /**
507
507
  * This method sends an API request to a protected endpoint.
508
508
  * The access token is automatically attached to the header of the request.
@@ -539,7 +539,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
539
539
  * @memberof AsgardeoSPAClient
540
540
  *
541
541
  * @preserve
542
- */},{key:"httpRequest",value:function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.httpRequest(t));case 3:case"end":return n.stop()}}),n,this)})))}
542
+ */},{key:"httpRequest",value:function(t){var e;return zX(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.httpRequest(t));case 3:case"end":return n.stop()}}),n,this)})))}
543
543
  /**
544
544
  * This method sends multiple API requests to a protected endpoint.
545
545
  * The access token is automatically attached to the header of the request.
@@ -586,7 +586,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
586
586
  * @memberof AsgardeoSPAClient
587
587
  *
588
588
  * @preserve
589
- */},{key:"httpRequestAll",value:function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){return zX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.httpRequestAll(t));case 3:case"end":return n.stop()}}),n,this)})))}
589
+ */},{key:"httpRequestAll",value:function(t){var e;return zX(this,void 0,void 0,BX.mark((function n(){return BX.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.httpRequestAll(t));case 3:case"end":return n.stop()}}),n,this)})))}
590
590
  /**
591
591
  * This method allows you to send a request with a custom grant.
592
592
  *
@@ -617,7 +617,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
617
617
  * @memberof AsgardeoSPAClient
618
618
  *
619
619
  * @preserve
620
- */},{key:"requestCustomGrant",value:function(t){var e,n;return BX(this,void 0,void 0,zX.mark((function r(){var i,c;return zX.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!t.signInRequired){r.next=5;break}return r.next=3,this._validateMethod();case 3:r.next=7;break;case 5:return r.next=7,this._validateMethod();case 7:if(t.id){r.next=9;break}return r.abrupt("return",Promise.reject(new Hv("AUTH_CLIENT-RCG-NF01","client","requestCustomGrant","The custom grant request id not found.","The id attribute of the custom grant config object passed as an argument should have a value.")));case 9:return r.next=11,null===(e=this._client)||void 0===e?void 0:e.requestCustomGrant(t);case 11:return i=r.sent,(c=this._onCustomGrant.get(t.id))&&c(null===(n=this._onCustomGrant)||void 0===n?void 0:n.get(t.id)),r.abrupt("return",i);case 15:case"end":return r.stop()}}),r,this)})))}
620
+ */},{key:"requestCustomGrant",value:function(t){var e,n;return zX(this,void 0,void 0,BX.mark((function i(){var r,c;return BX.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(!t.signInRequired){i.next=5;break}return i.next=3,this._validateMethod();case 3:i.next=7;break;case 5:return i.next=7,this._validateMethod();case 7:if(t.id){i.next=9;break}return i.abrupt("return",Promise.reject(new Kv("AUTH_CLIENT-RCG-NF01","client","requestCustomGrant","The custom grant request id not found.","The id attribute of the custom grant config object passed as an argument should have a value.")));case 9:return i.next=11,null===(e=this._client)||void 0===e?void 0:e.requestCustomGrant(t);case 11:return r=i.sent,(c=this._onCustomGrant.get(t.id))&&c(null===(n=this._onCustomGrant)||void 0===n?void 0:n.get(t.id)),i.abrupt("return",r);case 15:case"end":return i.stop()}}),i,this)})))}
621
621
  /**
622
622
  * This method ends a user session. The access token is revoked and the session information is destroyed.
623
623
  *
@@ -637,7 +637,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
637
637
  * @memberof AsgardeoSPAClient
638
638
  *
639
639
  * @preserve
640
- */},{key:"revokeAccessToken",value:function(){var t;return BX(this,void 0,void 0,zX.mark((function e(){var n;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.next=4,null===(t=this._client)||void 0===t?void 0:t.revokeAccessToken();case 4:if(n=e.sent,e.t0=this._onEndUserSession,!e.t0){e.next=9;break}return e.next=9,this._onEndUserSession(n);case 9:return e.abrupt("return",n);case 10:case"end":return e.stop()}}),e,this)})))}
640
+ */},{key:"revokeAccessToken",value:function(){var t;return zX(this,void 0,void 0,BX.mark((function e(){var n;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.next=4,null===(t=this._client)||void 0===t?void 0:t.revokeAccessToken();case 4:if(n=e.sent,e.t0=this._onEndUserSession,!e.t0){e.next=9;break}return e.next=9,this._onEndUserSession(n);case 9:return e.abrupt("return",n);case 10:case"end":return e.stop()}}),e,this)})))}
641
641
  /**
642
642
  * This method returns a Promise that resolves with an object containing the service endpoints.
643
643
  *
@@ -657,7 +657,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
657
657
  * @memberof AsgardeoSPAClient
658
658
  *
659
659
  * @preserve
660
- */},{key:"getOIDCServiceEndpoints",value:function(){var t;return BX(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getOIDCServiceEndpoints());case 3:case"end":return e.stop()}}),e,this)})))}
660
+ */},{key:"getOIDCServiceEndpoints",value:function(){var t;return zX(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getOIDCServiceEndpoints());case 3:case"end":return e.stop()}}),e,this)})))}
661
661
  /**
662
662
  * This methods returns the Axios http client.
663
663
  *
@@ -666,7 +666,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
666
666
  * @memberof AsgardeoSPAClient
667
667
  *
668
668
  * @preserve
669
- */},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==lv.WebWorker)return this._client.getHttpClient();throw new Hv("AUTH_CLIENT-GHC-IV01","client","getHttpClient","Http client cannot be returned.","The http client cannot be returned when the storage type is set to webWorker.")}throw new Hv("AUTH_CLIENT-GHC-NF02","client","getHttpClient","The SDK is not initialized.","The SDK has not been initialized yet. Initialize the SDK suing the initialize method before calling this method.")}
669
+ */},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==nv.WebWorker)return this._client.getHttpClient();throw new Kv("AUTH_CLIENT-GHC-IV01","client","getHttpClient","Http client cannot be returned.","The http client cannot be returned when the storage type is set to webWorker.")}throw new Kv("AUTH_CLIENT-GHC-NF02","client","getHttpClient","The SDK is not initialized.","The SDK has not been initialized yet. Initialize the SDK suing the initialize method before calling this method.")}
670
670
  /**
671
671
  * This method decodes the payload of the id token and returns it.
672
672
  *
@@ -686,7 +686,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
686
686
  * @memberof AsgardeoSPAClient
687
687
  *
688
688
  * @preserve
689
- */},{key:"getDecodedIDToken",value:function(){var t;return BX(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getDecodedIDToken());case 3:case"end":return e.stop()}}),e,this)})))}
689
+ */},{key:"getDecodedIDToken",value:function(){var t;return zX(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getDecodedIDToken());case 3:case"end":return e.stop()}}),e,this)})))}
690
690
  /**
691
691
  * This method return the ID token.
692
692
  *
@@ -702,7 +702,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
702
702
  * @memberof AsgardeoAuthClient
703
703
  *
704
704
  * @preserve
705
- */},{key:"getIDToken",value:function(){var t;return BX(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getIDToken());case 3:case"end":return e.stop()}}),e,this)})))}
705
+ */},{key:"getIDToken",value:function(){var t;return zX(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getIDToken());case 3:case"end":return e.stop()}}),e,this)})))}
706
706
  /**
707
707
  * This method return a Promise that resolves with the access token.
708
708
  *
@@ -724,7 +724,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
724
724
  * @memberof AsgardeoSPAClient
725
725
  *
726
726
  * @preserve
727
- */},{key:"getAccessToken",value:function(){return BX(this,void 0,void 0,zX.mark((function t(){var e;return zX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:if(!this._storage||![(lv.WebWorker,lv.BrowserMemory)].includes(this._storage)){t.next=4;break}return t.abrupt("return",Promise.reject(new Hv("AUTH_CLIENT-GAT-IV01","client","getAccessToken","The access token cannot be returned.","The access token cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return e=this._client,t.abrupt("return",e.getAccessToken());case 6:case"end":return t.stop()}}),t,this)})))}
727
+ */},{key:"getAccessToken",value:function(){return zX(this,void 0,void 0,BX.mark((function t(){var e;return BX.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:if(!this._storage||![(nv.WebWorker,nv.BrowserMemory)].includes(this._storage)){t.next=4;break}return t.abrupt("return",Promise.reject(new Kv("AUTH_CLIENT-GAT-IV01","client","getAccessToken","The access token cannot be returned.","The access token cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return e=this._client,t.abrupt("return",e.getAccessToken());case 6:case"end":return t.stop()}}),t,this)})))}
728
728
  /**
729
729
  * This method refreshes the access token.
730
730
  *
@@ -745,7 +745,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
745
745
  * @memberof AsgardeoSPAClient
746
746
  *
747
747
  * @preserve
748
- */},{key:"refreshAccessToken",value:function(){var t;return BX(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.refreshAccessToken());case 3:case"end":return e.stop()}}),e,this)})))}
748
+ */},{key:"refreshAccessToken",value:function(){var t;return zX(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.refreshAccessToken());case 3:case"end":return e.stop()}}),e,this)})))}
749
749
  /**
750
750
  * This method specifies if the user is authenticated or not.
751
751
  *
@@ -754,7 +754,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
754
754
  * @memberof AsgardeoSPAClient
755
755
  *
756
756
  * @preserve
757
- */},{key:"isAuthenticated",value:function(){var t;return BX(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.isAuthenticated());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"on",value:function(t,e,n){var r,i,c,l;return BX(this,void 0,void 0,zX.mark((function o(){return zX.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,this._isInitialized();case 2:if(!e||"function"!=typeof e){o.next=28;break}o.t0=t,o.next=o.t0===ov.SignIn?6:o.t0===ov.SignOut?8:o.t0===ov.RevokeAccessToken?11:o.t0===ov.Initialize?13:o.t0===ov.HttpRequestError?15:o.t0===ov.HttpRequestFinish?17:o.t0===ov.HttpRequestStart?19:o.t0===ov.HttpRequestSuccess?21:o.t0===ov.CustomGrant?23:25;break;case 6:return this._onSignInCallback=e,o.abrupt("break",26);case 8:return this._onSignOutCallback=e,kv.isSignOutSuccessful()&&this._onSignOutCallback(),o.abrupt("break",26);case 11:return this._onEndUserSession=e,o.abrupt("break",26);case 13:return this._onInitialize=e,o.abrupt("break",26);case 15:return null===(r=this._client)||void 0===r||r.setHttpRequestErrorCallback(e),o.abrupt("break",26);case 17:return null===(i=this._client)||void 0===i||i.setHttpRequestFinishCallback(e),o.abrupt("break",26);case 19:return null===(c=this._client)||void 0===c||c.setHttpRequestStartCallback(e),o.abrupt("break",26);case 21:return null===(l=this._client)||void 0===l||l.setHttpRequestSuccessCallback(e),o.abrupt("break",26);case 23:return n&&this._onCustomGrant.set(n,e),o.abrupt("break",26);case 25:throw new Hv("AUTH_CLIENT-ON-IV01","client","on","Invalid hook.","The provided hook is invalid.");case 26:o.next=29;break;case 28:throw new Hv("AUTH_CLIENT-ON-IV02","client","on","Invalid callback function.","The provided callback function is invalid.");case 29:case"end":return o.stop()}}),o,this)})))}
757
+ */},{key:"isAuthenticated",value:function(){var t;return zX(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.isAuthenticated());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"on",value:function(t,e,n){var i,r,c,l;return zX(this,void 0,void 0,BX.mark((function o(){return BX.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,this._isInitialized();case 2:if(!e||"function"!=typeof e){o.next=28;break}o.t0=t,o.next=o.t0===iv.SignIn?6:o.t0===iv.SignOut?8:o.t0===iv.RevokeAccessToken?11:o.t0===iv.Initialize?13:o.t0===iv.HttpRequestError?15:o.t0===iv.HttpRequestFinish?17:o.t0===iv.HttpRequestStart?19:o.t0===iv.HttpRequestSuccess?21:o.t0===iv.CustomGrant?23:25;break;case 6:return this._onSignInCallback=e,o.abrupt("break",26);case 8:return this._onSignOutCallback=e,Jv.isSignOutSuccessful()&&this._onSignOutCallback(),o.abrupt("break",26);case 11:return this._onEndUserSession=e,o.abrupt("break",26);case 13:return this._onInitialize=e,o.abrupt("break",26);case 15:return null===(i=this._client)||void 0===i||i.setHttpRequestErrorCallback(e),o.abrupt("break",26);case 17:return null===(r=this._client)||void 0===r||r.setHttpRequestFinishCallback(e),o.abrupt("break",26);case 19:return null===(c=this._client)||void 0===c||c.setHttpRequestStartCallback(e),o.abrupt("break",26);case 21:return null===(l=this._client)||void 0===l||l.setHttpRequestSuccessCallback(e),o.abrupt("break",26);case 23:return n&&this._onCustomGrant.set(n,e),o.abrupt("break",26);case 25:throw new Kv("AUTH_CLIENT-ON-IV01","client","on","Invalid hook.","The provided hook is invalid.");case 26:o.next=29;break;case 28:throw new Kv("AUTH_CLIENT-ON-IV02","client","on","Invalid callback function.","The provided callback function is invalid.");case 29:case"end":return o.stop()}}),o,this)})))}
758
758
  /**
759
759
  * This method enables callback functions attached to the http client.
760
760
  *
@@ -770,7 +770,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
770
770
  * @memberof AsgardeoSPAClient
771
771
  *
772
772
  * @preserve
773
- */},{key:"enableHttpHandler",value:function(){var t;return BX(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.enableHttpHandler());case 3:case"end":return e.stop()}}),e,this)})))}
773
+ */},{key:"enableHttpHandler",value:function(){var t;return zX(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.enableHttpHandler());case 3:case"end":return e.stop()}}),e,this)})))}
774
774
  /**
775
775
  * This method disables callback functions attached to the http client.
776
776
  *
@@ -786,7 +786,7 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
786
786
  * @memberof AsgardeoSPAClient
787
787
  *
788
788
  * @preserve
789
- */},{key:"disableHttpHandler",value:function(){var t;return BX(this,void 0,void 0,zX.mark((function e(){return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.disableHttpHandler());case 3:case"end":return e.stop()}}),e,this)})))}
789
+ */},{key:"disableHttpHandler",value:function(){var t;return zX(this,void 0,void 0,BX.mark((function e(){return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.disableHttpHandler());case 3:case"end":return e.stop()}}),e,this)})))}
790
790
  /**
791
791
  * This method updates the configuration that was passed into the constructor when instantiating this class.
792
792
  *
@@ -806,5 +806,5 @@ function(t){var e;return BX(this,void 0,void 0,zX.mark((function n(){var r,i,c,l
806
806
  * @memberof AsgardeoAuthClient
807
807
  *
808
808
  * @preserve
809
- */},{key:"updateConfig",value:function(t){return BX(this,void 0,void 0,zX.mark((function e(){var n,r;return zX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(this._storage!==lv.WebWorker){e.next=8;break}return n=this._client,e.next=6,n.updateConfig(t);case 6:e.next=11;break;case 8:return r=this._client,e.next=11,r.updateConfig(t);case 11:return e.abrupt("return");case 12:case"end":return e.stop()}}),e,this)})))}}],[{key:"getInstance",value:function(e){var n,r;return e&&(null===(n=this._instances)||void 0===n?void 0:n.get(e))?this._instances.get(e):!e&&(null===(r=this._instances)||void 0===r?void 0:r.get("primaryInstance"))?this._instances.get("primaryInstance"):e?(this._instances.set(e,new t(e)),this._instances.get(e)):(this._instances.set("primaryInstance",new t("primaryInstance")),this._instances.get("primaryInstance"))}}]),t}();function eS(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=sG(t);if(e){var i=sG(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return uG(this,n)}}tS._instances=new Map;var nS=function(t){oG(n,t);var e=eS(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).onmessage=function(){return null},t}return n}(pG(Worker));export{_f as AUTHORIZATION_CODE,mv as AsgardeoAuthClient,tS as AsgardeoSPAClient,Pf as CLIENT_ID_TAG,Af as CLIENT_SECRET_TAG,ov as Hooks,eV as OIDC_SCOPE,Of as PKCE_CODE_VERIFIER,Ef as REFRESH_TOKEN_TIMER,xf as ResponseMode,Qf as SCOPE_TAG,qf as SESSION_STATE,tV as SIGN_OUT_SUCCESS_PARAM,$f as SIGN_OUT_URL,kv as SPAUtils,lv as Storage,Bf as Stores,jf as TOKEN_TAG,Mf as USERNAME_TAG,nS as WebWorkerClass};
809
+ */},{key:"updateConfig",value:function(t){return zX(this,void 0,void 0,BX.mark((function e(){var n,i;return BX.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(this._storage!==nv.WebWorker){e.next=8;break}return n=this._client,e.next=6,n.updateConfig(t);case 6:e.next=11;break;case 8:return i=this._client,e.next=11,i.updateConfig(t);case 11:return e.abrupt("return");case 12:case"end":return e.stop()}}),e,this)})))}}],[{key:"getInstance",value:function(e){var n,i;return e&&(null===(n=this._instances)||void 0===n?void 0:n.get(e))?this._instances.get(e):!e&&(null===(i=this._instances)||void 0===i?void 0:i.get("primaryInstance"))?this._instances.get("primaryInstance"):e?(this._instances.set(e,new t(e)),this._instances.get(e)):(this._instances.set("primaryInstance",new t("primaryInstance")),this._instances.get("primaryInstance"))}}]),t}();function _v(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,i=sg(t);if(e){var r=sg(this).constructor;n=Reflect.construct(i,arguments,r)}else n=i.apply(this,arguments);return ug(this,n)}}Ov._instances=new Map;var qv=function(t){og(n,t);var e=_v(n);function n(){var t;return wX(this,n),(t=e.apply(this,arguments)).onmessage=function(){return null},t}return n}(pg(Worker));export{Of as AUTHORIZATION_CODE,av as AsgardeoAuthClient,Ov as AsgardeoSPAClient,Pf as CLIENT_ID_TAG,Qf as CLIENT_SECRET_TAG,iv as Hooks,tV as OIDC_SCOPE,Ef as PKCE_CODE_VERIFIER,Df as REFRESH_TOKEN_TIMER,xf as ResponseMode,Mf as SCOPE_TAG,_f as SESSION_STATE,$f as SIGN_OUT_SUCCESS_PARAM,qf as SIGN_OUT_URL,Jv as SPAUtils,nv as Storage,zf as Stores,jf as TOKEN_TAG,Af as USERNAME_TAG,qv as WebWorkerClass};
810
810
  //# sourceMappingURL=asgardeo-spa.production.esm.js.map