demio-ui 1.0.73 → 1.0.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.css +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/esm/index.css +1 -1
- package/dist/esm/index.js +1 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -3,5 +3,5 @@ import*as e from"react";import t,{createContext as n,useMemo as r,createElement
|
|
|
3
3
|
Copyright (c) 2018 Jed Watson.
|
|
4
4
|
Licensed under the MIT License (MIT), see
|
|
5
5
|
http://jedwatson.github.io/classnames
|
|
6
|
-
*/$t=Xt,function(){var e={}.hasOwnProperty;function t(){for(var n=[],r=0;r<arguments.length;r++){var o=arguments[r];if(o){var a=typeof o;if("string"===a||"number"===a)n.push(o);else if(Array.isArray(o)){if(o.length){var i=t.apply(null,o);i&&n.push(i)}}else if("object"===a){if(o.toString!==Object.prototype.toString&&!o.toString.toString().includes("[native code]")){n.push(o.toString());continue}for(var l in o)e.call(o,l)&&o[l]&&n.push(l)}}}return n.join(" ")}$t.exports?(t.default=t,$t.exports=t):window.classNames=t}();var Yt,Jt,Qt=Gt(Xt.exports);function en(){return en=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},en.apply(this,arguments)}var tn=function(t){return e.createElement("svg",en({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"close_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Yt||(Yt=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Jt||(Jt=e.createElement("g",{mask:"url(#close_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m12 13.054-5.073 5.073a.724.724 0 0 1-.522.212.707.707 0 0 1-.532-.212.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527L10.946 12 5.873 6.927a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.532.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 10.946l5.073-5.073a.724.724 0 0 1 .522-.212.707.707 0 0 1 .532.212c.145.145.217.32.217.527a.717.717 0 0 1-.217.527L13.054 12l5.073 5.073c.138.139.21.313.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.217L12 13.054Z"}))))},nn={overlay:"Alert-modules_overlay__4XRHj","overlay-show":"Alert-modules_overlay-show__rdwHo",close:"Alert-modules_close__dyL0l",content:"Alert-modules_content__Y7nMS","content-show":"Alert-modules_content-show__ncLtG",title:"Alert-modules_title__e8UHT",description:"Alert-modules_description__wyWR-",buttons:"Alert-modules_buttons__cOEDw"},rn={button:"Button-modules_button__tpJr3",secondary:"Button-modules_secondary__JGOIF",outline:"Button-modules_outline__R9gjd",danger:"Button-modules_danger__eTzli",small:"Button-modules_small__dNTOw",large:"Button-modules_large__5tvgy",prefix:"Button-modules_prefix__86hpR",suffix:"Button-modules_suffix__5uHiO",fullWidth:"Button-modules_fullWidth__3ET8J"},on={loader:"Loader-modules_loader__waPdv",rotate:"Loader-modules_rotate__vBNW3",spin:"Loader-modules_spin__i7TnV",small:"Loader-modules_small__ACDdJ",inheritColor:"Loader-modules_inheritColor__4aWvb"};function an(e){var n,r=e.size,o=void 0===r?"medium":r,a=e.className,i=void 0===a?"":a,l=e.inheritColor,c=void 0!==l&&l;return t.createElement("span",{className:Qt("demio-ui-loader",on.loader,(n={},n[on[o]]=o,n[on.inheritColor]=c,n[i]=i,n))})}var ln=t.forwardRef((function(e,n){var r,o=e.disabled,a=void 0!==o&&o,i=e.children,l=e.onClick,c=e.size,s=void 0===c?"medium":c,u=e.variant,d=void 0===u?"primary":u,p=e.type,f=void 0===p?"button":p,m=e.prefix,v=void 0===m?"":m,h=e.suffix,g=void 0===h?"":h,y=e.className,w=void 0===y?"":y,b=e.fullWidth,_=void 0!==b&&b,E=e.showLoader,x=void 0!==E&&E,O=de(e,["disabled","children","onClick","size","variant","type","prefix","suffix","className","fullWidth","showLoader"]);return t.createElement("button",ue({ref:n,type:f,disabled:a,className:Qt("demio-ui-button",rn.button,(r={},r[w]=w,r[rn[s]]=s,r[rn[d]]=d,r[rn.fullWidth]=_,r)),onClick:l},O),(v||x)&&t.createElement("span",{className:rn.prefix},x?t.createElement(an,{size:"small",inheritColor:!0}):v),i,g&&t.createElement("span",{className:rn.suffix},g))}));function cn(e){var n=e.open,r=e.actionText,o=void 0===r?"OK":r,a=e.onActionClick,i=e.cancelText,l=void 0===i?"Cancel":i,c=e.onCancelClick,s=e.title,u=e.description,d=void 0===u?"":u,p=e.showLoader,f=void 0!==p&&p,m=e.isOkDisabled,v=void 0!==m&&m,h=e.actionButtonType,g=void 0===h?"danger":h,y=e.maxWidth,w=void 0===y?"540px":y,b=e.onClose;return t.createElement(Ft,{open:n},t.createElement(Vt,{className:nn.portal},t.createElement(Bt,{className:nn.overlay}),t.createElement(Ut,{className:Qt("demio-ui-alert",nn.content),style:{maxWidth:w}},t.createElement("button",{className:nn.close,onClick:b||c,"data-testid":"close-button"},t.createElement(tn,null)),t.createElement(Kt,{className:nn.title},s),d&&t.createElement(qt,{className:nn.description},d),t.createElement("div",{className:nn.buttons},t.createElement(Wt,{asChild:!0},t.createElement(ln,{onClick:c,variant:"outline"},l)),t.createElement(zt,{asChild:!0},t.createElement(ln,{onClick:a,disabled:v,variant:g,showLoader:f},o))))))}function sn(e){const t=c({value:e,previous:e});return r((()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous)),[e])}function un(e){const[t,n]=u(void 0);return D((()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const t=new ResizeObserver((t=>{if(!Array.isArray(t))return;if(!t.length)return;const r=t[0];let o,a;if("borderBoxSize"in r){const e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;o=t.inlineSize,a=t.blockSize}else o=e.offsetWidth,a=e.offsetHeight;n({width:o,height:a})}));return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)}),[e]),t}const dn="Checkbox",[pn,fn]=x(dn),[mn,vn]=pn(dn),hn=d(((e,t)=>{const{__scopeCheckbox:n,name:r,checked:a,defaultChecked:i,required:l,disabled:d,value:p="on",onCheckedChange:f,...m}=e,[v,h]=u(null),g=k(t,(e=>h(e))),y=c(!1),w=!v||Boolean(v.closest("form")),[b=!1,_]=I({prop:a,defaultProp:i,onChange:f}),x=c(b);return s((()=>{const e=null==v?void 0:v.form;if(e){const t=()=>_(x.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}}),[v,_]),o(mn,{scope:n,state:b,disabled:d},o(Z.button,E({type:"button",role:"checkbox","aria-checked":yn(b)?"mixed":b,"aria-required":l,"data-state":wn(b),"data-disabled":d?"":void 0,disabled:d,value:p},m,{ref:g,onKeyDown:A(e.onKeyDown,(e=>{"Enter"===e.key&&e.preventDefault()})),onClick:A(e.onClick,(e=>{_((e=>!!yn(e)||!e)),w&&(y.current=e.isPropagationStopped(),y.current||e.stopPropagation())}))})),w&&o(gn,{control:v,bubbles:!y.current,name:r,value:p,checked:b,required:l,disabled:d,style:{transform:"translateX(-100%)"}}))})),gn=e=>{const{control:t,checked:n,bubbles:r=!0,...a}=e,i=c(null),l=sn(n),u=un(t);return s((()=>{const e=i.current,t=window.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(t,"checked").set;if(l!==n&&o){const t=new Event("click",{bubbles:r});e.indeterminate=yn(n),o.call(e,!yn(n)&&n),e.dispatchEvent(t)}}),[l,n,r]),o("input",E({type:"checkbox","aria-hidden":!0,defaultChecked:!yn(n)&&n},a,{tabIndex:-1,ref:i,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function yn(e){return"indeterminate"===e}function wn(e){return yn(e)?"indeterminate":e?"checked":"unchecked"}const bn=hn,_n=d(((e,t)=>{const{__scopeCheckbox:n,forceMount:r,...a}=e,i=vn("CheckboxIndicator",n);return o(ae,{present:r||yn(i.state)||!0===i.state},o(Z.span,E({"data-state":wn(i.state),"data-disabled":i.disabled?"":void 0},a,{ref:t,style:{pointerEvents:"none",...e.style}})))}));var En,xn,On="Checkbox-modules_container__psQsQ",Cn="Checkbox-modules_root__iysyc",kn="Checkbox-modules_uncheckIcon__fVOb2",An="Checkbox-modules_indicator__JaSwR",Dn="Checkbox-modules_label__4TV-f",Pn="Checkbox-modules_disabled__eKbuP";function Tn(){return Tn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Tn.apply(this,arguments)}var Mn,Sn;function In(){return In=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},In.apply(this,arguments)}var Ln,Nn,jn=function(t){return e.createElement("svg",In({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"keyboard_arrow_down_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Mn||(Mn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Sn||(Sn=e.createElement("g",{mask:"url(#keyboard_arrow_down_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 14.677a.93.93 0 0 1-.34-.066.84.84 0 0 1-.293-.19L6.873 9.927a.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 12.946l4.073-4.073a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217.145.145.217.32.217.527a.717.717 0 0 1-.217.527l-4.494 4.494a.83.83 0 0 1-.633.256Z"}))))};function Rn(){return Rn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Rn.apply(this,arguments)}var Hn,Zn;function Fn(){return Fn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Fn.apply(this,arguments)}var Vn,Bn;function Un(){return Un=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Un.apply(this,arguments)}var zn,Wn;function Kn(){return Kn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Kn.apply(this,arguments)}var qn,Gn;function $n(){return $n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},$n.apply(this,arguments)}var Xn,Yn;function Jn(){return Jn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Jn.apply(this,arguments)}var Qn,er,tr=function(t){return e.createElement("svg",Jn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"checkbox_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Xn||(Xn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Yn||(Yn=e.createElement("g",{mask:"url(#checkbox_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"m10.6 13.4-2.15-2.15a.948.948 0 0 0-.7-.275.948.948 0 0 0-.7.275.948.948 0 0 0-.275.7c0 .283.092.517.275.7L9.9 15.5c.2.2.433.3.7.3.267 0 .5-.1.7-.3l5.65-5.65a.948.948 0 0 0 .275-.7.948.948 0 0 0-.275-.7.948.948 0 0 0-.7-.275.948.948 0 0 0-.7.275L10.6 13.4ZM5 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 19V5c0-.55.196-1.02.587-1.413A1.926 1.926 0 0 1 5 3h14c.55 0 1.02.196 1.413.587C20.803 3.98 21 4.45 21 5v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 21H5Z"}))))};function nr(){return nr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},nr.apply(this,arguments)}var rr,or,ar=function(t){return e.createElement("svg",nr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"checkbox_uncheck_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Qn||(Qn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),er||(er=e.createElement("g",{mask:"url(#checkbox_uncheck_svg__a)"},e.createElement("path",{fill:"#838B97",d:"M5 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 19V5c0-.55.196-1.02.587-1.413A1.926 1.926 0 0 1 5 3h14c.55 0 1.02.196 1.413.587C20.803 3.98 21 4.45 21 5v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 21H5Zm0-2h14V5H5v14Z"}))))};function ir(){return ir=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ir.apply(this,arguments)}var lr,cr;function sr(){return sr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},sr.apply(this,arguments)}var ur,dr;function pr(){return pr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},pr.apply(this,arguments)}var fr,mr;function vr(){return vr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},vr.apply(this,arguments)}var hr,gr;function yr(){return yr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yr.apply(this,arguments)}var wr,br;function _r(){return _r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_r.apply(this,arguments)}var Er,xr;function Or(){return Or=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Or.apply(this,arguments)}var Cr,kr;function Ar(){return Ar=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ar.apply(this,arguments)}var Dr;function Pr(){return Pr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Pr.apply(this,arguments)}var Tr,Mr;function Sr(){return Sr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Sr.apply(this,arguments)}var Ir,Lr;function Nr(){return Nr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Nr.apply(this,arguments)}var jr,Rr;function Hr(){return Hr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Hr.apply(this,arguments)}var Zr,Fr;function Vr(){return Vr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Vr.apply(this,arguments)}var Br,Ur;function zr(){return zr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},zr.apply(this,arguments)}var Wr;function Kr(){return Kr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Kr.apply(this,arguments)}var qr,Gr=function(t){return e.createElement("svg",Kr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 22 16"},t),Wr||(Wr=e.createElement("path",{fill:"#838B97",d:"M11 2.335a9.77 9.77 0 0 1 8.82 5.5 9.76 9.76 0 0 1-8.82 5.5 9.76 9.76 0 0 1-8.82-5.5 9.77 9.77 0 0 1 8.82-5.5zm0-2c-5 0-9.27 3.11-11 7.5 1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zm0 5a2.5 2.5 0 0 1 0 5 2.5 2.5 0 0 1 0-5zm0-2c-2.48 0-4.5 2.02-4.5 4.5s2.02 4.5 4.5 4.5 4.5-2.02 4.5-4.5-2.02-4.5-4.5-4.5z"})))};function $r(){return $r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},$r.apply(this,arguments)}var Xr,Yr=function(t){return e.createElement("svg",$r({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 20"},t),qr||(qr=e.createElement("path",{fill:"#838B97",d:"M23.775 17.898 1.35.367A.6.6 0 0 0 .507.46L.132.93a.6.6 0 0 0 .093.844l22.425 17.53a.6.6 0 0 0 .843-.093l.375-.468a.6.6 0 0 0-.093-.844zM11.13 5.728l5.054 3.952a4.189 4.189 0 0 0-5.055-3.952zm1.74 8.215L7.816 9.99a4.19 4.19 0 0 0 5.054 3.952zM12 4.435c3.7 0 7.09 2.063 8.922 5.4a10.71 10.71 0 0 1-1.65 2.258l1.416 1.106a12.518 12.518 0 0 0 1.983-2.817 1.214 1.214 0 0 0 0-1.094C20.636 5.32 16.61 2.635 12 2.635c-1.376 0-2.69.263-3.924.706l1.74 1.36A9.843 9.843 0 0 1 12 4.435zm0 10.8c-3.7 0-7.09-2.062-8.922-5.4.45-.821 1.004-1.58 1.651-2.257L3.314 6.472a12.51 12.51 0 0 0-1.983 2.816 1.213 1.213 0 0 0 0 1.095C3.364 14.35 7.39 17.035 12 17.035c1.376 0 2.689-.264 3.924-.705l-1.74-1.36a9.86 9.86 0 0 1-2.184.265z"})))};function Jr(){return Jr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Jr.apply(this,arguments)}var Qr;function eo(){return eo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},eo.apply(this,arguments)}var to,no;function ro(){return ro=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ro.apply(this,arguments)}var oo,ao;function io(){return io=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},io.apply(this,arguments)}var lo,co;function so(){return so=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},so.apply(this,arguments)}var uo,po;function fo(){return fo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},fo.apply(this,arguments)}var mo,vo;function ho(){return ho=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ho.apply(this,arguments)}var go,yo;function wo(){return wo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},wo.apply(this,arguments)}var bo,_o;function Eo(){return Eo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Eo.apply(this,arguments)}var xo,Oo;function Co(){return Co=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Co.apply(this,arguments)}var ko,Ao;function Do(){return Do=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Do.apply(this,arguments)}var Po,To;function Mo(){return Mo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Mo.apply(this,arguments)}var So,Io;function Lo(){return Lo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Lo.apply(this,arguments)}var No,jo;function Ro(){return Ro=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ro.apply(this,arguments)}var Ho=Object.freeze({__proto__:null,AddIcon:function(t){return e.createElement("svg",Tn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"add_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},En||(En=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),xn||(xn=e.createElement("g",{mask:"url(#add_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 18.75a.725.725 0 0 1-.535-.216.726.726 0 0 1-.215-.534v-5.25H6a.726.726 0 0 1-.534-.216A.726.726 0 0 1 5.25 12c0-.213.072-.391.216-.535A.726.726 0 0 1 6 11.25h5.25V6c0-.213.072-.39.216-.534A.726.726 0 0 1 12 5.25c.213 0 .391.072.535.216A.726.726 0 0 1 12.75 6v5.25H18c.212 0 .39.072.534.216a.726.726 0 0 1 .216.534c0 .213-.072.391-.216.535a.726.726 0 0 1-.534.215h-5.25V18c0 .212-.072.39-.216.534a.726.726 0 0 1-.534.216Z"}))))},ArrowDownIcon:jn,ArrowLeftIcon:function(t){return e.createElement("svg",Rn({xmlns:"http://www.w3.org/2000/svg",width:18,height:18,fill:"none"},t),Ln||(Ln=e.createElement("g",{clipPath:"url(#arrow-left_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m9.207 16.57.696-.697a.422.422 0 0 0 0-.596L4.45 9.823h12.003a.422.422 0 0 0 .422-.422v-.984a.422.422 0 0 0-.422-.422H4.45l5.453-5.454a.422.422 0 0 0 0-.596l-.696-.696a.422.422 0 0 0-.596 0L1.249 8.61a.422.422 0 0 0 0 .596L8.61 16.57a.422.422 0 0 0 .596 0Z"}))),Nn||(Nn=e.createElement("defs",null,e.createElement("clipPath",{id:"arrow-left_svg__a"},e.createElement("path",{fill:"#fff",d:"M0 0h18v18H0z"})))))},BlockIcon:function(t){return e.createElement("svg",Fn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"block_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Hn||(Hn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Zn||(Zn=e.createElement("g",{mask:"url(#block_svg__a)"},e.createElement("path",{fill:"#42454B",d:"M12.002 21.5a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-.938-.16-1.842-.48-2.71a8.124 8.124 0 0 0-1.374-2.382L6.908 18.146a7.93 7.93 0 0 0 2.382 1.378A7.839 7.839 0 0 0 12 20Zm-6.146-2.908L17.092 5.854a7.62 7.62 0 0 0-2.375-1.383A7.947 7.947 0 0 0 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 .938.159 1.842.476 2.71a7.93 7.93 0 0 0 1.378 2.382Z"}))))},BlurOnIcon:function(t){return e.createElement("svg",Un({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"blur_on_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Vn||(Vn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Bn||(Bn=e.createElement("g",{mask:"url(#blur_on_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M3 14.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm3 8.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 17.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658A.893.893 0 0 1 6 13.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265A.893.893 0 0 1 5.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 6 5.077c.262 0 .48.088.658.265A.893.893 0 0 1 6.923 6c0 .262-.088.48-.265.658A.893.893 0 0 1 6 6.923Zm4.002 8.423c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM10 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265A.893.893 0 0 1 9.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 10 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM10 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4.002 11.846c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM14 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 14 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM14 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4 15.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 5.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm3 7.577a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Z"}))))},CachedIcon:function(t){return e.createElement("svg",Kn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"cached_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},zn||(zn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Wn||(Wn=e.createElement("g",{mask:"url(#cached_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12.05 19.75c-2.163 0-4.004-.753-5.522-2.258C5.009 15.987 4.25 14.156 4.25 12v-.78l-1.323 1.322a.725.725 0 0 1-.522.213.707.707 0 0 1-.532-.213.718.718 0 0 1-.217-.527c0-.206.072-.382.217-.527l2.494-2.494A.867.867 0 0 1 5 8.724c.241 0 .452.09.633.27l2.494 2.495c.138.138.21.312.212.521a.707.707 0 0 1-.212.532.718.718 0 0 1-.527.218.718.718 0 0 1-.527-.218L5.75 11.22V12c0 1.737.612 3.213 1.835 4.428 1.223 1.215 2.711 1.822 4.465 1.822.292 0 .584-.02.874-.06.29-.04.577-.107.859-.204a.879.879 0 0 1 .603.02.81.81 0 0 1 .426.396.678.678 0 0 1 .018.585.664.664 0 0 1-.444.388c-.376.133-.762.23-1.155.288a8.049 8.049 0 0 1-1.181.087Zm-.1-14c-.292 0-.584.02-.874.06-.29.04-.577.107-.859.203a.901.901 0 0 1-.61-.02.808.808 0 0 1-.434-.395.655.655 0 0 1-.023-.57.646.646 0 0 1 .423-.388c.387-.133.78-.231 1.176-.295a7.593 7.593 0 0 1 1.201-.095c2.163 0 4.004.753 5.522 2.258C18.991 8.013 19.75 9.844 19.75 12v.78l1.323-1.322a.725.725 0 0 1 .522-.213.707.707 0 0 1 .532.213c.145.144.217.32.217.527a.717.717 0 0 1-.217.527l-2.494 2.494a.867.867 0 0 1-.633.27.867.867 0 0 1-.633-.27l-2.494-2.495a.724.724 0 0 1-.212-.522.707.707 0 0 1 .212-.531.717.717 0 0 1 .527-.218c.206 0 .382.073.527.218l1.323 1.323V12c0-1.737-.611-3.213-1.835-4.428-1.223-1.215-2.711-1.822-4.465-1.822Z"}))))},CalendarIcon:function(t){return e.createElement("svg",$n({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 32 32"},t),e.createElement("mask",{id:"calendar_svg__a",width:32,height:32,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},qn||(qn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h32v32H0z"}))),Gn||(Gn=e.createElement("g",{mask:"url(#calendar_svg__a)"},e.createElement("path",{fill:"#11B06E",d:"M6.667 29.333a2.568 2.568 0 0 1-1.884-.783A2.568 2.568 0 0 1 4 26.666V8c0-.734.261-1.361.783-1.883a2.568 2.568 0 0 1 1.884-.784H8V4c0-.378.128-.695.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.127.95.383.256.255.384.572.384.95v1.333h10.666V4c0-.378.128-.695.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.127.95.383.255.255.383.572.383.95v1.333h1.333c.734 0 1.361.261 1.884.784.522.522.783 1.15.783 1.883v18.666c0 .734-.261 1.362-.783 1.884a2.568 2.568 0 0 1-1.884.783H6.667Zm0-2.666h18.666V13.332H6.667v13.333Zm9.333-8a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.378.127-.694.383-.95A1.29 1.29 0 0 1 16 16c.378 0 .694.128.95.383.256.256.383.572.383.95s-.127.695-.383.95a1.29 1.29 0 0 1-.95.383Zm-5.333 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.384-.95c0-.378.128-.694.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.128.95.383.255.256.383.572.383.95s-.128.695-.383.95a1.29 1.29 0 0 1-.95.383Zm10.666 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.378.128-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.128.95.383.256.256.384.572.384.95s-.128.695-.384.95a1.29 1.29 0 0 1-.95.383ZM16 24a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.377.127-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .694.128.95.384.256.255.383.572.383.95 0 .377-.127.694-.383.95A1.29 1.29 0 0 1 16 24Zm-5.333 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.384-.95c0-.377.128-.694.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.128.95.384.255.255.383.572.383.95 0 .377-.128.694-.383.95a1.29 1.29 0 0 1-.95.383Zm10.666 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.377.128-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.128.95.384.256.255.384.572.384.95 0 .377-.128.694-.384.95a1.29 1.29 0 0 1-.95.383Z"}))))},CheckCircleIcon:function(t){return e.createElement("svg",ir({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"check_circle_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},rr||(rr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),or||(or=e.createElement("g",{mask:"url(#check_circle_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m10.58 14.146-2.322-2.323a.724.724 0 0 0-.522-.212.707.707 0 0 0-.532.212.717.717 0 0 0-.217.527c0 .206.072.382.217.527l2.744 2.744a.87.87 0 0 0 .633.271c.24 0 .452-.09.632-.27l5.564-5.564a.725.725 0 0 0 .212-.522.707.707 0 0 0-.212-.532.718.718 0 0 0-.527-.217.717.717 0 0 0-.527.217l-5.142 5.142Zm1.422 7.354a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749Z"}))))},CheckboxIcon:tr,CheckboxUncheckIcon:ar,ClockIcon:function(t){return e.createElement("svg",sr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"clock_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},lr||(lr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),cr||(cr=e.createElement("g",{mask:"url(#clock_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"M13 11.6V8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8v3.975c0 .133.025.263.075.388.05.125.125.237.225.337l3.3 3.3a.948.948 0 0 0 .7.275A.948.948 0 0 0 16 16a.948.948 0 0 0 .275-.7.948.948 0 0 0-.275-.7l-3-3ZM12 22a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12c0-1.383.263-2.683.788-3.9a10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2c1.383 0 2.683.263 3.9.788a10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Zm0-2c2.217 0 4.104-.78 5.663-2.337C19.22 16.104 20 14.217 20 12s-.78-4.104-2.337-5.662C16.104 4.779 14.217 4 12 4s-4.104.78-5.662 2.338C4.779 7.896 4 9.783 4 12s.78 4.104 2.338 5.663C7.896 19.22 9.783 20 12 20Z"}))))},CloseIcon:tn,CustomizeIcon:function(t){return e.createElement("svg",pr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"customize_svg__a",width:25,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ur||(ur=e.createElement("path",{fill:"#D9D9D9",d:"M.5 0h24v24H.5z"}))),dr||(dr=e.createElement("g",{mask:"url(#customize_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"M14.5 21a.968.968 0 0 1-.713-.288A.968.968 0 0 1 13.5 20c0-.283.096-.52.287-.712A.968.968 0 0 1 14.5 19c.783 0 1.48-.154 2.087-.462.609-.309.913-.655.913-1.038 0-.233-.108-.45-.325-.65-.217-.2-.517-.383-.9-.55l1.475-1.475c.533.317.958.692 1.275 1.125.317.433.475.95.475 1.55 0 1.1-.525 1.958-1.575 2.575A6.644 6.644 0 0 1 14.5 21Zm-9.425-7.65c-.483-.283-.867-.612-1.15-.987-.283-.375-.425-.83-.425-1.363 0-.7.258-1.287.775-1.762.517-.476 1.442-1.005 2.775-1.588 1.05-.483 1.72-.82 2.013-1.013.291-.191.437-.404.437-.637 0-.267-.162-.5-.488-.7C8.688 5.1 8.183 5 7.5 5c-.417 0-.767.05-1.05.15-.283.1-.542.267-.775.5A1.124 1.124 0 0 1 5 5.975a.908.908 0 0 1-.725-.225.938.938 0 0 1-.375-.65.908.908 0 0 1 .225-.725c.317-.383.77-.708 1.362-.975C6.08 3.133 6.75 3 7.5 3c1.2 0 2.167.27 2.9.813.733.541 1.1 1.27 1.1 2.187 0 .65-.242 1.233-.725 1.75-.483.517-1.458 1.092-2.925 1.725-.967.417-1.6.725-1.9.925-.3.2-.45.4-.45.6 0 .15.096.296.287.438.192.141.455.279.788.412l-1.5 1.5ZM19.35 10.4 15.1 6.15l1.05-1.05c.4-.4.88-.6 1.438-.6.558 0 1.029.2 1.412.6l1.4 1.4c.4.383.6.854.6 1.412 0 .559-.2 1.038-.6 1.438l-1.05 1.05ZM6.5 19h1.4l7.2-7.2-1.4-1.4-7.2 7.2V19ZM5 21a.48.48 0 0 1-.35-.15.48.48 0 0 1-.15-.35v-3.55c0-.033.05-.15.15-.35l9.05-9.05 4.25 4.25-9.05 9.05c-.033.033-.15.083-.35.15H5Z"}))))},DeleteIcon:function(t){return e.createElement("svg",vr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"delete_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},fr||(fr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),mr||(mr=e.createElement("g",{mask:"url(#delete_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M7.308 20.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6h-.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535.73.73 0 0 1 .215-.535.726.726 0 0 1 .535-.215H9a.84.84 0 0 1 .263-.63.889.889 0 0 1 .64-.255h4.193c.251 0 .465.085.64.254A.84.84 0 0 1 15 4.5h3.75a.73.73 0 0 1 .535.215.726.726 0 0 1 .215.535.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215h-.25v12.692c0 .506-.175.933-.525 1.283-.35.35-.778.525-1.283.525H7.308ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087h9.385a.3.3 0 0 0 .221-.087.3.3 0 0 0 .087-.22V6H7Zm2.404 10.25a.73.73 0 0 0 .215.535.726.726 0 0 0 .535.215.726.726 0 0 0 .534-.215.726.726 0 0 0 .216-.535v-7.5a.726.726 0 0 0-.216-.535.726.726 0 0 0-.534-.215.726.726 0 0 0-.535.215.726.726 0 0 0-.215.535v7.5Zm3.692 0c0 .213.072.391.216.535a.726.726 0 0 0 .534.215.726.726 0 0 0 .535-.215.726.726 0 0 0 .215-.535v-7.5a.726.726 0 0 0-.215-.535.726.726 0 0 0-.535-.215.726.726 0 0 0-.534.215.726.726 0 0 0-.216.535v7.5ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087H7V6Z"}))))},EventDetailsIcon:function(t){return e.createElement("svg",yr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 32 32"},t),e.createElement("mask",{id:"event_details_svg__a",width:32,height:32,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},hr||(hr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h32v32H0z"}))),gr||(gr=e.createElement("g",{mask:"url(#event_details_svg__a)"},e.createElement("path",{fill:"#11B06E",d:"M5.333 26.667a2.568 2.568 0 0 1-1.883-.784A2.568 2.568 0 0 1 2.667 24V8c0-.733.26-1.361.783-1.883a2.568 2.568 0 0 1 1.883-.784h21.334c.733 0 1.36.261 1.883.784.522.522.783 1.15.783 1.883v16c0 .733-.26 1.361-.783 1.883a2.568 2.568 0 0 1-1.883.784H5.333Zm0-2.667h21.334V8H5.333v16ZM8 22.667h16c.378 0 .694-.128.95-.384a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95A1.29 1.29 0 0 0 24 20H8a1.29 1.29 0 0 0-.95.383 1.29 1.29 0 0 0-.383.95c0 .378.127.695.383.95.256.256.572.384.95.384Zm0-5.334h16c.378 0 .694-.127.95-.383a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95 1.29 1.29 0 0 0-.95-.383H8a1.29 1.29 0 0 0-.95.383 1.29 1.29 0 0 0-.383.95c0 .378.127.694.383.95s.572.383.95.383ZM8 12h10.667c.377 0 .694-.128.95-.383a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95 1.29 1.29 0 0 0-.95-.384H8a1.29 1.29 0 0 0-.95.384 1.29 1.29 0 0 0-.383.95c0 .377.127.694.383.95.256.255.572.383.95.383Z"}))))},EventRepeatIcon:function(t){return e.createElement("svg",_r({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"event_repeat_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},wr||(wr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),br||(br=e.createElement("g",{mask:"url(#event_repeat_svg__a)"},e.createElement("path",{fill:"#6C737A",d:"M5 22c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 20V6c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 5 4h1V3c0-.283.096-.52.287-.712A.968.968 0 0 1 7 2c.283 0 .52.096.713.288.191.191.287.429.287.712v1h8V3c0-.283.096-.52.288-.712A.968.968 0 0 1 17 2c.283 0 .52.096.712.288.192.191.288.429.288.712v1h1c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v5c0 .283-.096.52-.288.713A.968.968 0 0 1 20 12a.968.968 0 0 1-.712-.287A.968.968 0 0 1 19 11v-1H5v10h6c.283 0 .52.096.713.288.191.191.287.429.287.712s-.096.52-.287.712A.968.968 0 0 1 11 22H5Zm14 2c-1.067 0-2.02-.296-2.863-.887a4.949 4.949 0 0 1-1.812-2.313.508.508 0 0 1 .063-.538.574.574 0 0 1 .487-.262c.233 0 .446.07.637.212.192.142.346.321.463.538a3.4 3.4 0 0 0 1.25 1.275A3.41 3.41 0 0 0 19 22.5c.967 0 1.792-.342 2.475-1.025A3.372 3.372 0 0 0 22.5 19c0-.967-.342-1.792-1.025-2.475A3.372 3.372 0 0 0 19 15.5a3.404 3.404 0 0 0-2.45 1h.7a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H15a.968.968 0 0 1-.713-.288A.968.968 0 0 1 14 17v-2.25a.728.728 0 0 1 .75-.75.728.728 0 0 1 .75.75v.675c.45-.433.975-.78 1.575-1.038A4.816 4.816 0 0 1 19 14c1.383 0 2.563.488 3.538 1.463C23.512 16.438 24 17.617 24 19s-.488 2.563-1.462 3.538C21.562 23.512 20.383 24 19 24ZM5 8h14V6H5v2Z"}))))},InfoIcon:function(t){return e.createElement("svg",Or({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"info_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Er||(Er=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),xr||(xr=e.createElement("g",{mask:"url(#info_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 16.75a.726.726 0 0 0 .535-.216.726.726 0 0 0 .215-.534v-4.25a.726.726 0 0 0-.216-.534A.727.727 0 0 0 12 11a.725.725 0 0 0-.535.216.726.726 0 0 0-.215.534V16c0 .212.072.39.216.534a.726.726 0 0 0 .534.216Zm0-7.462a.78.78 0 0 0 .575-.232.781.781 0 0 0 .233-.575.782.782 0 0 0-.232-.576.782.782 0 0 0-.576-.232.781.781 0 0 0-.575.232.782.782 0 0 0-.233.576c0 .229.078.42.232.575a.781.781 0 0 0 .576.232Zm.002 12.212a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-2.233-.775-4.125-2.325-5.675C16.125 4.775 14.233 4 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 2.233.775 4.125 2.325 5.675C7.875 19.225 9.767 20 12 20Z"}))))},InfoSolidIcon:function(t){return e.createElement("svg",Ar({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"info-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Cr||(Cr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),kr||(kr=e.createElement("g",{mask:"url(#info-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 17a.97.97 0 0 0 .713-.288A.968.968 0 0 0 13 16v-4a.968.968 0 0 0-.287-.713A.968.968 0 0 0 12 11a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 12v4c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-8c.283 0 .52-.096.713-.287A.967.967 0 0 0 13 8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8c0 .283.096.52.287.713.192.191.43.287.713.287Zm0 13a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12a9.74 9.74 0 0 1 .788-3.9 10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2a9.74 9.74 0 0 1 3.9.788 10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Z"}))))},MagicIcon:function(t){return e.createElement("svg",Pr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),Dr||(Dr=e.createElement("path",{fill:"#02BF6F",d:"M23.341 3.576 20.424.659A2.244 2.244 0 0 0 18.834 0c-.576 0-1.152.22-1.591.66L.659 17.241a2.25 2.25 0 0 0 0 3.182l2.917 2.917c.439.44 1.015.659 1.59.659.576 0 1.152-.22 1.592-.66L23.34 6.759c.879-.879.879-2.303 0-3.182ZM5.167 21.75 2.25 18.833 12.745 8.337l2.918 2.917L5.167 21.75ZM17.254 9.663l-2.918-2.918 4.495-4.495h.003l2.916 2.917-4.496 4.496ZM20.25 13.5 19 16l-2.5 1.25L19 18.5l1.25 2.5 1.25-2.5 2.5-1.25L21.5 16l-1.25-2.5Zm-9.75-9 .75-1.5 1.5-.75-1.5-.75L10.5 0l-.75 1.5-1.5.75 1.5.75.75 1.5Zm-6.75 3L5 5l2.5-1.25L5 2.5 3.75 0 2.5 2.5 0 3.75 2.5 5l1.25 2.5Z"})))},MaterialsIcon:function(t){return e.createElement("svg",Sr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"materials_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Tr||(Tr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Mr||(Mr=e.createElement("g",{mask:"url(#materials_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"m10.825 17.425-2.55 1.6a.493.493 0 0 1-.513.013.46.46 0 0 1-.262-.438v-3.2c0-.2.088-.346.263-.438a.493.493 0 0 1 .512.013l2.55 1.6c.167.1.25.242.25.425a.47.47 0 0 1-.25.425ZM13 10a2.893 2.893 0 0 1-2.125-.875A2.893 2.893 0 0 1 10 7c0-.833.292-1.542.875-2.125A2.893 2.893 0 0 1 13 4h.5a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H13c-.417 0-.77.146-1.063.438A1.446 1.446 0 0 0 11.5 7c0 .417.146.77.438 1.063.291.291.645.437 1.062.437h.5a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H13Zm4 0h-.5a.728.728 0 0 1-.75-.75.728.728 0 0 1 .75-.75h.5c.417 0 .77-.146 1.063-.438.291-.291.437-.645.437-1.062 0-.417-.146-.77-.438-1.063A1.447 1.447 0 0 0 17 5.5h-.5a.728.728 0 0 1-.75-.75.728.728 0 0 1 .75-.75h.5c.833 0 1.542.292 2.125.875S20 6.167 20 7s-.292 1.542-.875 2.125A2.893 2.893 0 0 1 17 10Zm-.75-2.25h-2.5A.728.728 0 0 1 13 7a.728.728 0 0 1 .75-.75h2.5A.728.728 0 0 1 17 7a.728.728 0 0 1-.75.75ZM16.1 14v-2H21V3H9v9H7V3c0-.55.196-1.02.588-1.413A1.926 1.926 0 0 1 9 1h12c.55 0 1.02.196 1.413.587C22.803 1.98 23 2.45 23 3v9c0 .55-.196 1.02-.587 1.412A1.926 1.926 0 0 1 21 14h-4.9ZM3 23c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 1 21v-8c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 3 11h12c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v8c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 15 23H3Zm0-2h12v-8H3v8Z"}))))},MicOffIcon:function(t){return e.createElement("svg",Nr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ir||(Ir=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Lr||(Lr=e.createElement("g",{mask:"url(#mic_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25-1.377-1.376V5a.967.967 0 0 0-.287-.713.968.968 0 0 0-.713-.287.968.968 0 0 0-.712.287.967.967 0 0 0-.288.713v2.535l-1.5-1.5V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.546c-1.511-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.593 6.593 0 0 1-1.65 1.128 5.849 5.849 0 0 1-1.987.554V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOffSolidIcon:function(t){return e.createElement("svg",Hr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},jr||(jr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Rr||(Rr=e.createElement("g",{mask:"url(#mic_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25L9.144 6.036V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.542c-1.511-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.432 6.432 0 0 1-1.65 1.12 6.3 6.3 0 0 1-1.987.566V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOnSolidIcon:function(t){return e.createElement("svg",zr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Br||(Br=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ur||(Ur=e.createElement("g",{mask:"url(#mic-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.542c-1.512-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.295 6.295 0 0 1-1.85 3.814c-1.058 1.057-2.343 1.673-3.854 1.848V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215Z"}))))},MicOnfIcon:function(t){return e.createElement("svg",Vr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Zr||(Zr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Fr||(Fr=e.createElement("g",{mask:"url(#mic_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.546c-1.512-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.273 6.273 0 0 1-1.85 3.809c-1.058 1.054-2.343 1.67-3.854 1.849V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215ZM12 12c.283 0 .52-.096.712-.287A.968.968 0 0 0 13 11V5a.967.967 0 0 0-.288-.713A.968.968 0 0 0 12 4a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 5v6c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))},PasswordEyeCrossedIcon:Yr,PasswordEyeIcon:Gr,PlayIcon:function(t){return e.createElement("svg",Jr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},t),Xr||(Xr=e.createElement("path",{fill:"#42454B",d:"m15.262 6.708-11-6.503C3.37-.323 2 .19 2 1.495V14.5c0 1.172 1.272 1.878 2.263 1.29l11-6.5c.98-.578.984-2.002 0-2.58Z"})))},SmileIcon:function(t){return e.createElement("svg",eo({xmlns:"http://www.w3.org/2000/svg",width:20,height:20,fill:"none"},t),Qr||(Qr=e.createElement("path",{fill:"#9FA6AD",d:"M10 .313A9.686 9.686 0 0 0 .312 10 9.686 9.686 0 0 0 10 19.688 9.686 9.686 0 0 0 19.688 10 9.686 9.686 0 0 0 10 .312Zm0 17.5c-4.309 0-7.813-3.504-7.813-7.813 0-4.309 3.504-7.813 7.813-7.813 4.309 0 7.813 3.504 7.813 7.813 0 4.309-3.504 7.813-7.813 7.813ZM6.875 9.374c.691 0 1.25-.559 1.25-1.25s-.559-1.25-1.25-1.25-1.25.559-1.25 1.25.559 1.25 1.25 1.25Zm6.25 0c.691 0 1.25-.559 1.25-1.25s-.559-1.25-1.25-1.25-1.25.559-1.25 1.25.559 1.25 1.25 1.25Zm.156 2.836A4.263 4.263 0 0 1 10 13.75a4.25 4.25 0 0 1-3.281-1.54.94.94 0 0 0-1.32-.12.94.94 0 0 0-.122 1.32A6.132 6.132 0 0 0 10 15.621c1.828 0 3.55-.805 4.723-2.21a.937.937 0 1 0-1.442-1.2Z"})))},StackedEmailIcon:function(t){return e.createElement("svg",ro({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"stacked_email_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},to||(to=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),no||(no=e.createElement("g",{mask:"url(#stacked_email_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"M7 17c-.55 0-1.02-.196-1.412-.587A1.926 1.926 0 0 1 5 15V5c0-.55.196-1.02.588-1.413A1.926 1.926 0 0 1 7 3h14c.55 0 1.02.196 1.413.587C22.803 3.98 23 4.45 23 5v10c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 21 17H7Zm6.425-5.1L7 7.425V15h14V7.425L14.575 11.9a.964.964 0 0 1-.575.2.964.964 0 0 1-.575-.2ZM14 9.85 21 5H7l7 4.85ZM3 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 1 19V7.5c0-.283.096-.52.288-.713A.968.968 0 0 1 2 6.5c.283 0 .52.096.712.287.192.192.288.43.288.713V19h15.5c.283 0 .52.096.712.288.192.191.288.429.288.712s-.096.52-.288.712A.968.968 0 0 1 18.5 21H3Z"}))))},TodayIcon:function(t){return e.createElement("svg",io({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"today_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},oo||(oo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ao||(ao=e.createElement("g",{mask:"url(#today_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"M9 16.5c-.7 0-1.292-.242-1.775-.725C6.742 15.292 6.5 14.7 6.5 14s.242-1.292.725-1.775C7.708 11.742 8.3 11.5 9 11.5s1.292.242 1.775.725c.483.483.725 1.075.725 1.775s-.242 1.292-.725 1.775c-.483.483-1.075.725-1.775.725ZM5 22c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 20V6c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 5 4h1V3c0-.283.096-.52.287-.712A.968.968 0 0 1 7 2c.283 0 .52.096.713.288.191.191.287.429.287.712v1h8V3c0-.283.096-.52.288-.712A.968.968 0 0 1 17 2c.283 0 .52.096.712.288.192.191.288.429.288.712v1h1c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 22H5Zm0-2h14V10H5v10ZM5 8h14V6H5v2Z"}))))},VideoCamOffIcon:function(t){return e.createElement("svg",so({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},lo||(lo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),co||(co=e.createElement("g",{mask:"url(#videocam_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m20.506 15.852-2.737-2.737v1.896l-1.5-1.5V6.308a.3.3 0 0 0-.086-.221.3.3 0 0 0-.221-.087H8.758l-1.5-1.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.323-.19.507-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.353.044-.507-.11Zm-1.06 5.779L2.036 4.22a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.41 17.41a.684.684 0 0 1 .207.502.727.727 0 0 1-.233.527.724.724 0 0 1-.532.217.692.692 0 0 1-.522-.217ZM4.443 4.519 5.923 6H4.577a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .221.087h11.385a.3.3 0 0 0 .22-.087.3.3 0 0 0 .088-.22v-1.347l1.48 1.48a1.752 1.752 0 0 1-.558 1.187c-.34.325-.75.487-1.23.487H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.48.163-.89.487-1.23.324-.34.72-.527 1.187-.559Z"}))))},VideoCamOffSolidIcon:function(t){return e.createElement("svg",fo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},uo||(uo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),po||(po=e.createElement("g",{mask:"url(#videocam_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M19.471 21.63 2.061 4.222a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.526.217l17.41 17.41a.684.684 0 0 1 .208.502.727.727 0 0 1-.233.527.702.702 0 0 1-.527.212.753.753 0 0 1-.527-.212Zm-1.677-6.618L7.283 4.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.284.22.284.434v7.042c0 .214-.095.359-.284.434a.43.43 0 0 1-.5-.103l-2.736-2.737v1.896ZM4.467 4.518l13.308 13.308c-.017.456-.209.85-.577 1.179-.368.33-.78.494-1.236.494H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.457.168-.869.502-1.237.335-.368.734-.552 1.196-.552Z"}))))},VideoCamOnIcon:function(t){return e.createElement("svg",ho({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},mo||(mo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),vo||(vo=e.createElement("g",{mask:"url(#videocam_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.322-.19.506-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.352.044-.506-.11l-2.737-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Zm0-1.5h11.384a.3.3 0 0 0 .222-.087.3.3 0 0 0 .086-.22V6.307a.3.3 0 0 0-.086-.221.3.3 0 0 0-.222-.087H4.548a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087Z"}))))},VideoCamOnSolidIcon:function(t){return e.createElement("svg",wo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},go||(go=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),yo||(yo=e.createElement("g",{mask:"url(#videocam-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.283.22.283.434v7.042c0 .214-.094.359-.283.434a.43.43 0 0 1-.5-.103l-2.736-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Z"}))))},VolumeOffIcon:function(t){return e.createElement("svg",Eo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},bo||(bo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),_o||(_o=e.createElement("g",{mask:"url(#volume_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Zm-1.5 5.613v-2.196L8.335 11H5.289v2h2.85l2.15 2.15Z"}))))},VolumeOffSolidIcon:function(t){return e.createElement("svg",Co({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},xo||(xo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Oo||(Oo=e.createElement("g",{mask:"url(#volume_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Z"}))))},VolumeUpIcon:function(t){return e.createElement("svg",Do({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_up-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ko||(ko=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ao||(Ao=e.createElement("g",{mask:"url(#volume_up-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.092.797.797 0 0 1-.324-.675.56.56 0 0 1 .124-.36.803.803 0 0 1 .307-.236 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.654.654 0 0 1-.43-.625c0-.275.107-.493.323-.652a.68.68 0 0 1 .7-.086 8.551 8.551 0 0 1 3.83 3.085c.97 1.4 1.454 2.97 1.454 4.711s-.485 3.312-1.454 4.71a8.552 8.552 0 0 1-3.83 3.086ZM4.558 14.5a.875.875 0 0 1-.644-.26.875.875 0 0 1-.26-.644v-3.192c0-.256.086-.47.26-.644a.874.874 0 0 1 .644-.26h2.807l2.752-2.752c.285-.284.612-.348.982-.192.37.157.555.437.555.84v9.208c0 .403-.185.683-.555.84-.37.156-.697.093-.982-.192L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499ZM10.154 8.85 8.004 11h-2.85v2h2.85l2.15 2.15v-6.3Z"}))))},VolumeUpSolidIcon:function(t){return e.createElement("svg",Mo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_up_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Po||(Po=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),To||(To=e.createElement("g",{mask:"url(#volume_up_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.042-.26.124-.363a.803.803 0 0 1 .307-.235 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.658.658 0 0 1-.32-.248.661.661 0 0 1-.11-.375c0-.277.107-.495.323-.654a.68.68 0 0 1 .7-.086 8.547 8.547 0 0 1 3.83 3.087c.97 1.401 1.454 2.97 1.454 4.709 0 1.738-.485 3.308-1.454 4.709a8.547 8.547 0 0 1-3.83 3.087ZM4.558 14.5a.876.876 0 0 1-.646-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .646-.259h2.807l2.752-2.752c.285-.284.612-.349.982-.193.37.156.555.436.555.841v9.208c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499Z"}))))},WarningIcon:function(t){return e.createElement("svg",Lo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"warning-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},So||(So=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Io||(Io=e.createElement("g",{mask:"url(#warning-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M3.426 20.5a.878.878 0 0 1-.772-.452.955.955 0 0 1-.129-.437.816.816 0 0 1 .127-.467l8.561-14.788A.896.896 0 0 1 12 3.904a.897.897 0 0 1 .787.452l8.56 14.788c.093.154.136.31.128.467a.955.955 0 0 1-.129.437.878.878 0 0 1-.771.452H3.425ZM4.45 19h15.1L12 6 4.45 19ZM12 17.808c.229 0 .42-.078.576-.232a.781.781 0 0 0 .232-.576.781.781 0 0 0-.232-.575.782.782 0 0 0-.576-.233.781.781 0 0 0-.575.233.781.781 0 0 0-.233.575c0 .229.078.42.233.576a.781.781 0 0 0 .575.232Zm0-2.616c.213 0 .391-.072.535-.215a.726.726 0 0 0 .215-.535v-3.5a.725.725 0 0 0-.216-.534.726.726 0 0 0-.534-.216.725.725 0 0 0-.534.216.726.726 0 0 0-.216.534v3.5c0 .213.072.391.216.535a.726.726 0 0 0 .534.215Z"}))))},WarningSolidIcon:function(t){return e.createElement("svg",Ro({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"warning_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},No||(No=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),jo||(jo=e.createElement("g",{mask:"url(#warning_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M2.725 21a.973.973 0 0 1-.85-.5 1.098 1.098 0 0 1-.138-.488.898.898 0 0 1 .138-.512l9.25-16a.98.98 0 0 1 .387-.375C11.671 3.042 11.833 3 12 3c.166 0 .329.042.487.125a.983.983 0 0 1 .388.375l9.25 16c.1.167.146.337.137.512a1.098 1.098 0 0 1-.137.488.973.973 0 0 1-.85.5H2.725ZM12 18c.283 0 .52-.096.712-.288A.968.968 0 0 0 13 17a.968.968 0 0 0-.288-.712A.968.968 0 0 0 12 16a.968.968 0 0 0-.713.288A.968.968 0 0 0 11 17c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-3a.97.97 0 0 0 .712-.287A.968.968 0 0 0 13 14v-3a.968.968 0 0 0-.288-.713A.968.968 0 0 0 12 10a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 11v3c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))}});const Zo=d(((e,t)=>o(Z.label,E({},e,{ref:t,onMouseDown:t=>{var n;null===(n=e.onMouseDown)||void 0===n||n.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault()}}))));var Fo={label:"Label-modules_label__rXO6J",semiBold:"Label-modules_semiBold__vTm1B",regular:"Label-modules_regular__F9gNE"},Vo=function(e){return void 0===e&&(e="regular"),"semiBold"===e?Fo.semiBold:Fo.regular};function Bo(e){var n,r=e.htmlFor,o=e.children,a=e.className,i=void 0===a?"":a,l=e.weight,c=void 0===l?"regular":l;return t.createElement(Zo,{htmlFor:r,className:Qt("demio-ui-label",Fo.label,[Vo(c)],(n={},n[i]=!!i,n))},o)}function Uo(e){var n,o=e.children,a=e.id,i=e.checked,l=void 0!==i&&i,c=e.onChange,s=e.disabled,u=void 0!==s&&s,d=e.defaultChecked,p=void 0!==d&&d,f=e.name,m=void 0===f?"":f,v=e.value,h=de(e,["children","id","checked","onChange","disabled","defaultChecked","name","value"]),g=r((function(){return c?{checked:l,onCheckedChange:function(e){return c({checked:e,name:m||a,value:void 0!==v?v:o||""})}}:{}}),[l,c,m,a,v,o]);return t.createElement("div",{className:Qt("demio-ui-checkbox",On,(n={},n[Pn]=u,n))},t.createElement(bn,ue({},h,g,{className:Cn,defaultChecked:p,id:a,name:m||a,disabled:u}),t.createElement(_n,{className:An},t.createElement(tr,null)),t.createElement("span",{className:Qt(An,kn)},t.createElement(ar,null))),t.createElement(Bo,{className:Dn,htmlFor:a,weight:"regular"},o))}var zo={formGroup:"FormGroup-modules_formGroup__Zjh7i",horizontal:"FormGroup-modules_horizontal__9g7gn",vertical:"FormGroup-modules_vertical__yPEor",between:"FormGroup-modules_between__poqnA",start:"FormGroup-modules_start__ylflU",startAlignItems:"FormGroup-modules_startAlignItems__h-nDr",stretchAlignItems:"FormGroup-modules_stretchAlignItems__jg3e0"};function Wo(e){var n,r=e.children,o=e.position,a=void 0===o?"vertical":o,i=e.justify,l=void 0===i?"start":i,c=e.alignItems,s=void 0===c?"start":c;return t.createElement("div",{className:Qt("demio-ui-form-group",zo.formGroup,(n={},n[zo.horizontal]="horizontal"===a,n[zo.vertical]="vertical"===a,n[zo[l]]=!!l,n[zo["".concat(s,"AlignItems")]]=!!s,n))},r)}var Ko={root:"Input-modules_root__vdxX5",label:"Input-modules_label__2RN8-",optional:"Input-modules_optional__M78yJ",static:"Input-modules_static__cpwFU",correctedTop:"Input-modules_correctedTop__I3y-S",inputWrapper:"Input-modules_inputWrapper__KPYyg",input:"Input-modules_input__y9hSj",startAdornment:"Input-modules_startAdornment__Xs8xw",endAdornment:"Input-modules_endAdornment__z04mP",footer:"Input-modules_footer__R8J8U",togglePasswordButton:"Input-modules_togglePasswordButton__KGieB",footerMessage:"Input-modules_footerMessage__akEOh",counter:"Input-modules_counter__HFA5P",isDisabled:"Input-modules_isDisabled__bHf8L",hint:"Input-modules_hint__e-KNY",isError:"Input-modules_isError__1B8e9",isFocused:"Input-modules_isFocused__Oa1Re"},qo={root:"InputHint-modules_root__bJTnj",error:"InputHint-modules_error__HZnQD"};function Go(e){var n,r=e.children,o=e.type,a=void 0===o?"hint":o,i=e.className,l=void 0===i?"":i;return t.createElement("div",{className:Qt("demio-ui-input-hint",qo.root,(n={},n[qo.error]="error"===a,n[l]=!!l,n)),"data-html":a},r)}var $o=d((function(e,n){var r,o,a,i,l=e.autoComplete,c=void 0===l?"off":l,s=e.className,d=void 0===s?"":s,p=e.counterVisibilityLimit,f=void 0===p?.8:p,m=e.defaultValue,v=void 0===m?"":m,h=e.disabled,g=void 0!==h&&h,y=e.endAdornment,w=void 0===y?null:y,b=e.endAdornmentClassName,_=void 0===b?"":b,E=e.errorMessage,x=void 0===E?"":E,O=e.hint,C=void 0===O?"":O,k=e.id,A=e.inputWrapperClass,D=void 0===A?"":A,P=e.isLabelStatic,T=void 0!==P&&P,M=e.label,S=void 0===M?"":M,I=e.maxLength,L=void 0===I?150:I,N=e.name,j=void 0===N?"":N,R=e.onBlur,H=e.onChange,Z=e.onFocus,F=e.optionalText,V=void 0===F?"Optional":F,B=e.placeholder,U=void 0===B?"":B,z=e.required,W=void 0!==z&&z,K=e.startAdornment,q=void 0===K?null:K,G=e.type,$=void 0===G?"text":G,X=e.value,Y=de(e,["autoComplete","className","counterVisibilityLimit","defaultValue","disabled","endAdornment","endAdornmentClassName","errorMessage","hint","id","inputWrapperClass","isLabelStatic","label","maxLength","name","onBlur","onChange","onFocus","optionalText","placeholder","required","startAdornment","type","value"]),J=void 0!==X,Q=void 0!==v,ee=u(!1),te=ee[0],ne=ee[1],re=u(Q?v:""),oe=re[0],ae=re[1],ie=u(!1),le=ie[0],ce=ie[1],se="password"===$,pe=se?te?"text":"password":$,fe=J?X:oe,me=fe.length,ve=me>=L*f;return t.createElement("div",{className:Qt("demio-ui-input","demio-ui-input-".concat($),Ko.root,(r={},r[d]=!!d,r[Ko.isDisabled]=g,r[Ko.isFocused]=le||fe.length>0,r[Ko.hasStartAdornment]=!!q,r[Ko.isError]=!!x,r)),"data-html":"container"},S&&t.createElement("label",{htmlFor:k,className:Qt(Ko.label,(o={},o[Ko.static]=T,o)),"data-html":"label"},S),!W&&t.createElement("span",{className:Qt(Ko.optional,(a={},a[Ko.correctedTop]=T,a)),"data-html":"optional"},V),t.createElement("div",{className:Qt(Ko.inputWrapper,D),"data-html":"wrapper"},q&&t.createElement("div",{className:Ko.startAdornment,"data-html":"start-adornment"},q),t.createElement("input",ue({},Y,{type:pe,id:k,ref:n,name:j||k,className:Ko.input,placeholder:U,required:W,"data-html":"input",disabled:g,autoComplete:c,maxLength:L,onChange:function(e){H&&H(e),J||ae(e.target.value)},value:fe,onFocus:function(e){Z&&Z(e),ce(!0)},onBlur:function(e){R&&R(e),ce(!1)}})),w&&t.createElement("div",{className:Qt(Ko.endAdornment,(i={},i[_]=!!_,i)),"data-html":"end-adornment"},w)),t.createElement("div",{className:Ko.footer,"data-html":"footer"},t.createElement("div",{className:Ko.footerMessage},x&&t.createElement(Go,{type:"error"},x),C&&!x&&t.createElement(Go,{className:Ko.hint},C)),t.createElement(Go,{className:Ko.counter},ve&&"".concat(me," / ").concat(L))),se&&t.createElement("button",{type:"button",className:Ko.togglePasswordButton,onClick:function(){ne(!te)}},te?t.createElement(Gr,null):t.createElement(Yr,null)))})),Xo="Modal-modules_overlay__V-vTn",Yo="Modal-modules_header__-dxAm",Jo="Modal-modules_close__CwIjR",Qo="Modal-modules_title__3ehge",ea="Modal-modules_titleCentered__Qqy8u",ta="Modal-modules_content__sK9HS",na="Modal-modules_body__8Khpx";function ra(e){var n,r,o,a=e.children,i=e.contentClassName,l=void 0===i?"":i,c=e.hideCloseButton,s=void 0!==c&&c,u=e.maxHeight,d=void 0===u?"auto":u,p=e.open,f=e.onOpenChange,m=e.overlayClassName,v=void 0===m?"":m,h=e.title,g=e.width,y=void 0===g?"432px":g;return t.createElement(Et,{open:p,onOpenChange:f},t.createElement(xt,null,t.createElement(Ot,{className:Qt("demio-ui-modal-overlay",Xo,(n={},n[v]=!!v,n))},t.createElement(Ct,{className:Qt("demio-ui-modal-content",ta,(r={},r[l]=!!l,r)),style:{maxHeight:d,width:y}},t.createElement("div",{className:Yo,"data-html":"header"},h&&t.createElement(kt,{className:Qt(Qo,(o={},o[ea]=!!s,o)),"data-html":"title"},h),!s&&t.createElement(Dt,{className:Jo,"data-html":"close-btn"},t.createElement(tn,null))),t.createElement("div",{className:na,"data-html":"content"},a)))))}function oa(e){return e.split("-")[1]}function aa(e){return"y"===e?"height":"width"}function ia(e){return e.split("-")[0]}function la(e){return["top","bottom"].includes(ia(e))?"x":"y"}function ca(e,t,n){let{reference:r,floating:o}=e;const a=r.x+r.width/2-o.width/2,i=r.y+r.height/2-o.height/2,l=la(t),c=aa(l),s=r[c]/2-o[c]/2,u="x"===l;let d;switch(ia(t)){case"top":d={x:a,y:r.y-o.height};break;case"bottom":d={x:a,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:i};break;case"left":d={x:r.x-o.width,y:i};break;default:d={x:r.x,y:r.y}}switch(oa(t)){case"start":d[l]-=s*(n&&u?-1:1);break;case"end":d[l]+=s*(n&&u?-1:1)}return d}function sa(e,t){return"function"==typeof e?e(t):e}function ua(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function da(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function pa(e,t){var n;void 0===t&&(t={});const{x:r,y:o,platform:a,rects:i,elements:l,strategy:c}=e,{boundary:s="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:f=0}=sa(t,e),m=ua(f),v=l[p?"floating"===d?"reference":"floating":d],h=da(await a.getClippingRect({element:null==(n=await(null==a.isElement?void 0:a.isElement(v)))||n?v:v.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(l.floating)),boundary:s,rootBoundary:u,strategy:c})),g="floating"===d?{...i.floating,x:r,y:o}:i.reference,y=await(null==a.getOffsetParent?void 0:a.getOffsetParent(l.floating)),w=await(null==a.isElement?void 0:a.isElement(y))&&await(null==a.getScale?void 0:a.getScale(y))||{x:1,y:1},b=da(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({rect:g,offsetParent:y,strategy:c}):g);return{top:(h.top-b.top+m.top)/w.y,bottom:(b.bottom-h.bottom+m.bottom)/w.y,left:(h.left-b.left+m.left)/w.x,right:(b.right-h.right+m.right)/w.x}}const fa=Math.min,ma=Math.max;function va(e,t,n){return ma(e,fa(t,n))}const ha=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:i,elements:l}=t,{element:c,padding:s=0}=sa(e,t)||{};if(null==c)return{};const u=ua(s),d={x:n,y:r},p=la(o),f=aa(p),m=await i.getDimensions(c),v="y"===p,h=v?"top":"left",g=v?"bottom":"right",y=v?"clientHeight":"clientWidth",w=a.reference[f]+a.reference[p]-d[p]-a.floating[f],b=d[p]-a.reference[p],_=await(null==i.getOffsetParent?void 0:i.getOffsetParent(c));let E=_?_[y]:0;E&&await(null==i.isElement?void 0:i.isElement(_))||(E=l.floating[y]||a.floating[f]);const x=w/2-b/2,O=E/2-m[f]/2-1,C=fa(u[h],O),k=fa(u[g],O),A=C,D=E-m[f]-k,P=E/2-m[f]/2+x,T=va(A,P,D),M=null!=oa(o)&&P!=T&&a.reference[f]/2-(P<A?C:k)-m[f]/2<0;return{[p]:d[p]-(M?P<A?A-P:D-P:0),data:{[p]:T,centerOffset:P-T}}}}),ga=["top","right","bottom","left"],ya={left:"right",right:"left",bottom:"top",top:"bottom"};function wa(e){return e.replace(/left|right|bottom|top/g,(e=>ya[e]))}const ba={start:"end",end:"start"};function _a(e){return e.replace(/start|end/g,(e=>ba[e]))}const Ea=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:a,initialPlacement:i,platform:l,elements:c}=t,{mainAxis:s=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...v}=sa(e,t),h=ia(r),g=ia(i)===i,y=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=d||(g||!m?[wa(i)]:function(e){const t=wa(e);return[_a(e),t,_a(t)]}(i));d||"none"===f||w.push(...function(e,t,n,r){const o=oa(e);let a=function(e,t,n){const r=["left","right"],o=["right","left"],a=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?a:i;default:return[]}}(ia(e),"start"===n,r);return o&&(a=a.map((e=>e+"-"+o)),t&&(a=a.concat(a.map(_a)))),a}(i,m,f,y));const b=[i,...w],_=await pa(t,v),E=[];let x=(null==(n=o.flip)?void 0:n.overflows)||[];if(s&&E.push(_[h]),u){const{main:e,cross:t}=function(e,t,n){void 0===n&&(n=!1);const r=oa(e),o=la(e),a=aa(o);let i="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[a]>t.floating[a]&&(i=wa(i)),{main:i,cross:wa(i)}}(r,a,y);E.push(_[e],_[t])}if(x=[...x,{placement:r,overflows:E}],!E.every((e=>e<=0))){var O,C;const e=((null==(O=o.flip)?void 0:O.index)||0)+1,t=b[e];if(t)return{data:{index:e,overflows:x},reset:{placement:t}};let n=null==(C=x.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:C.placement;if(!n)switch(p){case"bestFit":{var k;const e=null==(k=x.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:k[0];e&&(n=e);break}case"initialPlacement":n=i}if(r!==n)return{reset:{placement:n}}}return{}}}};function xa(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Oa(e){return ga.some((t=>e[t]>=0))}const Ca=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=sa(e,t);switch(r){case"referenceHidden":{const e=xa(await pa(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Oa(e)}}}case"escaped":{const e=xa(await pa(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Oa(e)}}}default:return{}}}}};const ka=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(e,t){const{placement:n,platform:r,elements:o}=e,a=await(null==r.isRTL?void 0:r.isRTL(o.floating)),i=ia(n),l=oa(n),c="x"===la(n),s=["left","top"].includes(i)?-1:1,u=a&&c?-1:1,d=sa(t,e);let{mainAxis:p,crossAxis:f,alignmentAxis:m}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return l&&"number"==typeof m&&(f="end"===l?-1*m:m),c?{x:f*u,y:p*s}:{x:p*s,y:f*u}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function Aa(e){return"x"===e?"y":"x"}const Da=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:i=!1,limiter:l={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=sa(e,t),s={x:n,y:r},u=await pa(t,c),d=la(ia(o)),p=Aa(d);let f=s[d],m=s[p];if(a){const e="y"===d?"bottom":"right";f=va(f+u["y"===d?"top":"left"],f,f-u[e])}if(i){const e="y"===p?"bottom":"right";m=va(m+u["y"===p?"top":"left"],m,m-u[e])}const v=l.fn({...t,[d]:f,[p]:m});return{...v,data:{x:v.x-n,y:v.y-r}}}}},Pa=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:a,middlewareData:i}=t,{offset:l=0,mainAxis:c=!0,crossAxis:s=!0}=sa(e,t),u={x:n,y:r},d=la(o),p=Aa(d);let f=u[d],m=u[p];const v=sa(l,t),h="number"==typeof v?{mainAxis:v,crossAxis:0}:{mainAxis:0,crossAxis:0,...v};if(c){const e="y"===d?"height":"width",t=a.reference[d]-a.floating[e]+h.mainAxis,n=a.reference[d]+a.reference[e]-h.mainAxis;f<t?f=t:f>n&&(f=n)}if(s){var g,y;const e="y"===d?"width":"height",t=["top","left"].includes(ia(o)),n=a.reference[p]-a.floating[e]+(t&&(null==(g=i.offset)?void 0:g[p])||0)+(t?0:h.crossAxis),r=a.reference[p]+a.reference[e]+(t?0:(null==(y=i.offset)?void 0:y[p])||0)-(t?h.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[d]:f,[p]:m}}}},Ta=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:a}=t,{apply:i=(()=>{}),...l}=sa(e,t),c=await pa(t,l),s=ia(n),u=oa(n),d="x"===la(n),{width:p,height:f}=r.floating;let m,v;"top"===s||"bottom"===s?(m=s,v=u===(await(null==o.isRTL?void 0:o.isRTL(a.floating))?"start":"end")?"left":"right"):(v=s,m="end"===u?"top":"bottom");const h=f-c[m],g=p-c[v],y=!t.middlewareData.shift;let w=h,b=g;if(d){const e=p-c.left-c.right;b=u||y?fa(g,e):e}else{const e=f-c.top-c.bottom;w=u||y?fa(h,e):e}if(y&&!u){const e=ma(c.left,0),t=ma(c.right,0),n=ma(c.top,0),r=ma(c.bottom,0);d?b=p-2*(0!==e||0!==t?e+t:ma(c.left,c.right)):w=f-2*(0!==n||0!==r?n+r:ma(c.top,c.bottom))}await i({...t,availableWidth:b,availableHeight:w});const _=await o.getDimensions(a.floating);return p!==_.width||f!==_.height?{reset:{rects:!0}}:{}}}};function Ma(e){var t;return(null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function Sa(e){return Ma(e).getComputedStyle(e)}function Ia(e){return e instanceof Ma(e).Node}function La(e){return Ia(e)?(e.nodeName||"").toLowerCase():""}function Na(e){return e instanceof Ma(e).HTMLElement}function ja(e){return e instanceof Ma(e).Element}function Ra(e){if("undefined"==typeof ShadowRoot)return!1;return e instanceof Ma(e).ShadowRoot||e instanceof ShadowRoot}function Ha(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=Sa(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function Za(e){return["table","td","th"].includes(La(e))}function Fa(e){const t=Va(),n=Sa(e);return"none"!==n.transform||"none"!==n.perspective||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function Va(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function Ba(e){return["html","body","#document"].includes(La(e))}const Ua=Math.min,za=Math.max,Wa=Math.round;function Ka(e){const t=Sa(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Na(e),a=o?e.offsetWidth:n,i=o?e.offsetHeight:r,l=Wa(n)!==a||Wa(r)!==i;return l&&(n=a,r=i),{width:n,height:r,fallback:l}}function qa(e){return ja(e)?e:e.contextElement}const Ga={x:1,y:1};function $a(e){const t=qa(e);if(!Na(t))return Ga;const n=t.getBoundingClientRect(),{width:r,height:o,fallback:a}=Ka(t);let i=(a?Wa(n.width):n.width)/r,l=(a?Wa(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}const Xa={x:0,y:0};function Ya(e,t,n){var r,o;if(void 0===t&&(t=!0),!Va())return Xa;const a=e?Ma(e):window;return!n||t&&n!==a?Xa:{x:(null==(r=a.visualViewport)?void 0:r.offsetLeft)||0,y:(null==(o=a.visualViewport)?void 0:o.offsetTop)||0}}function Ja(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const o=e.getBoundingClientRect(),a=qa(e);let i=Ga;t&&(r?ja(r)&&(i=$a(r)):i=$a(e));const l=Ya(a,n,r);let c=(o.left+l.x)/i.x,s=(o.top+l.y)/i.y,u=o.width/i.x,d=o.height/i.y;if(a){const e=Ma(a),t=r&&ja(r)?Ma(r):r;let n=e.frameElement;for(;n&&r&&t!==e;){const e=$a(n),t=n.getBoundingClientRect(),r=getComputedStyle(n);t.x+=(n.clientLeft+parseFloat(r.paddingLeft))*e.x,t.y+=(n.clientTop+parseFloat(r.paddingTop))*e.y,c*=e.x,s*=e.y,u*=e.x,d*=e.y,c+=t.x,s+=t.y,n=Ma(n).frameElement}}return da({width:u,height:d,x:c,y:s})}function Qa(e){return((Ia(e)?e.ownerDocument:e.document)||window.document).documentElement}function ei(e){return ja(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ti(e){return Ja(Qa(e)).left+ei(e).scrollLeft}function ni(e){if("html"===La(e))return e;const t=e.assignedSlot||e.parentNode||Ra(e)&&e.host||Qa(e);return Ra(t)?t.host:t}function ri(e){const t=ni(e);return Ba(t)?t.ownerDocument.body:Na(t)&&Ha(t)?t:ri(t)}function oi(e,t){var n;void 0===t&&(t=[]);const r=ri(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=Ma(r);return o?t.concat(a,a.visualViewport||[],Ha(r)?r:[]):t.concat(r,oi(r))}function ai(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=Ma(e),r=Qa(e),o=n.visualViewport;let a=r.clientWidth,i=r.clientHeight,l=0,c=0;if(o){a=o.width,i=o.height;const e=Va();(!e||e&&"fixed"===t)&&(l=o.offsetLeft,c=o.offsetTop)}return{width:a,height:i,x:l,y:c}}(e,n);else if("document"===t)r=function(e){const t=Qa(e),n=ei(e),r=e.ownerDocument.body,o=za(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=za(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let i=-n.scrollLeft+ti(e);const l=-n.scrollTop;return"rtl"===Sa(r).direction&&(i+=za(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:i,y:l}}(Qa(e));else if(ja(t))r=function(e,t){const n=Ja(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=Na(e)?$a(e):{x:1,y:1};return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:o*a.x,y:r*a.y}}(t,n);else{const n=Ya(e);r={...t,x:t.x-n.x,y:t.y-n.y}}return da(r)}function ii(e,t){const n=ni(e);return!(n===t||!ja(n)||Ba(n))&&("fixed"===Sa(n).position||ii(n,t))}function li(e,t){return Na(e)&&"fixed"!==Sa(e).position?t?t(e):e.offsetParent:null}function ci(e,t){const n=Ma(e);if(!Na(e))return n;let r=li(e,t);for(;r&&Za(r)&&"static"===Sa(r).position;)r=li(r,t);return r&&("html"===La(r)||"body"===La(r)&&"static"===Sa(r).position&&!Fa(r))?n:r||function(e){let t=ni(e);for(;Na(t)&&!Ba(t);){if(Fa(t))return t;t=ni(t)}return null}(e)||n}function si(e,t,n){const r=Na(t),o=Qa(t),a="fixed"===n,i=Ja(e,!0,a,t);let l={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(r||!r&&!a)if(("body"!==La(t)||Ha(o))&&(l=ei(t)),Na(t)){const e=Ja(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else o&&(c.x=ti(o));return{x:i.left+l.scrollLeft-c.x,y:i.top+l.scrollTop-c.y,width:i.width,height:i.height}}const ui={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[..."clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let r=oi(e).filter((e=>ja(e)&&"body"!==La(e))),o=null;const a="fixed"===Sa(e).position;let i=a?ni(e):e;for(;ja(i)&&!Ba(i);){const t=Sa(i),n=Fa(i);n||"fixed"!==t.position||(o=null),(a?!n&&!o:!n&&"static"===t.position&&o&&["absolute","fixed"].includes(o.position)||Ha(i)&&!n&&ii(e,i))?r=r.filter((e=>e!==i)):o=t,i=ni(i)}return t.set(e,r),r}(t,this._c):[].concat(n),r],i=a[0],l=a.reduce(((e,n)=>{const r=ai(t,n,o);return e.top=za(r.top,e.top),e.right=Ua(r.right,e.right),e.bottom=Ua(r.bottom,e.bottom),e.left=za(r.left,e.left),e}),ai(t,i,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=Na(n),a=Qa(n);if(n===a)return t;let i={scrollLeft:0,scrollTop:0},l={x:1,y:1};const c={x:0,y:0};if((o||!o&&"fixed"!==r)&&(("body"!==La(n)||Ha(a))&&(i=ei(n)),Na(n))){const e=Ja(n);l=$a(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}return{width:t.width*l.x,height:t.height*l.y,x:t.x*l.x-i.scrollLeft*l.x+c.x,y:t.y*l.y-i.scrollTop*l.y+c.y}},isElement:ja,getDimensions:function(e){return Ka(e)},getOffsetParent:ci,getDocumentElement:Qa,getScale:$a,async getElementRects(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||ci,a=this.getDimensions;return{reference:si(t,await o(n),r),floating:{x:0,y:0,...await a(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>"rtl"===Sa(e).direction};function di(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:i=!0,animationFrame:l=!1}=r,c=o||a?[...ja(e)?oi(e):e.contextElement?oi(e.contextElement):[],...oi(t)]:[];c.forEach((e=>{const t=!ja(e)&&e.toString().includes("V");!o||l&&!t||e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)}));let s,u=null;i&&(u=new ResizeObserver((()=>{n()})),ja(e)&&!l&&u.observe(e),ja(e)||!e.contextElement||l||u.observe(e.contextElement),u.observe(t));let d=l?Ja(e):null;return l&&function t(){const r=Ja(e);!d||r.x===d.x&&r.y===d.y&&r.width===d.width&&r.height===d.height||n();d=r,s=requestAnimationFrame(t)}(),n(),()=>{var e;c.forEach((e=>{o&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)})),null==(e=u)||e.disconnect(),u=null,l&&cancelAnimationFrame(s)}}const pi=(e,t,n)=>{const r=new Map,o={platform:ui,...n},a={...o.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:i}=n,l=a.filter(Boolean),c=await(null==i.isRTL?void 0:i.isRTL(t));let s=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=ca(s,r,c),p=r,f={},m=0;for(let n=0;n<l.length;n++){const{name:a,fn:v}=l[n],{x:h,y:g,data:y,reset:w}=await v({x:u,y:d,initialPlacement:r,placement:p,strategy:o,middlewareData:f,rects:s,platform:i,elements:{reference:e,floating:t}});u=null!=h?h:u,d=null!=g?g:d,f={...f,[a]:{...f[a],...y}},w&&m<=50&&(m++,"object"==typeof w&&(w.placement&&(p=w.placement),w.rects&&(s=!0===w.rects?await i.getElementRects({reference:e,floating:t,strategy:o}):w.rects),({x:u,y:d}=ca(s,p,c))),n=-1)}return{x:u,y:d,placement:p,strategy:o,middlewareData:f}})(e,t,{...o,platform:a})},fi=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"==typeof e?e(t):e;return n&&(o=n,{}.hasOwnProperty.call(o,"current"))?null!=n.current?ha({element:n.current,padding:r}).fn(t):{}:n?ha({element:n,padding:r}).fn(t):{};var o}});var mi="undefined"!=typeof document?l:s;function vi(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;0!=r--;)if(!vi(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){const n=o[r];if(("_owner"!==n||!e.$$typeof)&&!vi(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function hi(e){if("undefined"==typeof window)return 1;return(e.ownerDocument.defaultView||window).devicePixelRatio||1}function gi(e,t){const n=hi(e);return Math.round(t*n)/n}function yi(t){const n=e.useRef(t);return mi((()=>{n.current=t})),n}const wi=d(((e,t)=>{const{children:n,width:r=10,height:a=5,...i}=e;return o(Z.svg,E({},i,{ref:t,width:r,height:a,viewBox:"0 0 30 10",preserveAspectRatio:"none"}),e.asChild?n:o("polygon",{points:"0,0 30,0 15,10"}))})),bi="Popper",[_i,Ei]=x(bi),[xi,Oi]=_i(bi),Ci=d(((e,t)=>{const{__scopePopper:n,virtualRef:r,...a}=e,i=Oi("PopperAnchor",n),l=c(null),u=k(t,l);return s((()=>{i.onAnchorChange((null==r?void 0:r.current)||l.current)})),r?null:o(Z.div,E({},a,{ref:u}))})),ki="PopperContent",[Ai,Di]=_i(ki),Pi=d(((t,n)=>{var r,a,i,l,c,s,d,p;const{__scopePopper:f,side:m="bottom",sideOffset:v=0,align:h="center",alignOffset:g=0,arrowPadding:w=0,collisionBoundary:b=[],collisionPadding:_=0,sticky:x="partial",hideWhenDetached:O=!1,avoidCollisions:C=!0,onPlaced:A,...P}=t,T=Oi(ki,f),[M,I]=u(null),L=k(n,(e=>I(e))),[N,j]=u(null),R=un(N),H=null!==(r=null==R?void 0:R.width)&&void 0!==r?r:0,F=null!==(a=null==R?void 0:R.height)&&void 0!==a?a:0,V=m+("center"!==h?"-"+h:""),B="number"==typeof _?_:{top:0,right:0,bottom:0,left:0,..._},U=Array.isArray(b)?b:[b],z=U.length>0,W={padding:B,boundary:U.filter(Mi),altBoundary:z},{refs:K,floatingStyles:q,placement:G,isPositioned:$,middlewareData:X}=function(t){void 0===t&&(t={});const{placement:n="bottom",strategy:r="absolute",middleware:o=[],platform:a,elements:{reference:i,floating:l}={},transform:c=!0,whileElementsMounted:s,open:u}=t,[d,p]=e.useState({x:0,y:0,strategy:r,placement:n,middlewareData:{},isPositioned:!1}),[f,m]=e.useState(o);vi(f,o)||m(o);const[v,h]=e.useState(null),[g,w]=e.useState(null),b=e.useCallback((e=>{e!=O.current&&(O.current=e,h(e))}),[h]),_=e.useCallback((e=>{e!==C.current&&(C.current=e,w(e))}),[w]),E=i||v,x=l||g,O=e.useRef(null),C=e.useRef(null),k=e.useRef(d),A=yi(s),D=yi(a),P=e.useCallback((()=>{if(!O.current||!C.current)return;const e={placement:n,strategy:r,middleware:f};D.current&&(e.platform=D.current),pi(O.current,C.current,e).then((e=>{const t={...e,isPositioned:!0};T.current&&!vi(k.current,t)&&(k.current=t,y.flushSync((()=>{p(t)})))}))}),[f,n,r,D]);mi((()=>{!1===u&&k.current.isPositioned&&(k.current.isPositioned=!1,p((e=>({...e,isPositioned:!1}))))}),[u]);const T=e.useRef(!1);mi((()=>(T.current=!0,()=>{T.current=!1})),[]),mi((()=>{if(E&&(O.current=E),x&&(C.current=x),E&&x){if(A.current)return A.current(E,x,P);P()}}),[E,x,P,A]);const M=e.useMemo((()=>({reference:O,floating:C,setReference:b,setFloating:_})),[b,_]),S=e.useMemo((()=>({reference:E,floating:x})),[E,x]),I=e.useMemo((()=>{const e={position:r,left:0,top:0};if(!S.floating)return e;const t=gi(S.floating,d.x),n=gi(S.floating,d.y);return c?{...e,transform:"translate("+t+"px, "+n+"px)",...hi(S.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}}),[r,c,S.floating,d.x,d.y]);return e.useMemo((()=>({...d,update:P,refs:M,elements:S,floatingStyles:I})),[d,P,M,S,I])}({strategy:"fixed",placement:V,whileElementsMounted:di,elements:{reference:T.anchor},middleware:[ka({mainAxis:v+F,alignmentAxis:g}),C&&Da({mainAxis:!0,crossAxis:!1,limiter:"partial"===x?Pa():void 0,...W}),C&&Ea({...W}),Ta({...W,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{const{width:o,height:a}=t.reference,i=e.floating.style;i.setProperty("--radix-popper-available-width",`${n}px`),i.setProperty("--radix-popper-available-height",`${r}px`),i.setProperty("--radix-popper-anchor-width",`${o}px`),i.setProperty("--radix-popper-anchor-height",`${a}px`)}}),N&&fi({element:N,padding:w}),Si({arrowWidth:H,arrowHeight:F}),O&&Ca({strategy:"referenceHidden"})]}),[Y,J]=Ii(G),Q=S(A);D((()=>{$&&(null==Q||Q())}),[$,Q]);const ee=null===(i=X.arrow)||void 0===i?void 0:i.x,te=null===(l=X.arrow)||void 0===l?void 0:l.y,ne=0!==(null===(c=X.arrow)||void 0===c?void 0:c.centerOffset),[re,oe]=u();return D((()=>{M&&oe(window.getComputedStyle(M).zIndex)}),[M]),o("div",{ref:K.setFloating,"data-radix-popper-content-wrapper":"",style:{...q,transform:$?q.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:re,"--radix-popper-transform-origin":[null===(s=X.transformOrigin)||void 0===s?void 0:s.x,null===(d=X.transformOrigin)||void 0===d?void 0:d.y].join(" ")},dir:t.dir},o(Ai,{scope:f,placedSide:Y,onArrowChange:j,arrowX:ee,arrowY:te,shouldHideArrow:ne},o(Z.div,E({"data-side":Y,"data-align":J},P,{ref:L,style:{...P.style,animation:$?void 0:"none",opacity:null!==(p=X.hide)&&void 0!==p&&p.referenceHidden?0:void 0}}))))})),Ti={top:"bottom",right:"left",bottom:"top",left:"right"};function Mi(e){return null!==e}const Si=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,a,i;const{placement:l,rects:c,middlewareData:s}=t,u=0!==(null===(n=s.arrow)||void 0===n?void 0:n.centerOffset),d=u?0:e.arrowWidth,p=u?0:e.arrowHeight,[f,m]=Ii(l),v={start:"0%",center:"50%",end:"100%"}[m],h=(null!==(r=null===(o=s.arrow)||void 0===o?void 0:o.x)&&void 0!==r?r:0)+d/2,g=(null!==(a=null===(i=s.arrow)||void 0===i?void 0:i.y)&&void 0!==a?a:0)+p/2;let y="",w="";return"bottom"===f?(y=u?v:`${h}px`,w=-p+"px"):"top"===f?(y=u?v:`${h}px`,w=`${c.floating.height+p}px`):"right"===f?(y=-p+"px",w=u?v:`${g}px`):"left"===f&&(y=`${c.floating.width+p}px`,w=u?v:`${g}px`),{data:{x:y,y:w}}}});function Ii(e){const[t,n="center"]=e.split("-");return[t,n]}const Li=e=>{const{__scopePopper:t,children:n}=e,[r,a]=u(null);return o(xi,{scope:t,anchor:r,onAnchorChange:a},n)},Ni=Ci,ji=Pi,Ri=d((function(e,t){const{__scopePopper:n,...r}=e,a=Di("PopperArrow",n),i=Ti[a.placedSide];return o("span",{ref:a.onArrowChange,style:{position:"absolute",left:a.arrowX,top:a.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a.placedSide],visibility:a.shouldHideArrow?"hidden":void 0}},o(wi,E({},r,{ref:t,style:{...r.style,display:"block"}})))})),Hi="Popover",[Zi,Fi]=x(Hi,[Ei]),Vi=Ei(),[Bi,Ui]=Zi(Hi),zi=d(((e,t)=>{const{__scopePopover:n,...r}=e,a=Ui("PopoverTrigger",n),i=Vi(n),l=k(t,a.triggerRef),c=o(Z.button,E({type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":Qi(a.open)},r,{ref:l,onClick:A(e.onClick,a.onOpenToggle)}));return a.hasCustomAnchor?c:o(Ni,E({asChild:!0},i),c)})),Wi="PopoverPortal",[Ki,qi]=Zi(Wi,{forceMount:void 0}),Gi="PopoverContent",$i=d(((e,t)=>{const n=qi(Gi,e.__scopePopover),{forceMount:r=n.forceMount,...a}=e,i=Ui(Gi,e.__scopePopover);return o(ae,{present:r||i.open},i.modal?o(Xi,E({},a,{ref:t})):o(Yi,E({},a,{ref:t})))})),Xi=d(((e,t)=>{const n=Ui(Gi,e.__scopePopover),r=c(null),a=k(t,r),i=c(!1);return s((()=>{const e=r.current;if(e)return Je(e)}),[]),o(We,{as:L,allowPinchZoom:!0},o(Ji,E({},e,{ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:A(e.onCloseAutoFocus,(e=>{var t;e.preventDefault(),i.current||null===(t=n.triggerRef.current)||void 0===t||t.focus()})),onPointerDownOutside:A(e.onPointerDownOutside,(e=>{const t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey,r=2===t.button||n;i.current=r}),{checkForDefaultPrevented:!1}),onFocusOutside:A(e.onFocusOutside,(e=>e.preventDefault()),{checkForDefaultPrevented:!1})})))})),Yi=d(((e,t)=>{const n=Ui(Gi,e.__scopePopover),r=c(!1),a=c(!1);return o(Ji,E({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var o,i;(null===(o=e.onCloseAutoFocus)||void 0===o||o.call(e,t),t.defaultPrevented)||(r.current||null===(i=n.triggerRef.current)||void 0===i||i.focus(),t.preventDefault());r.current=!1,a.current=!1},onInteractOutside:t=>{var o,i;null===(o=e.onInteractOutside)||void 0===o||o.call(e,t),t.defaultPrevented||(r.current=!0,"pointerdown"===t.detail.originalEvent.type&&(a.current=!0));const l=t.target;(null===(i=n.triggerRef.current)||void 0===i?void 0:i.contains(l))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&a.current&&t.preventDefault()}}))})),Ji=d(((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:a,onCloseAutoFocus:i,disableOutsidePointerEvents:l,onEscapeKeyDown:c,onPointerDownOutside:s,onFocusOutside:u,onInteractOutside:d,...p}=e,f=Ui(Gi,n),m=Vi(n);return ce(),o(Y,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:a,onUnmountAutoFocus:i},o(W,{asChild:!0,disableOutsidePointerEvents:l,onInteractOutside:d,onEscapeKeyDown:c,onPointerDownOutside:s,onFocusOutside:u,onDismiss:()=>f.onOpenChange(!1)},o(ji,E({"data-state":Qi(f.open),role:"dialog",id:f.contentId},m,p,{ref:t,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))}));function Qi(e){return e?"open":"closed"}const el=e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:a,onOpenChange:l,modal:s=!1}=e,d=Vi(t),p=c(null),[f,m]=u(!1),[v=!1,h]=I({prop:r,defaultProp:a,onChange:l});return o(Li,d,o(Bi,{scope:t,contentId:M(),triggerRef:p,open:v,onOpenChange:h,onOpenToggle:i((()=>h((e=>!e))),[h]),hasCustomAnchor:f,onCustomAnchorAdd:i((()=>m(!0)),[]),onCustomAnchorRemove:i((()=>m(!1)),[]),modal:s},n))},tl=zi,nl=e=>{const{__scopePopover:t,forceMount:n,children:r,container:a}=e,i=Ui(Wi,t);return o(Ki,{scope:t,forceMount:n},o(ae,{present:n||i.open},o(oe,{asChild:!0,container:a},r)))},rl=$i;var ol="Popover-modules_popoverContent__EQXkn",al=g((function(e){var n,r=e.align,o=void 0===r?"center":r,a=e.childClass,i=void 0===a?"":a,l=e.children,c=void 0===l?"":l,s=e.content,u=void 0===s?"":s,d=e.isContentChild,p=void 0!==d&&d,f=e.isOpen,m=void 0!==f&&f,v=e.onOpen,h=e.className,g=void 0===h?"":h;return t.createElement(el,{open:m,onOpenChange:function(e){v&&v(e)}},t.createElement(tl,{className:i},c),t.createElement(nl,null,t.createElement(rl,{align:o,className:Qt("demio-ui-modal-content",ol,(n={},n[g]=!!g,n)),asChild:p},u)))}));const il="Progress",ll=100,[cl,sl]=x(il),[ul,dl]=cl(il),pl=d(((e,t)=>{const{__scopeProgress:n,value:r,max:a,getValueLabel:i=fl,...l}=e,c=hl(a)?a:ll,s=gl(r,c)?r:null,u=vl(s)?i(s,c):void 0;return o(ul,{scope:n,value:s,max:c},o(Z.div,E({"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":vl(s)?s:void 0,"aria-valuetext":u,role:"progressbar","data-state":ml(s,c),"data-value":null!=s?s:void 0,"data-max":c},l,{ref:t})))}));pl.propTypes={max(e,t,n){const r=e[t],o=String(r);return r&&!hl(r)?new Error(function(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`}(o,n)):null},value(e,t,n){const r=e[t],o=String(r),a=hl(e.max)?e.max:ll;return null==r||gl(r,a)?null:new Error(function(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be:\n - a positive number\n - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)\n - \`null\` if the progress is indeterminate.\n\nDefaulting to \`null\`.`}(o,n))}};function fl(e,t){return`${Math.round(e/t*100)}%`}function ml(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function vl(e){return"number"==typeof e}function hl(e){return vl(e)&&!isNaN(e)&&e>0}function gl(e,t){return vl(e)&&!isNaN(e)&&e<=t&&e>=0}const yl=pl,wl=d(((e,t)=>{var n;const{__scopeProgress:r,...a}=e,i=dl("ProgressIndicator",r);return o(Z.div,E({"data-state":ml(i.value,i.max),"data-value":null!==(n=i.value)&&void 0!==n?n:void 0,"data-max":i.max},a,{ref:t}))}));var bl="Progress-modules_root__E0rHH",_l="Progress-modules_indicator__qpwRi";function El(e){var n=e.max,r=void 0===n?100:n,o=e.progress,a=void 0===o?0:o,i=e.className,l=void 0===i?"":i,c=de(e,["max","progress","className"]),s=a>r?"100%":"".concat(a/r*100,"%");return t.createElement(yl,ue({className:Qt("demio-ui-progress",bl,{className:!!l}),value:a>r?r:a,max:r},c),t.createElement(wl,{className:_l,style:{width:s}}))}function xl(e){const n=e+"CollectionProvider",[r,o]=x(n),[a,i]=r(n,{collectionRef:{current:null},itemMap:new Map}),l=e+"CollectionSlot",c=e+"CollectionItemSlot",s="data-radix-collection-item";return[{Provider:e=>{const{scope:n,children:r}=e,o=t.useRef(null),i=t.useRef(new Map).current;return t.createElement(a,{scope:n,itemMap:i,collectionRef:o},r)},Slot:t.forwardRef(((e,n)=>{const{scope:r,children:o}=e,a=k(n,i(l,r).collectionRef);return t.createElement(L,{ref:a},o)})),ItemSlot:t.forwardRef(((e,n)=>{const{scope:r,children:o,...a}=e,l=t.useRef(null),u=k(n,l),d=i(c,r);return t.useEffect((()=>(d.itemMap.set(l,{ref:l,...a}),()=>{d.itemMap.delete(l)}))),t.createElement(L,{[s]:"",ref:u},o)}))},function(n){const r=i(e+"CollectionConsumer",n);return t.useCallback((()=>{const e=r.collectionRef.current;if(!e)return[];const t=Array.from(e.querySelectorAll(`[${s}]`));return Array.from(r.itemMap.values()).sort(((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current)))}),[r.collectionRef,r.itemMap])},o]}const Ol=n(void 0);function Cl(e){const t=a(Ol);return e||t||"ltr"}const kl="rovingFocusGroup.onEntryFocus",Al={bubbles:!1,cancelable:!0},Dl="RovingFocusGroup",[Pl,Tl,Ml]=xl(Dl),[Sl,Il]=x(Dl,[Ml]),[Ll,Nl]=Sl(Dl),jl=d(((e,t)=>o(Pl.Provider,{scope:e.__scopeRovingFocusGroup},o(Pl.Slot,{scope:e.__scopeRovingFocusGroup},o(Rl,E({},e,{ref:t})))))),Rl=d(((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:a=!1,dir:l,currentTabStopId:d,defaultCurrentTabStopId:p,onCurrentTabStopIdChange:f,onEntryFocus:m,...v}=e,h=c(null),g=k(t,h),y=Cl(l),[w=null,b]=I({prop:d,defaultProp:p,onChange:f}),[_,x]=u(!1),O=S(m),C=Tl(n),D=c(!1),[P,T]=u(0);return s((()=>{const e=h.current;if(e)return e.addEventListener(kl,O),()=>e.removeEventListener(kl,O)}),[O]),o(Ll,{scope:n,orientation:r,dir:y,loop:a,currentTabStopId:w,onItemFocus:i((e=>b(e)),[b]),onItemShiftTab:i((()=>x(!0)),[]),onFocusableItemAdd:i((()=>T((e=>e+1))),[]),onFocusableItemRemove:i((()=>T((e=>e-1))),[])},o(Z.div,E({tabIndex:_||0===P?-1:0,"data-orientation":r},v,{ref:g,style:{outline:"none",...e.style},onMouseDown:A(e.onMouseDown,(()=>{D.current=!0})),onFocus:A(e.onFocus,(e=>{const t=!D.current;if(e.target===e.currentTarget&&t&&!_){const t=new CustomEvent(kl,Al);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){const e=C().filter((e=>e.focusable));Fl([e.find((e=>e.active)),e.find((e=>e.id===w)),...e].filter(Boolean).map((e=>e.ref.current)))}}D.current=!1})),onBlur:A(e.onBlur,(()=>x(!1)))})))})),Hl=d(((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:a=!1,tabStopId:i,...l}=e,c=M(),u=i||c,d=Nl("RovingFocusGroupItem",n),p=d.currentTabStopId===u,f=Tl(n),{onFocusableItemAdd:m,onFocusableItemRemove:v}=d;return s((()=>{if(r)return m(),()=>v()}),[r,m,v]),o(Pl.ItemSlot,{scope:n,id:u,focusable:r,active:a},o(Z.span,E({tabIndex:p?0:-1,"data-orientation":d.orientation},l,{ref:t,onMouseDown:A(e.onMouseDown,(e=>{r?d.onItemFocus(u):e.preventDefault()})),onFocus:A(e.onFocus,(()=>d.onItemFocus(u))),onKeyDown:A(e.onKeyDown,(e=>{if("Tab"===e.key&&e.shiftKey)return void d.onItemShiftTab();if(e.target!==e.currentTarget)return;const t=function(e,t,n){const r=function(e,t){return"rtl"!==t?e:"ArrowLeft"===e?"ArrowRight":"ArrowRight"===e?"ArrowLeft":e}(e.key,n);return"vertical"===t&&["ArrowLeft","ArrowRight"].includes(r)||"horizontal"===t&&["ArrowUp","ArrowDown"].includes(r)?void 0:Zl[r]}(e,d.orientation,d.dir);if(void 0!==t){e.preventDefault();let o=f().filter((e=>e.focusable)).map((e=>e.ref.current));if("last"===t)o.reverse();else if("prev"===t||"next"===t){"prev"===t&&o.reverse();const a=o.indexOf(e.currentTarget);o=d.loop?(r=a+1,(n=o).map(((e,t)=>n[(r+t)%n.length]))):o.slice(a+1)}setTimeout((()=>Fl(o)))}var n,r}))})))})),Zl={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Fl(e){const t=document.activeElement;for(const n of e){if(n===t)return;if(n.focus(),document.activeElement!==t)return}}const Vl=jl,Bl=Hl,Ul="Radio",[zl,Wl]=x(Ul),[Kl,ql]=zl(Ul),Gl=d(((e,t)=>{const{__scopeRadio:n,name:r,checked:a=!1,required:i,disabled:l,value:s="on",onCheck:d,...p}=e,[f,m]=u(null),v=k(t,(e=>m(e))),h=c(!1),g=!f||Boolean(f.closest("form"));return o(Kl,{scope:n,checked:a,disabled:l},o(Z.button,E({type:"button",role:"radio","aria-checked":a,"data-state":Yl(a),"data-disabled":l?"":void 0,disabled:l,value:s},p,{ref:v,onClick:A(e.onClick,(e=>{a||null==d||d(),g&&(h.current=e.isPropagationStopped(),h.current||e.stopPropagation())}))})),g&&o(Xl,{control:f,bubbles:!h.current,name:r,value:s,checked:a,required:i,disabled:l,style:{transform:"translateX(-100%)"}}))})),$l=d(((e,t)=>{const{__scopeRadio:n,forceMount:r,...a}=e,i=ql("RadioIndicator",n);return o(ae,{present:r||i.checked},o(Z.span,E({"data-state":Yl(i.checked),"data-disabled":i.disabled?"":void 0},a,{ref:t})))})),Xl=e=>{const{control:t,checked:n,bubbles:r=!0,...a}=e,i=c(null),l=sn(n),u=un(t);return s((()=>{const e=i.current,t=window.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(t,"checked").set;if(l!==n&&o){const t=new Event("click",{bubbles:r});o.call(e,n),e.dispatchEvent(t)}}),[l,n,r]),o("input",E({type:"radio","aria-hidden":!0,defaultChecked:n},a,{tabIndex:-1,ref:i,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function Yl(e){return e?"checked":"unchecked"}const Jl=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Ql="RadioGroup",[ec,tc]=x(Ql,[Il,Wl]),nc=Il(),rc=Wl(),[oc,ac]=ec(Ql),ic=d(((e,t)=>{const{__scopeRadioGroup:n,name:r,defaultValue:a,value:i,required:l=!1,disabled:c=!1,orientation:s,dir:u,loop:d=!0,onValueChange:p,...f}=e,m=nc(n),v=Cl(u),[h,g]=I({prop:i,defaultProp:a,onChange:p});return o(oc,{scope:n,name:r,required:l,disabled:c,value:h,onValueChange:g},o(Vl,E({asChild:!0},m,{orientation:s,dir:v,loop:d}),o(Z.div,E({role:"radiogroup","aria-required":l,"aria-orientation":s,"data-disabled":c?"":void 0,dir:v},f,{ref:t}))))})),lc=d(((e,t)=>{const{__scopeRadioGroup:n,disabled:r,...a}=e,i=ac("RadioGroupItem",n),l=i.disabled||r,u=nc(n),d=rc(n),p=c(null),f=k(t,p),m=i.value===a.value,v=c(!1);return s((()=>{const e=e=>{Jl.includes(e.key)&&(v.current=!0)},t=()=>v.current=!1;return document.addEventListener("keydown",e),document.addEventListener("keyup",t),()=>{document.removeEventListener("keydown",e),document.removeEventListener("keyup",t)}}),[]),o(Bl,E({asChild:!0},u,{focusable:!l,active:m}),o(Gl,E({disabled:l,required:i.required,checked:m},d,a,{name:i.name,ref:f,onCheck:()=>i.onValueChange(a.value),onKeyDown:A((e=>{"Enter"===e.key&&e.preventDefault()})),onFocus:A(a.onFocus,(()=>{var e;v.current&&(null===(e=p.current)||void 0===e||e.click())}))})))})),cc=d(((e,t)=>{const{__scopeRadioGroup:n,...r}=e,a=rc(n);return o($l,E({},a,r,{ref:t}))}));var sc={root:"RadioGroup-modules_root__AbbNa",container:"RadioGroup-modules_container__yPAMg",item:"RadioGroup-modules_item__wuUmn",indicator:"RadioGroup-modules_indicator__jEw97",label:"RadioGroup-modules_label__ggYdY",footer:"RadioGroup-modules_footer__1Zp99",disabled:"RadioGroup-modules_disabled__H3T--"};function uc(e){var n,o=e.items,a=void 0===o?[]:o,i=e.error,l=void 0===i?"":i,c=e.defaultValue,s=void 0===c?"":c,u=e.ariaLabel,d=void 0===u?"":u,p=e.hint,f=void 0===p?"":p,m=e.onChange,v=e.disabled,h=void 0!==v&&v,g=e.value,y=void 0===g?"":g,w=e.className,b=void 0===w?"":w,_=de(e,["items","error","defaultValue","ariaLabel","hint","onChange","disabled","value","className"]),E=r((function(){return m?{value:y,onValueChange:m}:{}}),[y,m]);return t.createElement(ic,ue({},E,_,{className:Qt("demio-ui-radio-group",sc.root,(n={},n[sc.error]=!!l,n[b]=!!b,n)),defaultValue:s,"aria-label":d}),a.map((function(e){var n;return t.createElement("div",{key:e.id,className:Qt(sc.container,(n={},n[sc.disabled]=e.disabled||h,n))},t.createElement(lc,{className:sc.item,value:e.value,disabled:e.disabled||h,id:e.id},t.createElement(cc,{className:sc.indicator})),t.createElement(Bo,{className:sc.label,htmlFor:e.id,weight:"regular"},e.label))})),t.createElement("div",{className:sc.footer},l&&t.createElement(Go,{type:"error"},l),f&&!l&&t.createElement(Go,null,f)))}const dc="Switch",[pc,fc]=x(dc),[mc,vc]=pc(dc),hc=d(((e,t)=>{const{__scopeSwitch:n,name:r,checked:a,defaultChecked:i,required:l,disabled:s,value:d="on",onCheckedChange:p,...f}=e,[m,v]=u(null),h=k(t,(e=>v(e))),g=c(!1),y=!m||Boolean(m.closest("form")),[w=!1,b]=I({prop:a,defaultProp:i,onChange:p});return o(mc,{scope:n,checked:w,disabled:s},o(Z.button,E({type:"button",role:"switch","aria-checked":w,"aria-required":l,"data-state":yc(w),"data-disabled":s?"":void 0,disabled:s,value:d},f,{ref:h,onClick:A(e.onClick,(e=>{b((e=>!e)),y&&(g.current=e.isPropagationStopped(),g.current||e.stopPropagation())}))})),y&&o(gc,{control:m,bubbles:!g.current,name:r,value:d,checked:w,required:l,disabled:s,style:{transform:"translateX(-100%)"}}))})),gc=e=>{const{control:t,checked:n,bubbles:r=!0,...a}=e,i=c(null),l=sn(n),u=un(t);return s((()=>{const e=i.current,t=window.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(t,"checked").set;if(l!==n&&o){const t=new Event("click",{bubbles:r});o.call(e,n),e.dispatchEvent(t)}}),[l,n,r]),o("input",E({type:"checkbox","aria-hidden":!0,defaultChecked:n},a,{tabIndex:-1,ref:i,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function yc(e){return e?"checked":"unchecked"}const wc=hc,bc=d(((e,t)=>{const{__scopeSwitch:n,...r}=e,a=vc("SwitchThumb",n);return o(Z.span,E({"data-state":yc(a.checked),"data-disabled":a.disabled?"":void 0},r,{ref:t}))}));var _c="Switch-modules_root__V5S6a",Ec="Switch-modules_thumb__PZ-lR";function xc(e){var n,r=e.className,o=void 0===r?"":r,a=e.id,i=void 0===a?"":a,l=e.disabled,c=void 0!==l&&l,s=e.required,u=void 0!==s&&s,d=e.name,p=de(e,["className","id","disabled","required","name"]);return t.createElement(wc,ue({className:Qt(_c,"demio-ui-switch",(n={},n[o]=!!o,n)),disabled:c,required:u,name:d,id:i||d},p),t.createElement(bc,{className:Ec}))}const Oc=d(((e,t)=>o(Z.span,E({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}})))),Cc=Oc,[kc,Ac]=x("Tooltip",[Ei]),Dc=Ei(),Pc=700,Tc="tooltip.open",[Mc,Sc]=kc("TooltipProvider"),Ic="Tooltip",[Lc,Nc]=kc(Ic),jc="TooltipTrigger",Rc=d(((e,t)=>{const{__scopeTooltip:n,...r}=e,a=Nc(jc,n),l=Sc(jc,n),u=Dc(n),d=k(t,c(null),a.onTriggerChange),p=c(!1),f=c(!1),m=i((()=>p.current=!1),[]);return s((()=>()=>document.removeEventListener("pointerup",m)),[m]),o(Ni,E({asChild:!0},u),o(Z.button,E({"aria-describedby":a.open?a.contentId:void 0,"data-state":a.stateAttribute},r,{ref:d,onPointerMove:A(e.onPointerMove,(e=>{"touch"!==e.pointerType&&(f.current||l.isPointerInTransitRef.current||(a.onTriggerEnter(),f.current=!0))})),onPointerLeave:A(e.onPointerLeave,(()=>{a.onTriggerLeave(),f.current=!1})),onPointerDown:A(e.onPointerDown,(()=>{p.current=!0,document.addEventListener("pointerup",m,{once:!0})})),onFocus:A(e.onFocus,(()=>{p.current||a.onOpen()})),onBlur:A(e.onBlur,a.onClose),onClick:A(e.onClick,a.onClose)})))})),Hc="TooltipPortal",[Zc,Fc]=kc(Hc,{forceMount:void 0}),Vc="TooltipContent",Bc=d(((e,t)=>{const n=Fc(Vc,e.__scopeTooltip),{forceMount:r=n.forceMount,side:a="top",...i}=e,l=Nc(Vc,e.__scopeTooltip);return o(ae,{present:r||l.open},l.disableHoverableContent?o(Kc,E({side:a},i,{ref:t})):o(Uc,E({side:a},i,{ref:t})))})),Uc=d(((e,t)=>{const n=Nc(Vc,e.__scopeTooltip),r=Sc(Vc,e.__scopeTooltip),a=c(null),l=k(t,a),[d,p]=u(null),{trigger:f,onClose:m}=n,v=a.current,{onPointerInTransitChange:h}=r,g=i((()=>{p(null),h(!1)}),[h]),y=i(((e,t)=>{const n=e.currentTarget,r={x:e.clientX,y:e.clientY},o=function(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,function(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,o,a)){case a:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}(r,n.getBoundingClientRect())),a=function(e){const t=e.slice();return t.sort(((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0)),function(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const r=e[n];for(;t.length>=2;){const e=t[t.length-1],n=t[t.length-2];if(!((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x)))break;t.pop()}t.push(r)}t.pop();const n=[];for(let t=e.length-1;t>=0;t--){const r=e[t];for(;n.length>=2;){const e=n[n.length-1],t=n[n.length-2];if(!((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x)))break;n.pop()}n.push(r)}return n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}(t)}([...o,...function(e){const{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}(t.getBoundingClientRect())]);p(a),h(!0)}),[h]);return s((()=>()=>g()),[g]),s((()=>{if(f&&v){const e=e=>y(e,v),t=e=>y(e,f);return f.addEventListener("pointerleave",e),v.addEventListener("pointerleave",t),()=>{f.removeEventListener("pointerleave",e),v.removeEventListener("pointerleave",t)}}}),[f,v,y,g]),s((()=>{if(d){const e=e=>{const t=e.target,n={x:e.clientX,y:e.clientY},r=(null==f?void 0:f.contains(t))||(null==v?void 0:v.contains(t)),o=!function(e,t){const{x:n,y:r}=e;let o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){const i=t[e].x,l=t[e].y,c=t[a].x,s=t[a].y;l>r!=s>r&&n<(c-i)*(r-l)/(s-l)+i&&(o=!o)}return o}(n,d);r?g():o&&(g(),m())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}}),[f,v,d,m,g]),o(Kc,E({},e,{ref:l}))})),[zc,Wc]=kc(Ic,{isInside:!1}),Kc=d(((e,t)=>{const{__scopeTooltip:n,children:r,"aria-label":a,onEscapeKeyDown:i,onPointerDownOutside:l,...c}=e,u=Nc(Vc,n),d=Dc(n),{onClose:p}=u;return s((()=>(document.addEventListener(Tc,p),()=>document.removeEventListener(Tc,p))),[p]),s((()=>{if(u.trigger){const e=e=>{const t=e.target;null!=t&&t.contains(u.trigger)&&p()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}}),[u.trigger,p]),o(W,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:l,onFocusOutside:e=>e.preventDefault(),onDismiss:p},o(ji,E({"data-state":u.stateAttribute},d,c,{ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"}}),o(j,null,r),o(zc,{scope:n,isInside:!0},o(Cc,{id:u.contentId,role:"tooltip"},a||r))))}));const qc=e=>{const{__scopeTooltip:t,delayDuration:n=Pc,skipDelayDuration:r=300,disableHoverableContent:a=!1,children:l}=e,[d,p]=u(!0),f=c(!1),m=c(0);return s((()=>{const e=m.current;return()=>window.clearTimeout(e)}),[]),o(Mc,{scope:t,isOpenDelayed:d,delayDuration:n,onOpen:i((()=>{window.clearTimeout(m.current),p(!1)}),[]),onClose:i((()=>{window.clearTimeout(m.current),m.current=window.setTimeout((()=>p(!0)),r)}),[r]),isPointerInTransitRef:f,onPointerInTransitChange:i((e=>{f.current=e}),[]),disableHoverableContent:a},l)},Gc=e=>{const{__scopeTooltip:t,children:n,open:a,defaultOpen:l=!1,onOpenChange:d,disableHoverableContent:p,delayDuration:f}=e,m=Sc(Ic,e.__scopeTooltip),v=Dc(t),[h,g]=u(null),y=M(),w=c(0),b=null!=p?p:m.disableHoverableContent,_=null!=f?f:m.delayDuration,E=c(!1),[x=!1,O]=I({prop:a,defaultProp:l,onChange:e=>{e?(m.onOpen(),document.dispatchEvent(new CustomEvent(Tc))):m.onClose(),null==d||d(e)}}),C=r((()=>x?E.current?"delayed-open":"instant-open":"closed"),[x]),k=i((()=>{window.clearTimeout(w.current),E.current=!1,O(!0)}),[O]),A=i((()=>{window.clearTimeout(w.current),O(!1)}),[O]),D=i((()=>{window.clearTimeout(w.current),w.current=window.setTimeout((()=>{E.current=!0,O(!0)}),_)}),[_,O]);return s((()=>()=>window.clearTimeout(w.current)),[]),o(Li,v,o(Lc,{scope:t,contentId:y,open:x,stateAttribute:C,trigger:h,onTriggerChange:g,onTriggerEnter:i((()=>{m.isOpenDelayed?D():k()}),[m.isOpenDelayed,D,k]),onTriggerLeave:i((()=>{b?A():window.clearTimeout(w.current)}),[A,b]),onOpen:k,onClose:A,disableHoverableContent:b},n))},$c=Rc,Xc=e=>{const{__scopeTooltip:t,forceMount:n,children:r,container:a}=e,i=Nc(Hc,t);return o(Zc,{scope:t,forceMount:n},o(ae,{present:n||i.open},o(oe,{asChild:!0,container:a},r)))},Yc=Bc,Jc=d(((e,t)=>{const{__scopeTooltip:n,...r}=e,a=Dc(n);return Wc("TooltipArrow",n).isInside?null:o(Ri,E({},a,r,{ref:t}))}));var Qc="Tooltip-modules_content__--tK0",es="Tooltip-modules_arrow__4vjj8";function ts(e){var n,r=e.children,o=e.content,a=e.open,i=e.defaultOpen,l=e.onOpenChange,c=e.side,s=void 0===c?"top":c,u=e.align,d=void 0===u?"center":u,p=e.className,f=void 0===p?"":p,m=e.delayDuration,v=void 0===m?200:m,h=e.sideOffset,g=void 0===h?4:h,y=e.isPortal,w=void 0!==y&&y,b=de(e,["children","content","open","defaultOpen","onOpenChange","side","align","className","delayDuration","sideOffset","isPortal"]),_=t.createElement(Yc,ue({sideOffset:g,side:s,align:d},b,{className:Qt(Qc,"demio-ui-tooltip",(n={},n[f]=f,n))}),o,t.createElement(Jc,{className:es,width:11,height:5}));return o?t.createElement(qc,null,t.createElement(Gc,{delayDuration:v,open:a,defaultOpen:i,onOpenChange:l},t.createElement($c,{asChild:!0},r),w?t.createElement(Xc,null,_):_)):r}function ns(e,[t,n]){return Math.min(n,Math.max(t,e))}const rs=[" ","Enter","ArrowUp","ArrowDown"],os=[" ","Enter"],as="Select",[is,ls,cs]=xl(as),[ss,us]=x(as,[cs,Ei]),ds=Ei(),[ps,fs]=ss(as),[ms,vs]=ss(as),hs=d(((e,t)=>{const{__scopeSelect:n,disabled:r=!1,...a}=e,i=ds(n),l=fs("SelectTrigger",n),c=l.disabled||r,s=k(t,l.onTriggerChange),u=ls(n),[d,p,f]=Us((e=>{const t=u().filter((e=>!e.disabled)),n=t.find((e=>e.value===l.value)),r=zs(t,e,n);void 0!==r&&l.onValueChange(r.value)})),m=()=>{c||(l.onOpenChange(!0),f())};return o(Ni,E({asChild:!0},i),o(Z.button,E({type:"button",role:"combobox","aria-controls":l.contentId,"aria-expanded":l.open,"aria-required":l.required,"aria-autocomplete":"none",dir:l.dir,"data-state":l.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":void 0===l.value?"":void 0},a,{ref:s,onClick:A(a.onClick,(e=>{e.currentTarget.focus()})),onPointerDown:A(a.onPointerDown,(e=>{const t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&(m(),l.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)},e.preventDefault())})),onKeyDown:A(a.onKeyDown,(e=>{const t=""!==d.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||p(e.key),t&&" "===e.key||rs.includes(e.key)&&(m(),e.preventDefault())}))})))})),gs=d(((e,t)=>{const{__scopeSelect:n,className:r,style:a,children:i,placeholder:l,...c}=e,s=fs("SelectValue",n),{onValueNodeHasChildrenChange:u}=s,d=void 0!==i,p=k(t,s.onValueNodeChange);return D((()=>{u(d)}),[u,d]),o(Z.span,E({},c,{ref:p,style:{pointerEvents:"none"}}),void 0===s.value&&void 0!==l?l:i)})),ys=d(((e,t)=>{const{__scopeSelect:n,children:r,...a}=e;return o(Z.span,E({"aria-hidden":!0},a,{ref:t}),r||"▼")})),ws="SelectContent",bs=d(((e,t)=>{const n=fs(ws,e.__scopeSelect),[r,a]=u();if(D((()=>{a(new DocumentFragment)}),[]),!n.open){const t=r;return t?_(o(Es,{scope:e.__scopeSelect},o(is.Slot,{scope:e.__scopeSelect},o("div",null,e.children))),t):null}return o(Os,E({},e,{ref:t}))})),_s=10,[Es,xs]=ss(ws),Os=d(((e,t)=>{const{__scopeSelect:n,position:r="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:l,onPointerDownOutside:d,side:p,sideOffset:f,align:m,alignOffset:v,arrowPadding:h,collisionBoundary:g,collisionPadding:y,sticky:w,hideWhenDetached:b,avoidCollisions:_,...x}=e,O=fs(ws,n),[C,D]=u(null),[P,T]=u(null),M=k(t,(e=>D(e))),[S,I]=u(null),[N,j]=u(null),R=ls(n),[H,Z]=u(!1),F=c(!1);s((()=>{if(C)return Je(C)}),[C]),ce();const V=i((e=>{const[t,...n]=R().map((e=>e.ref.current)),[r]=n.slice(-1),o=document.activeElement;for(const n of e){if(n===o)return;if(null==n||n.scrollIntoView({block:"nearest"}),n===t&&P&&(P.scrollTop=0),n===r&&P&&(P.scrollTop=P.scrollHeight),null==n||n.focus(),document.activeElement!==o)return}}),[R,P]),B=i((()=>V([S,C])),[V,S,C]);s((()=>{H&&B()}),[H,B]);const{onOpenChange:U,triggerPointerDownPosRef:z}=O;s((()=>{if(C){let e={x:0,y:0};const t=t=>{var n,r,o,a;e={x:Math.abs(Math.round(t.pageX)-(null!==(n=null===(r=z.current)||void 0===r?void 0:r.x)&&void 0!==n?n:0)),y:Math.abs(Math.round(t.pageY)-(null!==(o=null===(a=z.current)||void 0===a?void 0:a.y)&&void 0!==o?o:0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():C.contains(n.target)||U(!1),document.removeEventListener("pointermove",t),z.current=null};return null!==z.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",n,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",n,{capture:!0})}}}),[C,U,z]),s((()=>{const e=()=>U(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}}),[U]);const[K,q]=Us((e=>{const t=R().filter((e=>!e.disabled)),n=t.find((e=>e.ref.current===document.activeElement)),r=zs(t,e,n);r&&setTimeout((()=>r.ref.current.focus()))})),G=i(((e,t,n)=>{const r=!F.current&&!n;(void 0!==O.value&&O.value===t||r)&&(I(e),r&&(F.current=!0))}),[O.value]),$=i((()=>null==C?void 0:C.focus()),[C]),X=i(((e,t,n)=>{const r=!F.current&&!n;(void 0!==O.value&&O.value===t||r)&&j(e)}),[O.value]),J="popper"===r?ks:Cs,Q=J===ks?{side:p,sideOffset:f,align:m,alignOffset:v,arrowPadding:h,collisionBoundary:g,collisionPadding:y,sticky:w,hideWhenDetached:b,avoidCollisions:_}:{};return o(Es,{scope:n,content:C,viewport:P,onViewportChange:T,itemRefCallback:G,selectedItem:S,onItemLeave:$,itemTextRefCallback:X,focusSelectedItem:B,selectedItemText:N,position:r,isPositioned:H,searchRef:K},o(We,{as:L,allowPinchZoom:!0},o(Y,{asChild:!0,trapped:O.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:A(a,(e=>{var t;null===(t=O.trigger)||void 0===t||t.focus({preventScroll:!0}),e.preventDefault()}))},o(W,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>O.onOpenChange(!1)},o(J,E({role:"listbox",id:O.contentId,"data-state":O.open?"open":"closed",dir:O.dir,onContextMenu:e=>e.preventDefault()},x,Q,{onPlaced:()=>Z(!0),ref:M,style:{display:"flex",flexDirection:"column",outline:"none",...x.style},onKeyDown:A(x.onKeyDown,(e=>{const t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||q(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=R().filter((e=>!e.disabled)).map((e=>e.ref.current));if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){const n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout((()=>V(t))),e.preventDefault()}}))}))))))})),Cs=d(((e,t)=>{const{__scopeSelect:n,onPlaced:r,...a}=e,l=fs(ws,n),s=xs(ws,n),[d,p]=u(null),[f,m]=u(null),v=k(t,(e=>m(e))),h=ls(n),g=c(!1),y=c(!0),{viewport:w,selectedItem:b,selectedItemText:_,focusSelectedItem:x}=s,O=i((()=>{if(l.trigger&&l.valueNode&&d&&f&&w&&b&&_){const e=l.trigger.getBoundingClientRect(),t=f.getBoundingClientRect(),n=l.valueNode.getBoundingClientRect(),o=_.getBoundingClientRect();if("rtl"!==l.dir){const r=o.left-t.left,a=n.left-r,i=e.left-a,l=e.width+i,c=Math.max(l,t.width),s=window.innerWidth-_s,u=ns(a,[_s,s-c]);d.style.minWidth=l+"px",d.style.left=u+"px"}else{const r=t.right-o.right,a=window.innerWidth-n.right-r,i=window.innerWidth-e.right-a,l=e.width+i,c=Math.max(l,t.width),s=window.innerWidth-_s,u=ns(a,[_s,s-c]);d.style.minWidth=l+"px",d.style.right=u+"px"}const a=h(),i=window.innerHeight-2*_s,c=w.scrollHeight,s=window.getComputedStyle(f),u=parseInt(s.borderTopWidth,10),p=parseInt(s.paddingTop,10),m=parseInt(s.borderBottomWidth,10),v=u+p+c+parseInt(s.paddingBottom,10)+m,y=Math.min(5*b.offsetHeight,v),E=window.getComputedStyle(w),x=parseInt(E.paddingTop,10),O=parseInt(E.paddingBottom,10),C=e.top+e.height/2-_s,k=i-C,A=b.offsetHeight/2,D=u+p+(b.offsetTop+A),P=v-D;if(D<=C){const e=b===a[a.length-1].ref.current;d.style.bottom="0px";const t=f.clientHeight-w.offsetTop-w.offsetHeight,n=D+Math.max(k,A+(e?O:0)+t+m);d.style.height=n+"px"}else{const e=b===a[0].ref.current;d.style.top="0px";const t=Math.max(C,u+w.offsetTop+(e?x:0)+A)+P;d.style.height=t+"px",w.scrollTop=D-C+w.offsetTop}d.style.margin=`${_s}px 0`,d.style.minHeight=y+"px",d.style.maxHeight=i+"px",null==r||r(),requestAnimationFrame((()=>g.current=!0))}}),[h,l.trigger,l.valueNode,d,f,w,b,_,l.dir,r]);D((()=>O()),[O]);const[C,A]=u();D((()=>{f&&A(window.getComputedStyle(f).zIndex)}),[f]);const P=i((e=>{e&&!0===y.current&&(O(),null==x||x(),y.current=!1)}),[O,x]);return o(As,{scope:n,contentWrapper:d,shouldExpandOnScrollRef:g,onScrollButtonChange:P},o("div",{ref:p,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:C}},o(Z.div,E({},a,{ref:v,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}}))))})),ks=d(((e,t)=>{const{__scopeSelect:n,align:r="start",collisionPadding:a=_s,...i}=e,l=ds(n);return o(ji,E({},l,i,{ref:t,align:r,collisionPadding:a,style:{boxSizing:"border-box",...i.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}}))})),[As,Ds]=ss(ws,{}),Ps="SelectViewport",Ts=d(((e,t)=>{const{__scopeSelect:n,...r}=e,a=xs(Ps,n),i=Ds(Ps,n),l=k(t,a.onViewportChange),s=c(0);return o(v,null,o("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"}}),o(is.Slot,{scope:n},o(Z.div,E({"data-radix-select-viewport":"",role:"presentation"},r,{ref:l,style:{position:"relative",flex:1,overflow:"auto",...r.style},onScroll:A(r.onScroll,(e=>{const t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=i;if(null!=r&&r.current&&n){const e=Math.abs(s.current-t.scrollTop);if(e>0){const r=window.innerHeight-2*_s,o=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),i=Math.max(o,a);if(i<r){const o=i+e,a=Math.min(r,o),l=o-a;n.style.height=a+"px","0px"===n.style.bottom&&(t.scrollTop=l>0?l:0,n.style.justifyContent="flex-end")}}}s.current=t.scrollTop}))}))))}));ss("SelectGroup");const Ms="SelectItem",[Ss,Is]=ss(Ms),Ls=d(((e,t)=>{const{__scopeSelect:n,value:r,disabled:a=!1,textValue:l,...c}=e,s=fs(Ms,n),d=xs(Ms,n),p=s.value===r,[f,m]=u(null!=l?l:""),[v,h]=u(!1),g=k(t,(e=>{var t;return null===(t=d.itemRefCallback)||void 0===t?void 0:t.call(d,e,r,a)})),y=M(),w=()=>{a||(s.onValueChange(r),s.onOpenChange(!1))};return o(Ss,{scope:n,value:r,disabled:a,textId:y,isSelected:p,onItemTextChange:i((e=>{m((t=>{var n;return t||(null!==(n=null==e?void 0:e.textContent)&&void 0!==n?n:"").trim()}))}),[])},o(is.ItemSlot,{scope:n,value:r,disabled:a,textValue:f},o(Z.div,E({role:"option","aria-labelledby":y,"data-highlighted":v?"":void 0,"aria-selected":p&&v,"data-state":p?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1},c,{ref:g,onFocus:A(c.onFocus,(()=>h(!0))),onBlur:A(c.onBlur,(()=>h(!1))),onPointerUp:A(c.onPointerUp,w),onPointerMove:A(c.onPointerMove,(e=>{var t;a?null===(t=d.onItemLeave)||void 0===t||t.call(d):e.currentTarget.focus({preventScroll:!0})})),onPointerLeave:A(c.onPointerLeave,(e=>{var t;e.currentTarget===document.activeElement&&(null===(t=d.onItemLeave)||void 0===t||t.call(d))})),onKeyDown:A(c.onKeyDown,(e=>{var t;""!==(null===(t=d.searchRef)||void 0===t?void 0:t.current)&&" "===e.key||(os.includes(e.key)&&w()," "===e.key&&e.preventDefault())}))}))))})),Ns="SelectItemText",js=d(((e,t)=>{const{__scopeSelect:n,className:a,style:i,...l}=e,c=fs(Ns,n),s=xs(Ns,n),d=Is(Ns,n),p=vs(Ns,n),[f,m]=u(null),h=k(t,(e=>m(e)),d.onItemTextChange,(e=>{var t;return null===(t=s.itemTextRefCallback)||void 0===t?void 0:t.call(s,e,d.value,d.disabled)})),g=null==f?void 0:f.textContent,y=r((()=>o("option",{key:d.value,value:d.value,disabled:d.disabled},g)),[d.disabled,d.value,g]),{onNativeOptionAdd:w,onNativeOptionRemove:b}=p;return D((()=>(w(y),()=>b(y))),[w,b,y]),o(v,null,o(Z.span,E({id:d.textId},l,{ref:h})),d.isSelected&&c.valueNode&&!c.valueNodeHasChildren?_(l.children,c.valueNode):null)})),Rs="SelectScrollUpButton",Hs=d(((e,t)=>{const n=xs(Rs,e.__scopeSelect),r=Ds(Rs,e.__scopeSelect),[a,i]=u(!1),l=k(t,r.onScrollButtonChange);return D((()=>{if(n.viewport&&n.isPositioned){const t=n.viewport;function e(){const e=t.scrollTop>0;i(e)}return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}}),[n.viewport,n.isPositioned]),a?o(Vs,E({},e,{ref:l,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}})):null})),Zs="SelectScrollDownButton",Fs=d(((e,t)=>{const n=xs(Zs,e.__scopeSelect),r=Ds(Zs,e.__scopeSelect),[a,i]=u(!1),l=k(t,r.onScrollButtonChange);return D((()=>{if(n.viewport&&n.isPositioned){const t=n.viewport;function e(){const e=t.scrollHeight-t.clientHeight,n=Math.ceil(t.scrollTop)<e;i(n)}return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}}),[n.viewport,n.isPositioned]),a?o(Vs,E({},e,{ref:l,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}})):null})),Vs=d(((e,t)=>{const{__scopeSelect:n,onAutoScroll:r,...a}=e,l=xs("SelectScrollButton",n),u=c(null),d=ls(n),p=i((()=>{null!==u.current&&(window.clearInterval(u.current),u.current=null)}),[]);return s((()=>()=>p()),[p]),D((()=>{var e;const t=d().find((e=>e.ref.current===document.activeElement));null==t||null===(e=t.ref.current)||void 0===e||e.scrollIntoView({block:"nearest"})}),[d]),o(Z.div,E({"aria-hidden":!0},a,{ref:t,style:{flexShrink:0,...a.style},onPointerDown:A(a.onPointerDown,(()=>{null===u.current&&(u.current=window.setInterval(r,50))})),onPointerMove:A(a.onPointerMove,(()=>{var e;null===(e=l.onItemLeave)||void 0===e||e.call(l),null===u.current&&(u.current=window.setInterval(r,50))})),onPointerLeave:A(a.onPointerLeave,(()=>{p()}))}))})),Bs=d(((e,t)=>{const{value:n,...r}=e,a=c(null),i=k(t,a),l=sn(n);return s((()=>{const e=a.current,t=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(t,"value").set;if(l!==n&&r){const t=new Event("change",{bubbles:!0});r.call(e,n),e.dispatchEvent(t)}}),[l,n]),o(Oc,{asChild:!0},o("select",E({},r,{ref:i,defaultValue:n})))}));function Us(e){const t=S(e),n=c(""),r=c(0),o=i((e=>{const o=n.current+e;t(o),function e(t){n.current=t,window.clearTimeout(r.current),""!==t&&(r.current=window.setTimeout((()=>e("")),1e3))}(o)}),[t]),a=i((()=>{n.current="",window.clearTimeout(r.current)}),[]);return s((()=>()=>window.clearTimeout(r.current)),[]),[n,o,a]}function zs(e,t,n){const r=t.length>1&&Array.from(t).every((e=>e===t[0]))?t[0]:t,o=n?e.indexOf(n):-1;let a=(i=e,l=Math.max(o,0),i.map(((e,t)=>i[(l+t)%i.length])));var i,l;1===r.length&&(a=a.filter((e=>e!==n)));const c=a.find((e=>e.textValue.toLowerCase().startsWith(r.toLowerCase())));return c!==n?c:void 0}Bs.displayName="BubbleSelect";const Ws=e=>{const{__scopeSelect:t,children:n,open:r,defaultOpen:a,onOpenChange:l,value:s,defaultValue:d,onValueChange:p,dir:f,name:m,autoComplete:v,disabled:h,required:g}=e,y=ds(t),[w,b]=u(null),[_,E]=u(null),[x,O]=u(!1),C=Cl(f),[k=!1,A]=I({prop:r,defaultProp:a,onChange:l}),[D,P]=I({prop:s,defaultProp:d,onChange:p}),T=c(null),S=!w||Boolean(w.closest("form")),[L,N]=u(new Set),j=Array.from(L).map((e=>e.props.value)).join(";");return o(Li,y,o(ps,{required:g,scope:t,trigger:w,onTriggerChange:b,valueNode:_,onValueNodeChange:E,valueNodeHasChildren:x,onValueNodeHasChildrenChange:O,contentId:M(),value:D,onValueChange:P,open:k,onOpenChange:A,dir:C,triggerPointerDownPosRef:T,disabled:h},o(is.Provider,{scope:t},o(ms,{scope:e.__scopeSelect,onNativeOptionAdd:i((e=>{N((t=>new Set(t).add(e)))}),[]),onNativeOptionRemove:i((e=>{N((t=>{const n=new Set(t);return n.delete(e),n}))}),[])},n)),S?o(Bs,{key:j,"aria-hidden":!0,required:g,tabIndex:-1,name:m,autoComplete:v,value:D,onChange:e=>P(e.target.value),disabled:h},void 0===D?o("option",{value:""}):null,Array.from(L)):null))},Ks=hs,qs=gs,Gs=ys,$s=bs,Xs=Ts,Ys=Ls,Js=js,Qs=Hs,eu=Fs;var tu="Select-modules_trigger__dS9Dx",nu="Select-modules_icon__sgRRc",ru="Select-modules_startIcon__kohMV",ou="Select-modules_value__h6Q4Z",au="Select-modules_content__YuAqS",iu="Select-modules_item__cTAIm",lu=t.forwardRef((function(e,n){var r=e.children,o=e.sideOffset,a=void 0===o?4:o,i=e.position,l=void 0===i?"popper":i,c=e.disabled,s=void 0!==c&&c,u=e.value,d=void 0===u?"":u,p=e.id,f=e.icon,m=void 0===f?null:f,v=e.placeholder,h=void 0===v?"":v,g=de(e,["children","sideOffset","position","disabled","value","id","icon","placeholder"]);return t.createElement(Ws,ue({value:d||void 0,disabled:s},g),t.createElement(Ks,{id:p,ref:n,className:tu},m&&t.createElement("span",{className:ru},m),t.createElement("span",{className:ou},t.createElement(qs,{placeholder:h})),t.createElement(Gs,{className:nu},t.createElement(jn,null))),t.createElement($s,{position:l,className:au,sideOffset:a},t.createElement(Xs,null,t.createElement(Qs,null,"ChevronUpIcon"),t.createElement(Xs,null,r),t.createElement(eu,null,"ChevronDownIcon"))))})),cu=t.forwardRef((function(e,n){var r=e.children,o=e.disabled,a=void 0!==o&&o,i=de(e,["children","disabled"]);return t.createElement(Ys,ue({},i,{ref:n,className:iu,disabled:a}),r)})),su=Js;const uu="Tabs",[du,pu]=x(uu,[Il]),fu=Il(),[mu,vu]=du(uu);function hu(e,t){return`${e}-trigger-${t}`}function gu(e,t){return`${e}-content-${t}`}const yu=d(((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:a,defaultValue:i,orientation:l="horizontal",dir:c,activationMode:s="automatic",...u}=e,d=Cl(c),[p,f]=I({prop:r,onChange:a,defaultProp:i});return o(mu,{scope:n,baseId:M(),value:p,onValueChange:f,orientation:l,dir:d,activationMode:s},o(Z.div,E({dir:d,"data-orientation":l},u,{ref:t})))})),wu=d(((e,t)=>{const{__scopeTabs:n,loop:r=!0,...a}=e,i=vu("TabsList",n),l=fu(n);return o(Vl,E({asChild:!0},l,{orientation:i.orientation,dir:i.dir,loop:r}),o(Z.div,E({role:"tablist","aria-orientation":i.orientation},a,{ref:t})))})),bu=d(((e,t)=>{const{__scopeTabs:n,value:r,disabled:a=!1,...i}=e,l=vu("TabsTrigger",n),c=fu(n),s=hu(l.baseId,r),u=gu(l.baseId,r),d=r===l.value;return o(Bl,E({asChild:!0},c,{focusable:!a,active:d}),o(Z.button,E({type:"button",role:"tab","aria-selected":d,"aria-controls":u,"data-state":d?"active":"inactive","data-disabled":a?"":void 0,disabled:a,id:s},i,{ref:t,onMouseDown:A(e.onMouseDown,(e=>{a||0!==e.button||!1!==e.ctrlKey?e.preventDefault():l.onValueChange(r)})),onKeyDown:A(e.onKeyDown,(e=>{[" ","Enter"].includes(e.key)&&l.onValueChange(r)})),onFocus:A(e.onFocus,(()=>{const e="manual"!==l.activationMode;d||a||!e||l.onValueChange(r)}))})))})),_u=d(((e,t)=>{const{__scopeTabs:n,value:r,forceMount:a,children:i,...l}=e,u=vu("TabsContent",n),d=hu(u.baseId,r),p=gu(u.baseId,r),f=r===u.value,m=c(f);return s((()=>{const e=requestAnimationFrame((()=>m.current=!1));return()=>cancelAnimationFrame(e)}),[]),o(ae,{present:a||f},(({present:n})=>o(Z.div,E({"data-state":f?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":d,hidden:!n,id:p,tabIndex:0},l,{ref:t,style:{...e.style,animationDuration:m.current?"0s":void 0}}),n&&i)))}));var Eu="Tabs-modules_root__TvYE1",xu="Tabs-modules_list__G3KVd",Ou="Tabs-modules_tab__-FuG6",Cu="Tabs-modules_content__X0OLh";function ku(e){var n,r=e.children,o=e.className,a=void 0===o?"":o,i=de(e,["children","className"]);return t.createElement(yu,ue({},i,{className:Qt(Eu,"demio-ui-tabs",(n={},n[a]=a,n))}),r)}function Au(e){var n,r=e.children,o=e.className,a=void 0===o?"":o;return t.createElement(wu,{className:Qt(xu,"demio-ui-tabs-list",(n={},n[a]=a,n))},r)}function Du(e){var n,r=e.children,o=e.className,a=void 0===o?"":o,i=de(e,["children","className"]);return t.createElement(bu,ue({},i,{className:Qt(Ou,(n={},n[a]=a,n))}),r)}function Pu(e){var n,r=e.children,o=e.value,a=e.className,i=void 0===a?"":a;return t.createElement(_u,{value:o,className:Qt(Cu,"demio-ui-tabs-tab",(n={},n[i]=i,n))},r)}export{cn as Alert,ln as Button,Uo as Checkbox,Wo as FormGroup,$o as Input,Go as InputHint,Bo as Label,an as Loader,ra as Modal,al as Popover,El as Progress,uc as RadioGroup,lu as Select,cu as SelectItem,su as SelectItemText,xc as Switch,Du as Tab,Pu as TabsContent,Au as TabsList,ku as TabsRoot,ts as Tooltip,Ho as icons};
|
|
6
|
+
*/$t=Xt,function(){var e={}.hasOwnProperty;function t(){for(var n=[],r=0;r<arguments.length;r++){var o=arguments[r];if(o){var a=typeof o;if("string"===a||"number"===a)n.push(o);else if(Array.isArray(o)){if(o.length){var i=t.apply(null,o);i&&n.push(i)}}else if("object"===a){if(o.toString!==Object.prototype.toString&&!o.toString.toString().includes("[native code]")){n.push(o.toString());continue}for(var l in o)e.call(o,l)&&o[l]&&n.push(l)}}}return n.join(" ")}$t.exports?(t.default=t,$t.exports=t):window.classNames=t}();var Yt,Jt,Qt=Gt(Xt.exports);function en(){return en=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},en.apply(this,arguments)}var tn=function(t){return e.createElement("svg",en({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"close_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Yt||(Yt=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Jt||(Jt=e.createElement("g",{mask:"url(#close_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m12 13.054-5.073 5.073a.724.724 0 0 1-.522.212.707.707 0 0 1-.532-.212.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527L10.946 12 5.873 6.927a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.532.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 10.946l5.073-5.073a.724.724 0 0 1 .522-.212.707.707 0 0 1 .532.212c.145.145.217.32.217.527a.717.717 0 0 1-.217.527L13.054 12l5.073 5.073c.138.139.21.313.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.217L12 13.054Z"}))))},nn={overlay:"Alert-modules_overlay__4XRHj","overlay-show":"Alert-modules_overlay-show__rdwHo",close:"Alert-modules_close__dyL0l",content:"Alert-modules_content__Y7nMS","content-show":"Alert-modules_content-show__ncLtG",title:"Alert-modules_title__e8UHT",description:"Alert-modules_description__wyWR-",buttons:"Alert-modules_buttons__cOEDw"},rn={button:"Button-modules_button__tpJr3",secondary:"Button-modules_secondary__JGOIF",outline:"Button-modules_outline__R9gjd",danger:"Button-modules_danger__eTzli",small:"Button-modules_small__dNTOw",large:"Button-modules_large__5tvgy",prefix:"Button-modules_prefix__86hpR",suffix:"Button-modules_suffix__5uHiO",fullWidth:"Button-modules_fullWidth__3ET8J"},on={loader:"Loader-modules_loader__waPdv",rotate:"Loader-modules_rotate__vBNW3",spin:"Loader-modules_spin__i7TnV",small:"Loader-modules_small__ACDdJ",inheritColor:"Loader-modules_inheritColor__4aWvb"};function an(e){var n,r=e.size,o=void 0===r?"medium":r,a=e.className,i=void 0===a?"":a,l=e.inheritColor,c=void 0!==l&&l;return t.createElement("span",{className:Qt("demio-ui-loader",on.loader,(n={},n[on[o]]=o,n[on.inheritColor]=c,n[i]=i,n))})}var ln=t.forwardRef((function(e,n){var r,o=e.disabled,a=void 0!==o&&o,i=e.children,l=e.onClick,c=e.size,s=void 0===c?"medium":c,u=e.variant,d=void 0===u?"primary":u,p=e.type,f=void 0===p?"button":p,m=e.prefix,v=void 0===m?"":m,h=e.suffix,g=void 0===h?"":h,y=e.className,w=void 0===y?"":y,b=e.fullWidth,_=void 0!==b&&b,E=e.showLoader,x=void 0!==E&&E,O=de(e,["disabled","children","onClick","size","variant","type","prefix","suffix","className","fullWidth","showLoader"]);return t.createElement("button",ue({ref:n,type:f,disabled:a,className:Qt("demio-ui-button",rn.button,(r={},r[w]=w,r[rn[s]]=s,r[rn[d]]=d,r[rn.fullWidth]=_,r)),onClick:l},O),(v||x)&&t.createElement("span",{className:rn.prefix},x?t.createElement(an,{size:"small",inheritColor:!0}):v),i,g&&t.createElement("span",{className:rn.suffix},g))}));function cn(e){var n=e.open,r=e.actionText,o=void 0===r?"OK":r,a=e.onActionClick,i=e.cancelText,l=void 0===i?"Cancel":i,c=e.onCancelClick,s=e.title,u=e.description,d=void 0===u?"":u,p=e.showLoader,f=void 0!==p&&p,m=e.isOkDisabled,v=void 0!==m&&m,h=e.actionButtonType,g=void 0===h?"danger":h,y=e.maxWidth,w=void 0===y?"540px":y,b=e.onClose;return t.createElement(Ft,{open:n},t.createElement(Vt,{className:nn.portal},t.createElement(Bt,{className:nn.overlay}),t.createElement(Ut,{className:Qt("demio-ui-alert",nn.content),style:{maxWidth:w}},t.createElement("button",{className:nn.close,onClick:b||c,"data-testid":"close-button"},t.createElement(tn,null)),t.createElement(Kt,{className:nn.title},s),d&&t.createElement(qt,{className:nn.description},d),t.createElement("div",{className:nn.buttons},t.createElement(Wt,{asChild:!0},t.createElement(ln,{onClick:c,variant:"outline"},l)),t.createElement(zt,{asChild:!0},t.createElement(ln,{onClick:a,disabled:v,variant:g,showLoader:f},o))))))}function sn(e){const t=c({value:e,previous:e});return r((()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous)),[e])}function un(e){const[t,n]=u(void 0);return D((()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const t=new ResizeObserver((t=>{if(!Array.isArray(t))return;if(!t.length)return;const r=t[0];let o,a;if("borderBoxSize"in r){const e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;o=t.inlineSize,a=t.blockSize}else o=e.offsetWidth,a=e.offsetHeight;n({width:o,height:a})}));return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)}),[e]),t}const dn="Checkbox",[pn,fn]=x(dn),[mn,vn]=pn(dn),hn=d(((e,t)=>{const{__scopeCheckbox:n,name:r,checked:a,defaultChecked:i,required:l,disabled:d,value:p="on",onCheckedChange:f,...m}=e,[v,h]=u(null),g=k(t,(e=>h(e))),y=c(!1),w=!v||Boolean(v.closest("form")),[b=!1,_]=I({prop:a,defaultProp:i,onChange:f}),x=c(b);return s((()=>{const e=null==v?void 0:v.form;if(e){const t=()=>_(x.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}}),[v,_]),o(mn,{scope:n,state:b,disabled:d},o(Z.button,E({type:"button",role:"checkbox","aria-checked":yn(b)?"mixed":b,"aria-required":l,"data-state":wn(b),"data-disabled":d?"":void 0,disabled:d,value:p},m,{ref:g,onKeyDown:A(e.onKeyDown,(e=>{"Enter"===e.key&&e.preventDefault()})),onClick:A(e.onClick,(e=>{_((e=>!!yn(e)||!e)),w&&(y.current=e.isPropagationStopped(),y.current||e.stopPropagation())}))})),w&&o(gn,{control:v,bubbles:!y.current,name:r,value:p,checked:b,required:l,disabled:d,style:{transform:"translateX(-100%)"}}))})),gn=e=>{const{control:t,checked:n,bubbles:r=!0,...a}=e,i=c(null),l=sn(n),u=un(t);return s((()=>{const e=i.current,t=window.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(t,"checked").set;if(l!==n&&o){const t=new Event("click",{bubbles:r});e.indeterminate=yn(n),o.call(e,!yn(n)&&n),e.dispatchEvent(t)}}),[l,n,r]),o("input",E({type:"checkbox","aria-hidden":!0,defaultChecked:!yn(n)&&n},a,{tabIndex:-1,ref:i,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function yn(e){return"indeterminate"===e}function wn(e){return yn(e)?"indeterminate":e?"checked":"unchecked"}const bn=hn,_n=d(((e,t)=>{const{__scopeCheckbox:n,forceMount:r,...a}=e,i=vn("CheckboxIndicator",n);return o(ae,{present:r||yn(i.state)||!0===i.state},o(Z.span,E({"data-state":wn(i.state),"data-disabled":i.disabled?"":void 0},a,{ref:t,style:{pointerEvents:"none",...e.style}})))}));var En,xn,On="Checkbox-modules_container__psQsQ",Cn="Checkbox-modules_root__iysyc",kn="Checkbox-modules_uncheckIcon__fVOb2",An="Checkbox-modules_indicator__JaSwR",Dn="Checkbox-modules_label__4TV-f",Pn="Checkbox-modules_disabled__eKbuP";function Tn(){return Tn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Tn.apply(this,arguments)}var Mn,Sn;function In(){return In=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},In.apply(this,arguments)}var Ln,Nn,jn=function(t){return e.createElement("svg",In({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"keyboard_arrow_down_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Mn||(Mn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Sn||(Sn=e.createElement("g",{mask:"url(#keyboard_arrow_down_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 14.677a.93.93 0 0 1-.34-.066.84.84 0 0 1-.293-.19L6.873 9.927a.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 12.946l4.073-4.073a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217.145.145.217.32.217.527a.717.717 0 0 1-.217.527l-4.494 4.494a.83.83 0 0 1-.633.256Z"}))))};function Rn(){return Rn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Rn.apply(this,arguments)}var Hn,Zn;function Fn(){return Fn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Fn.apply(this,arguments)}var Vn,Bn;function Un(){return Un=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Un.apply(this,arguments)}var zn,Wn;function Kn(){return Kn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Kn.apply(this,arguments)}var qn,Gn;function $n(){return $n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},$n.apply(this,arguments)}var Xn,Yn;function Jn(){return Jn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Jn.apply(this,arguments)}var Qn,er,tr=function(t){return e.createElement("svg",Jn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"checkbox_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Xn||(Xn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Yn||(Yn=e.createElement("g",{mask:"url(#checkbox_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"m10.6 13.4-2.15-2.15a.948.948 0 0 0-.7-.275.948.948 0 0 0-.7.275.948.948 0 0 0-.275.7c0 .283.092.517.275.7L9.9 15.5c.2.2.433.3.7.3.267 0 .5-.1.7-.3l5.65-5.65a.948.948 0 0 0 .275-.7.948.948 0 0 0-.275-.7.948.948 0 0 0-.7-.275.948.948 0 0 0-.7.275L10.6 13.4ZM5 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 19V5c0-.55.196-1.02.587-1.413A1.926 1.926 0 0 1 5 3h14c.55 0 1.02.196 1.413.587C20.803 3.98 21 4.45 21 5v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 21H5Z"}))))};function nr(){return nr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},nr.apply(this,arguments)}var rr,or,ar=function(t){return e.createElement("svg",nr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"checkbox_uncheck_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Qn||(Qn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),er||(er=e.createElement("g",{mask:"url(#checkbox_uncheck_svg__a)"},e.createElement("path",{fill:"#838B97",d:"M5 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 19V5c0-.55.196-1.02.587-1.413A1.926 1.926 0 0 1 5 3h14c.55 0 1.02.196 1.413.587C20.803 3.98 21 4.45 21 5v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 21H5Zm0-2h14V5H5v14Z"}))))};function ir(){return ir=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ir.apply(this,arguments)}var lr,cr;function sr(){return sr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},sr.apply(this,arguments)}var ur,dr;function pr(){return pr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},pr.apply(this,arguments)}var fr,mr;function vr(){return vr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},vr.apply(this,arguments)}var hr,gr;function yr(){return yr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yr.apply(this,arguments)}var wr,br;function _r(){return _r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_r.apply(this,arguments)}var Er,xr;function Or(){return Or=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Or.apply(this,arguments)}var Cr,kr;function Ar(){return Ar=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ar.apply(this,arguments)}var Dr;function Pr(){return Pr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Pr.apply(this,arguments)}var Tr,Mr;function Sr(){return Sr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Sr.apply(this,arguments)}var Ir,Lr;function Nr(){return Nr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Nr.apply(this,arguments)}var jr,Rr;function Hr(){return Hr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Hr.apply(this,arguments)}var Zr,Fr;function Vr(){return Vr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Vr.apply(this,arguments)}var Br,Ur;function zr(){return zr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},zr.apply(this,arguments)}var Wr;function Kr(){return Kr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Kr.apply(this,arguments)}var qr,Gr=function(t){return e.createElement("svg",Kr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 22 16"},t),Wr||(Wr=e.createElement("path",{fill:"#838B97",d:"M11 2.335a9.77 9.77 0 0 1 8.82 5.5 9.76 9.76 0 0 1-8.82 5.5 9.76 9.76 0 0 1-8.82-5.5 9.77 9.77 0 0 1 8.82-5.5zm0-2c-5 0-9.27 3.11-11 7.5 1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zm0 5a2.5 2.5 0 0 1 0 5 2.5 2.5 0 0 1 0-5zm0-2c-2.48 0-4.5 2.02-4.5 4.5s2.02 4.5 4.5 4.5 4.5-2.02 4.5-4.5-2.02-4.5-4.5-4.5z"})))};function $r(){return $r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},$r.apply(this,arguments)}var Xr,Yr=function(t){return e.createElement("svg",$r({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 20"},t),qr||(qr=e.createElement("path",{fill:"#838B97",d:"M23.775 17.898 1.35.367A.6.6 0 0 0 .507.46L.132.93a.6.6 0 0 0 .093.844l22.425 17.53a.6.6 0 0 0 .843-.093l.375-.468a.6.6 0 0 0-.093-.844zM11.13 5.728l5.054 3.952a4.189 4.189 0 0 0-5.055-3.952zm1.74 8.215L7.816 9.99a4.19 4.19 0 0 0 5.054 3.952zM12 4.435c3.7 0 7.09 2.063 8.922 5.4a10.71 10.71 0 0 1-1.65 2.258l1.416 1.106a12.518 12.518 0 0 0 1.983-2.817 1.214 1.214 0 0 0 0-1.094C20.636 5.32 16.61 2.635 12 2.635c-1.376 0-2.69.263-3.924.706l1.74 1.36A9.843 9.843 0 0 1 12 4.435zm0 10.8c-3.7 0-7.09-2.062-8.922-5.4.45-.821 1.004-1.58 1.651-2.257L3.314 6.472a12.51 12.51 0 0 0-1.983 2.816 1.213 1.213 0 0 0 0 1.095C3.364 14.35 7.39 17.035 12 17.035c1.376 0 2.689-.264 3.924-.705l-1.74-1.36a9.86 9.86 0 0 1-2.184.265z"})))};function Jr(){return Jr=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Jr.apply(this,arguments)}var Qr;function eo(){return eo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},eo.apply(this,arguments)}var to,no;function ro(){return ro=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ro.apply(this,arguments)}var oo,ao;function io(){return io=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},io.apply(this,arguments)}var lo,co;function so(){return so=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},so.apply(this,arguments)}var uo,po;function fo(){return fo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},fo.apply(this,arguments)}var mo,vo;function ho(){return ho=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ho.apply(this,arguments)}var go,yo;function wo(){return wo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},wo.apply(this,arguments)}var bo,_o;function Eo(){return Eo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Eo.apply(this,arguments)}var xo,Oo;function Co(){return Co=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Co.apply(this,arguments)}var ko,Ao;function Do(){return Do=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Do.apply(this,arguments)}var Po,To;function Mo(){return Mo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Mo.apply(this,arguments)}var So,Io;function Lo(){return Lo=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Lo.apply(this,arguments)}var No,jo;function Ro(){return Ro=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ro.apply(this,arguments)}var Ho=Object.freeze({__proto__:null,AddIcon:function(t){return e.createElement("svg",Tn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"add_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},En||(En=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),xn||(xn=e.createElement("g",{mask:"url(#add_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 18.75a.725.725 0 0 1-.535-.216.726.726 0 0 1-.215-.534v-5.25H6a.726.726 0 0 1-.534-.216A.726.726 0 0 1 5.25 12c0-.213.072-.391.216-.535A.726.726 0 0 1 6 11.25h5.25V6c0-.213.072-.39.216-.534A.726.726 0 0 1 12 5.25c.213 0 .391.072.535.216A.726.726 0 0 1 12.75 6v5.25H18c.212 0 .39.072.534.216a.726.726 0 0 1 .216.534c0 .213-.072.391-.216.535a.726.726 0 0 1-.534.215h-5.25V18c0 .212-.072.39-.216.534a.726.726 0 0 1-.534.216Z"}))))},ArrowDownIcon:jn,ArrowLeftIcon:function(t){return e.createElement("svg",Rn({xmlns:"http://www.w3.org/2000/svg",width:18,height:18,fill:"none"},t),Ln||(Ln=e.createElement("g",{clipPath:"url(#arrow-left_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m9.207 16.57.696-.697a.422.422 0 0 0 0-.596L4.45 9.823h12.003a.422.422 0 0 0 .422-.422v-.984a.422.422 0 0 0-.422-.422H4.45l5.453-5.454a.422.422 0 0 0 0-.596l-.696-.696a.422.422 0 0 0-.596 0L1.249 8.61a.422.422 0 0 0 0 .596L8.61 16.57a.422.422 0 0 0 .596 0Z"}))),Nn||(Nn=e.createElement("defs",null,e.createElement("clipPath",{id:"arrow-left_svg__a"},e.createElement("path",{fill:"#fff",d:"M0 0h18v18H0z"})))))},BlockIcon:function(t){return e.createElement("svg",Fn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"block_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Hn||(Hn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Zn||(Zn=e.createElement("g",{mask:"url(#block_svg__a)"},e.createElement("path",{fill:"#42454B",d:"M12.002 21.5a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-.938-.16-1.842-.48-2.71a8.124 8.124 0 0 0-1.374-2.382L6.908 18.146a7.93 7.93 0 0 0 2.382 1.378A7.839 7.839 0 0 0 12 20Zm-6.146-2.908L17.092 5.854a7.62 7.62 0 0 0-2.375-1.383A7.947 7.947 0 0 0 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 .938.159 1.842.476 2.71a7.93 7.93 0 0 0 1.378 2.382Z"}))))},BlurOnIcon:function(t){return e.createElement("svg",Un({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"blur_on_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Vn||(Vn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Bn||(Bn=e.createElement("g",{mask:"url(#blur_on_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M3 14.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm3 8.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 17.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658A.893.893 0 0 1 6 13.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265A.893.893 0 0 1 5.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 6 5.077c.262 0 .48.088.658.265A.893.893 0 0 1 6.923 6c0 .262-.088.48-.265.658A.893.893 0 0 1 6 6.923Zm4.002 8.423c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM10 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265A.893.893 0 0 1 9.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 10 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM10 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4.002 11.846c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM14 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 14 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM14 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4 15.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 5.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm3 7.577a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Z"}))))},CachedIcon:function(t){return e.createElement("svg",Kn({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"cached_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},zn||(zn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Wn||(Wn=e.createElement("g",{mask:"url(#cached_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12.05 19.75c-2.163 0-4.004-.753-5.522-2.258C5.009 15.987 4.25 14.156 4.25 12v-.78l-1.323 1.322a.725.725 0 0 1-.522.213.707.707 0 0 1-.532-.213.718.718 0 0 1-.217-.527c0-.206.072-.382.217-.527l2.494-2.494A.867.867 0 0 1 5 8.724c.241 0 .452.09.633.27l2.494 2.495c.138.138.21.312.212.521a.707.707 0 0 1-.212.532.718.718 0 0 1-.527.218.718.718 0 0 1-.527-.218L5.75 11.22V12c0 1.737.612 3.213 1.835 4.428 1.223 1.215 2.711 1.822 4.465 1.822.292 0 .584-.02.874-.06.29-.04.577-.107.859-.204a.879.879 0 0 1 .603.02.81.81 0 0 1 .426.396.678.678 0 0 1 .018.585.664.664 0 0 1-.444.388c-.376.133-.762.23-1.155.288a8.049 8.049 0 0 1-1.181.087Zm-.1-14c-.292 0-.584.02-.874.06-.29.04-.577.107-.859.203a.901.901 0 0 1-.61-.02.808.808 0 0 1-.434-.395.655.655 0 0 1-.023-.57.646.646 0 0 1 .423-.388c.387-.133.78-.231 1.176-.295a7.593 7.593 0 0 1 1.201-.095c2.163 0 4.004.753 5.522 2.258C18.991 8.013 19.75 9.844 19.75 12v.78l1.323-1.322a.725.725 0 0 1 .522-.213.707.707 0 0 1 .532.213c.145.144.217.32.217.527a.717.717 0 0 1-.217.527l-2.494 2.494a.867.867 0 0 1-.633.27.867.867 0 0 1-.633-.27l-2.494-2.495a.724.724 0 0 1-.212-.522.707.707 0 0 1 .212-.531.717.717 0 0 1 .527-.218c.206 0 .382.073.527.218l1.323 1.323V12c0-1.737-.611-3.213-1.835-4.428-1.223-1.215-2.711-1.822-4.465-1.822Z"}))))},CalendarIcon:function(t){return e.createElement("svg",$n({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 32 32"},t),e.createElement("mask",{id:"calendar_svg__a",width:32,height:32,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},qn||(qn=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h32v32H0z"}))),Gn||(Gn=e.createElement("g",{mask:"url(#calendar_svg__a)"},e.createElement("path",{fill:"#11B06E",d:"M6.667 29.333a2.568 2.568 0 0 1-1.884-.783A2.568 2.568 0 0 1 4 26.666V8c0-.734.261-1.361.783-1.883a2.568 2.568 0 0 1 1.884-.784H8V4c0-.378.128-.695.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.127.95.383.256.255.384.572.384.95v1.333h10.666V4c0-.378.128-.695.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.127.95.383.255.255.383.572.383.95v1.333h1.333c.734 0 1.361.261 1.884.784.522.522.783 1.15.783 1.883v18.666c0 .734-.261 1.362-.783 1.884a2.568 2.568 0 0 1-1.884.783H6.667Zm0-2.666h18.666V13.332H6.667v13.333Zm9.333-8a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.378.127-.694.383-.95A1.29 1.29 0 0 1 16 16c.378 0 .694.128.95.383.256.256.383.572.383.95s-.127.695-.383.95a1.29 1.29 0 0 1-.95.383Zm-5.333 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.384-.95c0-.378.128-.694.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.128.95.383.255.256.383.572.383.95s-.128.695-.383.95a1.29 1.29 0 0 1-.95.383Zm10.666 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.378.128-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.128.95.383.256.256.384.572.384.95s-.128.695-.384.95a1.29 1.29 0 0 1-.95.383ZM16 24a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.377.127-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .694.128.95.384.256.255.383.572.383.95 0 .377-.127.694-.383.95A1.29 1.29 0 0 1 16 24Zm-5.333 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.384-.95c0-.377.128-.694.384-.95a1.29 1.29 0 0 1 .95-.383c.377 0 .694.128.95.384.255.255.383.572.383.95 0 .377-.128.694-.383.95a1.29 1.29 0 0 1-.95.383Zm10.666 0a1.29 1.29 0 0 1-.95-.384 1.29 1.29 0 0 1-.383-.95c0-.377.128-.694.383-.95a1.29 1.29 0 0 1 .95-.383c.378 0 .695.128.95.384.256.255.384.572.384.95 0 .377-.128.694-.384.95a1.29 1.29 0 0 1-.95.383Z"}))))},CheckCircleIcon:function(t){return e.createElement("svg",ir({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"check_circle_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},rr||(rr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),or||(or=e.createElement("g",{mask:"url(#check_circle_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m10.58 14.146-2.322-2.323a.724.724 0 0 0-.522-.212.707.707 0 0 0-.532.212.717.717 0 0 0-.217.527c0 .206.072.382.217.527l2.744 2.744a.87.87 0 0 0 .633.271c.24 0 .452-.09.632-.27l5.564-5.564a.725.725 0 0 0 .212-.522.707.707 0 0 0-.212-.532.718.718 0 0 0-.527-.217.717.717 0 0 0-.527.217l-5.142 5.142Zm1.422 7.354a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749Z"}))))},CheckboxIcon:tr,CheckboxUncheckIcon:ar,ClockIcon:function(t){return e.createElement("svg",sr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"clock_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},lr||(lr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),cr||(cr=e.createElement("g",{mask:"url(#clock_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"M13 11.6V8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8v3.975c0 .133.025.263.075.388.05.125.125.237.225.337l3.3 3.3a.948.948 0 0 0 .7.275A.948.948 0 0 0 16 16a.948.948 0 0 0 .275-.7.948.948 0 0 0-.275-.7l-3-3ZM12 22a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12c0-1.383.263-2.683.788-3.9a10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2c1.383 0 2.683.263 3.9.788a10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Zm0-2c2.217 0 4.104-.78 5.663-2.337C19.22 16.104 20 14.217 20 12s-.78-4.104-2.337-5.662C16.104 4.779 14.217 4 12 4s-4.104.78-5.662 2.338C4.779 7.896 4 9.783 4 12s.78 4.104 2.338 5.663C7.896 19.22 9.783 20 12 20Z"}))))},CloseIcon:tn,CustomizeIcon:function(t){return e.createElement("svg",pr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"customize_svg__a",width:25,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ur||(ur=e.createElement("path",{fill:"#D9D9D9",d:"M.5 0h24v24H.5z"}))),dr||(dr=e.createElement("g",{mask:"url(#customize_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"M14.5 21a.968.968 0 0 1-.713-.288A.968.968 0 0 1 13.5 20c0-.283.096-.52.287-.712A.968.968 0 0 1 14.5 19c.783 0 1.48-.154 2.087-.462.609-.309.913-.655.913-1.038 0-.233-.108-.45-.325-.65-.217-.2-.517-.383-.9-.55l1.475-1.475c.533.317.958.692 1.275 1.125.317.433.475.95.475 1.55 0 1.1-.525 1.958-1.575 2.575A6.644 6.644 0 0 1 14.5 21Zm-9.425-7.65c-.483-.283-.867-.612-1.15-.987-.283-.375-.425-.83-.425-1.363 0-.7.258-1.287.775-1.762.517-.476 1.442-1.005 2.775-1.588 1.05-.483 1.72-.82 2.013-1.013.291-.191.437-.404.437-.637 0-.267-.162-.5-.488-.7C8.688 5.1 8.183 5 7.5 5c-.417 0-.767.05-1.05.15-.283.1-.542.267-.775.5A1.124 1.124 0 0 1 5 5.975a.908.908 0 0 1-.725-.225.938.938 0 0 1-.375-.65.908.908 0 0 1 .225-.725c.317-.383.77-.708 1.362-.975C6.08 3.133 6.75 3 7.5 3c1.2 0 2.167.27 2.9.813.733.541 1.1 1.27 1.1 2.187 0 .65-.242 1.233-.725 1.75-.483.517-1.458 1.092-2.925 1.725-.967.417-1.6.725-1.9.925-.3.2-.45.4-.45.6 0 .15.096.296.287.438.192.141.455.279.788.412l-1.5 1.5ZM19.35 10.4 15.1 6.15l1.05-1.05c.4-.4.88-.6 1.438-.6.558 0 1.029.2 1.412.6l1.4 1.4c.4.383.6.854.6 1.412 0 .559-.2 1.038-.6 1.438l-1.05 1.05ZM6.5 19h1.4l7.2-7.2-1.4-1.4-7.2 7.2V19ZM5 21a.48.48 0 0 1-.35-.15.48.48 0 0 1-.15-.35v-3.55c0-.033.05-.15.15-.35l9.05-9.05 4.25 4.25-9.05 9.05c-.033.033-.15.083-.35.15H5Z"}))))},DeleteIcon:function(t){return e.createElement("svg",vr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"delete_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},fr||(fr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),mr||(mr=e.createElement("g",{mask:"url(#delete_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M7.308 20.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6h-.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535.73.73 0 0 1 .215-.535.726.726 0 0 1 .535-.215H9a.84.84 0 0 1 .263-.63.889.889 0 0 1 .64-.255h4.193c.251 0 .465.085.64.254A.84.84 0 0 1 15 4.5h3.75a.73.73 0 0 1 .535.215.726.726 0 0 1 .215.535.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215h-.25v12.692c0 .506-.175.933-.525 1.283-.35.35-.778.525-1.283.525H7.308ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087h9.385a.3.3 0 0 0 .221-.087.3.3 0 0 0 .087-.22V6H7Zm2.404 10.25a.73.73 0 0 0 .215.535.726.726 0 0 0 .535.215.726.726 0 0 0 .534-.215.726.726 0 0 0 .216-.535v-7.5a.726.726 0 0 0-.216-.535.726.726 0 0 0-.534-.215.726.726 0 0 0-.535.215.726.726 0 0 0-.215.535v7.5Zm3.692 0c0 .213.072.391.216.535a.726.726 0 0 0 .534.215.726.726 0 0 0 .535-.215.726.726 0 0 0 .215-.535v-7.5a.726.726 0 0 0-.215-.535.726.726 0 0 0-.535-.215.726.726 0 0 0-.534.215.726.726 0 0 0-.216.535v7.5ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087H7V6Z"}))))},EventDetailsIcon:function(t){return e.createElement("svg",yr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none",viewBox:"0 0 32 32"},t),e.createElement("mask",{id:"event_details_svg__a",width:32,height:32,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},hr||(hr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h32v32H0z"}))),gr||(gr=e.createElement("g",{mask:"url(#event_details_svg__a)"},e.createElement("path",{fill:"#11B06E",d:"M5.333 26.667a2.568 2.568 0 0 1-1.883-.784A2.568 2.568 0 0 1 2.667 24V8c0-.733.26-1.361.783-1.883a2.568 2.568 0 0 1 1.883-.784h21.334c.733 0 1.36.261 1.883.784.522.522.783 1.15.783 1.883v16c0 .733-.26 1.361-.783 1.883a2.568 2.568 0 0 1-1.883.784H5.333Zm0-2.667h21.334V8H5.333v16ZM8 22.667h16c.378 0 .694-.128.95-.384a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95A1.29 1.29 0 0 0 24 20H8a1.29 1.29 0 0 0-.95.383 1.29 1.29 0 0 0-.383.95c0 .378.127.695.383.95.256.256.572.384.95.384Zm0-5.334h16c.378 0 .694-.127.95-.383a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95 1.29 1.29 0 0 0-.95-.383H8a1.29 1.29 0 0 0-.95.383 1.29 1.29 0 0 0-.383.95c0 .378.127.694.383.95s.572.383.95.383ZM8 12h10.667c.377 0 .694-.128.95-.383a1.29 1.29 0 0 0 .383-.95 1.29 1.29 0 0 0-.383-.95 1.29 1.29 0 0 0-.95-.384H8a1.29 1.29 0 0 0-.95.384 1.29 1.29 0 0 0-.383.95c0 .377.127.694.383.95.256.255.572.383.95.383Z"}))))},EventRepeatIcon:function(t){return e.createElement("svg",_r({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"event_repeat_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},wr||(wr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),br||(br=e.createElement("g",{mask:"url(#event_repeat_svg__a)"},e.createElement("path",{fill:"#6C737A",d:"M5 22c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 20V6c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 5 4h1V3c0-.283.096-.52.287-.712A.968.968 0 0 1 7 2c.283 0 .52.096.713.288.191.191.287.429.287.712v1h8V3c0-.283.096-.52.288-.712A.968.968 0 0 1 17 2c.283 0 .52.096.712.288.192.191.288.429.288.712v1h1c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v5c0 .283-.096.52-.288.713A.968.968 0 0 1 20 12a.968.968 0 0 1-.712-.287A.968.968 0 0 1 19 11v-1H5v10h6c.283 0 .52.096.713.288.191.191.287.429.287.712s-.096.52-.287.712A.968.968 0 0 1 11 22H5Zm14 2c-1.067 0-2.02-.296-2.863-.887a4.949 4.949 0 0 1-1.812-2.313.508.508 0 0 1 .063-.538.574.574 0 0 1 .487-.262c.233 0 .446.07.637.212.192.142.346.321.463.538a3.4 3.4 0 0 0 1.25 1.275A3.41 3.41 0 0 0 19 22.5c.967 0 1.792-.342 2.475-1.025A3.372 3.372 0 0 0 22.5 19c0-.967-.342-1.792-1.025-2.475A3.372 3.372 0 0 0 19 15.5a3.404 3.404 0 0 0-2.45 1h.7a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H15a.968.968 0 0 1-.713-.288A.968.968 0 0 1 14 17v-2.25a.728.728 0 0 1 .75-.75.728.728 0 0 1 .75.75v.675c.45-.433.975-.78 1.575-1.038A4.816 4.816 0 0 1 19 14c1.383 0 2.563.488 3.538 1.463C23.512 16.438 24 17.617 24 19s-.488 2.563-1.462 3.538C21.562 23.512 20.383 24 19 24ZM5 8h14V6H5v2Z"}))))},InfoIcon:function(t){return e.createElement("svg",Or({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"info_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Er||(Er=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),xr||(xr=e.createElement("g",{mask:"url(#info_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 16.75a.726.726 0 0 0 .535-.216.726.726 0 0 0 .215-.534v-4.25a.726.726 0 0 0-.216-.534A.727.727 0 0 0 12 11a.725.725 0 0 0-.535.216.726.726 0 0 0-.215.534V16c0 .212.072.39.216.534a.726.726 0 0 0 .534.216Zm0-7.462a.78.78 0 0 0 .575-.232.781.781 0 0 0 .233-.575.782.782 0 0 0-.232-.576.782.782 0 0 0-.576-.232.781.781 0 0 0-.575.232.782.782 0 0 0-.233.576c0 .229.078.42.232.575a.781.781 0 0 0 .576.232Zm.002 12.212a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-2.233-.775-4.125-2.325-5.675C16.125 4.775 14.233 4 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 2.233.775 4.125 2.325 5.675C7.875 19.225 9.767 20 12 20Z"}))))},InfoSolidIcon:function(t){return e.createElement("svg",Ar({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"info-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Cr||(Cr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),kr||(kr=e.createElement("g",{mask:"url(#info-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 17a.97.97 0 0 0 .713-.288A.968.968 0 0 0 13 16v-4a.968.968 0 0 0-.287-.713A.968.968 0 0 0 12 11a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 12v4c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-8c.283 0 .52-.096.713-.287A.967.967 0 0 0 13 8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8c0 .283.096.52.287.713.192.191.43.287.713.287Zm0 13a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12a9.74 9.74 0 0 1 .788-3.9 10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2a9.74 9.74 0 0 1 3.9.788 10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Z"}))))},MagicIcon:function(t){return e.createElement("svg",Pr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),Dr||(Dr=e.createElement("path",{fill:"#02BF6F",d:"M23.341 3.576 20.424.659A2.244 2.244 0 0 0 18.834 0c-.576 0-1.152.22-1.591.66L.659 17.241a2.25 2.25 0 0 0 0 3.182l2.917 2.917c.439.44 1.015.659 1.59.659.576 0 1.152-.22 1.592-.66L23.34 6.759c.879-.879.879-2.303 0-3.182ZM5.167 21.75 2.25 18.833 12.745 8.337l2.918 2.917L5.167 21.75ZM17.254 9.663l-2.918-2.918 4.495-4.495h.003l2.916 2.917-4.496 4.496ZM20.25 13.5 19 16l-2.5 1.25L19 18.5l1.25 2.5 1.25-2.5 2.5-1.25L21.5 16l-1.25-2.5Zm-9.75-9 .75-1.5 1.5-.75-1.5-.75L10.5 0l-.75 1.5-1.5.75 1.5.75.75 1.5Zm-6.75 3L5 5l2.5-1.25L5 2.5 3.75 0 2.5 2.5 0 3.75 2.5 5l1.25 2.5Z"})))},MaterialsIcon:function(t){return e.createElement("svg",Sr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"materials_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Tr||(Tr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Mr||(Mr=e.createElement("g",{mask:"url(#materials_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"m10.825 17.425-2.55 1.6a.493.493 0 0 1-.513.013.46.46 0 0 1-.262-.438v-3.2c0-.2.088-.346.263-.438a.493.493 0 0 1 .512.013l2.55 1.6c.167.1.25.242.25.425a.47.47 0 0 1-.25.425ZM13 10a2.893 2.893 0 0 1-2.125-.875A2.893 2.893 0 0 1 10 7c0-.833.292-1.542.875-2.125A2.893 2.893 0 0 1 13 4h.5a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H13c-.417 0-.77.146-1.063.438A1.446 1.446 0 0 0 11.5 7c0 .417.146.77.438 1.063.291.291.645.437 1.062.437h.5a.728.728 0 0 1 .75.75.728.728 0 0 1-.75.75H13Zm4 0h-.5a.728.728 0 0 1-.75-.75.728.728 0 0 1 .75-.75h.5c.417 0 .77-.146 1.063-.438.291-.291.437-.645.437-1.062 0-.417-.146-.77-.438-1.063A1.447 1.447 0 0 0 17 5.5h-.5a.728.728 0 0 1-.75-.75.728.728 0 0 1 .75-.75h.5c.833 0 1.542.292 2.125.875S20 6.167 20 7s-.292 1.542-.875 2.125A2.893 2.893 0 0 1 17 10Zm-.75-2.25h-2.5A.728.728 0 0 1 13 7a.728.728 0 0 1 .75-.75h2.5A.728.728 0 0 1 17 7a.728.728 0 0 1-.75.75ZM16.1 14v-2H21V3H9v9H7V3c0-.55.196-1.02.588-1.413A1.926 1.926 0 0 1 9 1h12c.55 0 1.02.196 1.413.587C22.803 1.98 23 2.45 23 3v9c0 .55-.196 1.02-.587 1.412A1.926 1.926 0 0 1 21 14h-4.9ZM3 23c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 1 21v-8c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 3 11h12c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v8c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 15 23H3Zm0-2h12v-8H3v8Z"}))))},MicOffIcon:function(t){return e.createElement("svg",Nr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ir||(Ir=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Lr||(Lr=e.createElement("g",{mask:"url(#mic_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25-1.377-1.376V5a.967.967 0 0 0-.287-.713.968.968 0 0 0-.713-.287.968.968 0 0 0-.712.287.967.967 0 0 0-.288.713v2.535l-1.5-1.5V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.546c-1.511-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.593 6.593 0 0 1-1.65 1.128 5.849 5.849 0 0 1-1.987.554V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOffSolidIcon:function(t){return e.createElement("svg",Hr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},jr||(jr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Rr||(Rr=e.createElement("g",{mask:"url(#mic_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25L9.144 6.036V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.542c-1.511-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.432 6.432 0 0 1-1.65 1.12 6.3 6.3 0 0 1-1.987.566V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOnSolidIcon:function(t){return e.createElement("svg",zr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Br||(Br=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ur||(Ur=e.createElement("g",{mask:"url(#mic-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.542c-1.512-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.295 6.295 0 0 1-1.85 3.814c-1.058 1.057-2.343 1.673-3.854 1.848V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215Z"}))))},MicOnfIcon:function(t){return e.createElement("svg",Vr({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Zr||(Zr=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Fr||(Fr=e.createElement("g",{mask:"url(#mic_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.546c-1.512-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.273 6.273 0 0 1-1.85 3.809c-1.058 1.054-2.343 1.67-3.854 1.849V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215ZM12 12c.283 0 .52-.096.712-.287A.968.968 0 0 0 13 11V5a.967.967 0 0 0-.288-.713A.968.968 0 0 0 12 4a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 5v6c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))},PasswordEyeCrossedIcon:Yr,PasswordEyeIcon:Gr,PlayIcon:function(t){return e.createElement("svg",Jr({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},t),Xr||(Xr=e.createElement("path",{fill:"#42454B",d:"m15.262 6.708-11-6.503C3.37-.323 2 .19 2 1.495V14.5c0 1.172 1.272 1.878 2.263 1.29l11-6.5c.98-.578.984-2.002 0-2.58Z"})))},SmileIcon:function(t){return e.createElement("svg",eo({xmlns:"http://www.w3.org/2000/svg",width:20,height:20,fill:"none"},t),Qr||(Qr=e.createElement("path",{fill:"#9FA6AD",d:"M10 .313A9.686 9.686 0 0 0 .312 10 9.686 9.686 0 0 0 10 19.688 9.686 9.686 0 0 0 19.688 10 9.686 9.686 0 0 0 10 .312Zm0 17.5c-4.309 0-7.813-3.504-7.813-7.813 0-4.309 3.504-7.813 7.813-7.813 4.309 0 7.813 3.504 7.813 7.813 0 4.309-3.504 7.813-7.813 7.813ZM6.875 9.374c.691 0 1.25-.559 1.25-1.25s-.559-1.25-1.25-1.25-1.25.559-1.25 1.25.559 1.25 1.25 1.25Zm6.25 0c.691 0 1.25-.559 1.25-1.25s-.559-1.25-1.25-1.25-1.25.559-1.25 1.25.559 1.25 1.25 1.25Zm.156 2.836A4.263 4.263 0 0 1 10 13.75a4.25 4.25 0 0 1-3.281-1.54.94.94 0 0 0-1.32-.12.94.94 0 0 0-.122 1.32A6.132 6.132 0 0 0 10 15.621c1.828 0 3.55-.805 4.723-2.21a.937.937 0 1 0-1.442-1.2Z"})))},StackedEmailIcon:function(t){return e.createElement("svg",ro({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"stacked_email_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},to||(to=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),no||(no=e.createElement("g",{mask:"url(#stacked_email_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"M7 17c-.55 0-1.02-.196-1.412-.587A1.926 1.926 0 0 1 5 15V5c0-.55.196-1.02.588-1.413A1.926 1.926 0 0 1 7 3h14c.55 0 1.02.196 1.413.587C22.803 3.98 23 4.45 23 5v10c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 21 17H7Zm6.425-5.1L7 7.425V15h14V7.425L14.575 11.9a.964.964 0 0 1-.575.2.964.964 0 0 1-.575-.2ZM14 9.85 21 5H7l7 4.85ZM3 21c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 1 19V7.5c0-.283.096-.52.288-.713A.968.968 0 0 1 2 6.5c.283 0 .52.096.712.287.192.192.288.43.288.713V19h15.5c.283 0 .52.096.712.288.192.191.288.429.288.712s-.096.52-.288.712A.968.968 0 0 1 18.5 21H3Z"}))))},TodayIcon:function(t){return e.createElement("svg",io({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"today_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},oo||(oo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ao||(ao=e.createElement("g",{mask:"url(#today_svg__a)"},e.createElement("path",{fill:"#02BF6F",d:"M9 16.5c-.7 0-1.292-.242-1.775-.725C6.742 15.292 6.5 14.7 6.5 14s.242-1.292.725-1.775C7.708 11.742 8.3 11.5 9 11.5s1.292.242 1.775.725c.483.483.725 1.075.725 1.775s-.242 1.292-.725 1.775c-.483.483-1.075.725-1.775.725ZM5 22c-.55 0-1.02-.196-1.413-.587A1.926 1.926 0 0 1 3 20V6c0-.55.196-1.02.587-1.412A1.926 1.926 0 0 1 5 4h1V3c0-.283.096-.52.287-.712A.968.968 0 0 1 7 2c.283 0 .52.096.713.288.191.191.287.429.287.712v1h8V3c0-.283.096-.52.288-.712A.968.968 0 0 1 17 2c.283 0 .52.096.712.288.192.191.288.429.288.712v1h1c.55 0 1.02.196 1.413.588.391.391.587.862.587 1.412v14c0 .55-.196 1.02-.587 1.413A1.926 1.926 0 0 1 19 22H5Zm0-2h14V10H5v10ZM5 8h14V6H5v2Z"}))))},VideoCamOffIcon:function(t){return e.createElement("svg",so({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},lo||(lo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),co||(co=e.createElement("g",{mask:"url(#videocam_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m20.506 15.852-2.737-2.737v1.896l-1.5-1.5V6.308a.3.3 0 0 0-.086-.221.3.3 0 0 0-.221-.087H8.758l-1.5-1.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.323-.19.507-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.353.044-.507-.11Zm-1.06 5.779L2.036 4.22a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.41 17.41a.684.684 0 0 1 .207.502.727.727 0 0 1-.233.527.724.724 0 0 1-.532.217.692.692 0 0 1-.522-.217ZM4.443 4.519 5.923 6H4.577a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .221.087h11.385a.3.3 0 0 0 .22-.087.3.3 0 0 0 .088-.22v-1.347l1.48 1.48a1.752 1.752 0 0 1-.558 1.187c-.34.325-.75.487-1.23.487H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.48.163-.89.487-1.23.324-.34.72-.527 1.187-.559Z"}))))},VideoCamOffSolidIcon:function(t){return e.createElement("svg",fo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},uo||(uo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),po||(po=e.createElement("g",{mask:"url(#videocam_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M19.471 21.63 2.061 4.222a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.526.217l17.41 17.41a.684.684 0 0 1 .208.502.727.727 0 0 1-.233.527.702.702 0 0 1-.527.212.753.753 0 0 1-.527-.212Zm-1.677-6.618L7.283 4.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.284.22.284.434v7.042c0 .214-.095.359-.284.434a.43.43 0 0 1-.5-.103l-2.736-2.737v1.896ZM4.467 4.518l13.308 13.308c-.017.456-.209.85-.577 1.179-.368.33-.78.494-1.236.494H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.457.168-.869.502-1.237.335-.368.734-.552 1.196-.552Z"}))))},VideoCamOnIcon:function(t){return e.createElement("svg",ho({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},mo||(mo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),vo||(vo=e.createElement("g",{mask:"url(#videocam_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.322-.19.506-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.352.044-.506-.11l-2.737-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Zm0-1.5h11.384a.3.3 0 0 0 .222-.087.3.3 0 0 0 .086-.22V6.307a.3.3 0 0 0-.086-.221.3.3 0 0 0-.222-.087H4.548a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087Z"}))))},VideoCamOnSolidIcon:function(t){return e.createElement("svg",wo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},go||(go=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),yo||(yo=e.createElement("g",{mask:"url(#videocam-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.283.22.283.434v7.042c0 .214-.094.359-.283.434a.43.43 0 0 1-.5-.103l-2.736-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Z"}))))},VolumeOffIcon:function(t){return e.createElement("svg",Eo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},bo||(bo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),_o||(_o=e.createElement("g",{mask:"url(#volume_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Zm-1.5 5.613v-2.196L8.335 11H5.289v2h2.85l2.15 2.15Z"}))))},VolumeOffSolidIcon:function(t){return e.createElement("svg",Co({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},xo||(xo=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Oo||(Oo=e.createElement("g",{mask:"url(#volume_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Z"}))))},VolumeUpIcon:function(t){return e.createElement("svg",Do({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_up-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ko||(ko=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ao||(Ao=e.createElement("g",{mask:"url(#volume_up-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.092.797.797 0 0 1-.324-.675.56.56 0 0 1 .124-.36.803.803 0 0 1 .307-.236 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.654.654 0 0 1-.43-.625c0-.275.107-.493.323-.652a.68.68 0 0 1 .7-.086 8.551 8.551 0 0 1 3.83 3.085c.97 1.4 1.454 2.97 1.454 4.711s-.485 3.312-1.454 4.71a8.552 8.552 0 0 1-3.83 3.086ZM4.558 14.5a.875.875 0 0 1-.644-.26.875.875 0 0 1-.26-.644v-3.192c0-.256.086-.47.26-.644a.874.874 0 0 1 .644-.26h2.807l2.752-2.752c.285-.284.612-.348.982-.192.37.157.555.437.555.84v9.208c0 .403-.185.683-.555.84-.37.156-.697.093-.982-.192L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499ZM10.154 8.85 8.004 11h-2.85v2h2.85l2.15 2.15v-6.3Z"}))))},VolumeUpSolidIcon:function(t){return e.createElement("svg",Mo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_up_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Po||(Po=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),To||(To=e.createElement("g",{mask:"url(#volume_up_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.042-.26.124-.363a.803.803 0 0 1 .307-.235 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.658.658 0 0 1-.32-.248.661.661 0 0 1-.11-.375c0-.277.107-.495.323-.654a.68.68 0 0 1 .7-.086 8.547 8.547 0 0 1 3.83 3.087c.97 1.401 1.454 2.97 1.454 4.709 0 1.738-.485 3.308-1.454 4.709a8.547 8.547 0 0 1-3.83 3.087ZM4.558 14.5a.876.876 0 0 1-.646-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .646-.259h2.807l2.752-2.752c.285-.284.612-.349.982-.193.37.156.555.436.555.841v9.208c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499Z"}))))},WarningIcon:function(t){return e.createElement("svg",Lo({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"warning-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},So||(So=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Io||(Io=e.createElement("g",{mask:"url(#warning-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M3.426 20.5a.878.878 0 0 1-.772-.452.955.955 0 0 1-.129-.437.816.816 0 0 1 .127-.467l8.561-14.788A.896.896 0 0 1 12 3.904a.897.897 0 0 1 .787.452l8.56 14.788c.093.154.136.31.128.467a.955.955 0 0 1-.129.437.878.878 0 0 1-.771.452H3.425ZM4.45 19h15.1L12 6 4.45 19ZM12 17.808c.229 0 .42-.078.576-.232a.781.781 0 0 0 .232-.576.781.781 0 0 0-.232-.575.782.782 0 0 0-.576-.233.781.781 0 0 0-.575.233.781.781 0 0 0-.233.575c0 .229.078.42.233.576a.781.781 0 0 0 .575.232Zm0-2.616c.213 0 .391-.072.535-.215a.726.726 0 0 0 .215-.535v-3.5a.725.725 0 0 0-.216-.534.726.726 0 0 0-.534-.216.725.725 0 0 0-.534.216.726.726 0 0 0-.216.534v3.5c0 .213.072.391.216.535a.726.726 0 0 0 .534.215Z"}))))},WarningSolidIcon:function(t){return e.createElement("svg",Ro({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"warning_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},No||(No=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),jo||(jo=e.createElement("g",{mask:"url(#warning_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M2.725 21a.973.973 0 0 1-.85-.5 1.098 1.098 0 0 1-.138-.488.898.898 0 0 1 .138-.512l9.25-16a.98.98 0 0 1 .387-.375C11.671 3.042 11.833 3 12 3c.166 0 .329.042.487.125a.983.983 0 0 1 .388.375l9.25 16c.1.167.146.337.137.512a1.098 1.098 0 0 1-.137.488.973.973 0 0 1-.85.5H2.725ZM12 18c.283 0 .52-.096.712-.288A.968.968 0 0 0 13 17a.968.968 0 0 0-.288-.712A.968.968 0 0 0 12 16a.968.968 0 0 0-.713.288A.968.968 0 0 0 11 17c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-3a.97.97 0 0 0 .712-.287A.968.968 0 0 0 13 14v-3a.968.968 0 0 0-.288-.713A.968.968 0 0 0 12 10a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 11v3c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))}});const Zo=d(((e,t)=>o(Z.label,E({},e,{ref:t,onMouseDown:t=>{var n;null===(n=e.onMouseDown)||void 0===n||n.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault()}}))));var Fo={label:"Label-modules_label__rXO6J",semiBold:"Label-modules_semiBold__vTm1B",regular:"Label-modules_regular__F9gNE"},Vo=function(e){return void 0===e&&(e="regular"),"semiBold"===e?Fo.semiBold:Fo.regular};function Bo(e){var n,r=e.htmlFor,o=e.children,a=e.className,i=void 0===a?"":a,l=e.weight,c=void 0===l?"regular":l;return t.createElement(Zo,{htmlFor:r,className:Qt("demio-ui-label",Fo.label,[Vo(c)],(n={},n[i]=!!i,n))},o)}function Uo(e){var n,o=e.children,a=e.id,i=e.checked,l=void 0!==i&&i,c=e.onChange,s=e.disabled,u=void 0!==s&&s,d=e.defaultChecked,p=void 0!==d&&d,f=e.name,m=void 0===f?"":f,v=e.value,h=de(e,["children","id","checked","onChange","disabled","defaultChecked","name","value"]),g=r((function(){return c?{checked:l,onCheckedChange:function(e){return c({checked:e,name:m||a,value:void 0!==v?v:o||""})}}:{}}),[l,c,m,a,v,o]);return t.createElement("div",{className:Qt("demio-ui-checkbox",On,(n={},n[Pn]=u,n))},t.createElement(bn,ue({},h,g,{className:Cn,defaultChecked:p,id:a,name:m||a,disabled:u}),t.createElement(_n,{className:An},t.createElement(tr,null)),t.createElement("span",{className:Qt(An,kn)},t.createElement(ar,null))),t.createElement(Bo,{className:Dn,htmlFor:a,weight:"regular"},o))}var zo={formGroup:"FormGroup-modules_formGroup__Zjh7i",horizontal:"FormGroup-modules_horizontal__9g7gn",vertical:"FormGroup-modules_vertical__yPEor",between:"FormGroup-modules_between__poqnA",start:"FormGroup-modules_start__ylflU",startAlignItems:"FormGroup-modules_startAlignItems__h-nDr",stretchAlignItems:"FormGroup-modules_stretchAlignItems__jg3e0"};function Wo(e){var n,r=e.children,o=e.position,a=void 0===o?"vertical":o,i=e.justify,l=void 0===i?"start":i,c=e.alignItems,s=void 0===c?"start":c;return t.createElement("div",{className:Qt("demio-ui-form-group",zo.formGroup,(n={},n[zo.horizontal]="horizontal"===a,n[zo.vertical]="vertical"===a,n[zo[l]]=!!l,n[zo["".concat(s,"AlignItems")]]=!!s,n))},r)}var Ko={root:"Input-modules_root__vdxX5",label:"Input-modules_label__2RN8-",optional:"Input-modules_optional__M78yJ",static:"Input-modules_static__cpwFU",correctedTop:"Input-modules_correctedTop__I3y-S",inputWrapper:"Input-modules_inputWrapper__KPYyg",input:"Input-modules_input__y9hSj",startAdornment:"Input-modules_startAdornment__Xs8xw",endAdornment:"Input-modules_endAdornment__z04mP",footer:"Input-modules_footer__R8J8U",togglePasswordButton:"Input-modules_togglePasswordButton__KGieB",footerMessage:"Input-modules_footerMessage__akEOh",counter:"Input-modules_counter__HFA5P",isDisabled:"Input-modules_isDisabled__bHf8L",hint:"Input-modules_hint__e-KNY",isError:"Input-modules_isError__1B8e9",isFocused:"Input-modules_isFocused__Oa1Re"},qo={root:"InputHint-modules_root__bJTnj",error:"InputHint-modules_error__HZnQD"};function Go(e){var n,r=e.children,o=e.type,a=void 0===o?"hint":o,i=e.className,l=void 0===i?"":i;return t.createElement("div",{className:Qt("demio-ui-input-hint",qo.root,(n={},n[qo.error]="error"===a,n[l]=!!l,n)),"data-html":a},r)}var $o=d((function(e,n){var r,o,a,i,l=e.autoComplete,c=void 0===l?"off":l,s=e.className,d=void 0===s?"":s,p=e.counterVisibilityLimit,f=void 0===p?.8:p,m=e.defaultValue,v=void 0===m?"":m,h=e.disabled,g=void 0!==h&&h,y=e.endAdornment,w=void 0===y?null:y,b=e.endAdornmentClassName,_=void 0===b?"":b,E=e.errorMessage,x=void 0===E?"":E,O=e.hint,C=void 0===O?"":O,k=e.id,A=e.inputWrapperClass,D=void 0===A?"":A,P=e.isLabelStatic,T=void 0!==P&&P,M=e.label,S=void 0===M?"":M,I=e.maxLength,L=void 0===I?150:I,N=e.name,j=void 0===N?"":N,R=e.onBlur,H=e.onChange,Z=e.onFocus,F=e.optionalText,V=void 0===F?"Optional":F,B=e.placeholder,U=void 0===B?"":B,z=e.required,W=void 0!==z&&z,K=e.startAdornment,q=void 0===K?null:K,G=e.type,$=void 0===G?"text":G,X=e.value,Y=de(e,["autoComplete","className","counterVisibilityLimit","defaultValue","disabled","endAdornment","endAdornmentClassName","errorMessage","hint","id","inputWrapperClass","isLabelStatic","label","maxLength","name","onBlur","onChange","onFocus","optionalText","placeholder","required","startAdornment","type","value"]),J=void 0!==X,Q=void 0!==v,ee=u(!1),te=ee[0],ne=ee[1],re=u(Q?v:""),oe=re[0],ae=re[1],ie=u(!1),le=ie[0],ce=ie[1],se="password"===$,pe=se?te?"text":"password":$,fe=J?X:oe,me=fe.length,ve=me>=L*f;return t.createElement("div",{className:Qt("demio-ui-input","demio-ui-input-".concat($),Ko.root,(r={},r[d]=!!d,r[Ko.isDisabled]=g,r[Ko.isFocused]=le||fe.length>0,r[Ko.hasStartAdornment]=!!q,r[Ko.isError]=!!x,r)),"data-html":"container"},S&&t.createElement("label",{htmlFor:k,className:Qt(Ko.label,(o={},o[Ko.static]=T,o)),"data-html":"label"},S),!W&&t.createElement("span",{className:Qt(Ko.optional,(a={},a[Ko.correctedTop]=T,a)),"data-html":"optional"},V),t.createElement("div",{className:Qt(Ko.inputWrapper,D),"data-html":"wrapper"},q&&t.createElement("div",{className:Ko.startAdornment,"data-html":"start-adornment"},q),t.createElement("input",ue({},Y,{type:pe,id:k,ref:n,name:j||k,className:Ko.input,placeholder:U,required:W,"data-html":"input",disabled:g,autoComplete:c,maxLength:L,onChange:function(e){H&&H(e),J||ae(e.target.value)},value:fe,onFocus:function(e){Z&&Z(e),ce(!0)},onBlur:function(e){R&&R(e),ce(!1)}})),w&&t.createElement("div",{className:Qt(Ko.endAdornment,(i={},i[_]=!!_,i)),"data-html":"end-adornment"},w)),t.createElement("div",{className:Ko.footer,"data-html":"footer"},t.createElement("div",{className:Ko.footerMessage},x&&t.createElement(Go,{type:"error"},x),C&&!x&&t.createElement(Go,{className:Ko.hint},C)),t.createElement(Go,{className:Ko.counter},ve&&"".concat(me," / ").concat(L))),se&&t.createElement("button",{type:"button",className:Ko.togglePasswordButton,onClick:function(){ne(!te)}},te?t.createElement(Gr,null):t.createElement(Yr,null)))})),Xo="Modal-modules_overlay__V-vTn",Yo="Modal-modules_header__-dxAm",Jo="Modal-modules_close__CwIjR",Qo="Modal-modules_title__3ehge",ea="Modal-modules_titleCentered__Qqy8u",ta="Modal-modules_content__sK9HS",na="Modal-modules_body__8Khpx";function ra(e){var n,r,o,a=e.children,i=e.contentClassName,l=void 0===i?"":i,c=e.hideCloseButton,s=void 0!==c&&c,u=e.maxHeight,d=void 0===u?"auto":u,p=e.open,f=e.onOpenChange,m=e.overlayClassName,v=void 0===m?"":m,h=e.title,g=e.width,y=void 0===g?"432px":g;return t.createElement(Et,{open:p,onOpenChange:f},t.createElement(xt,null,t.createElement(Ot,{className:Qt("demio-ui-modal-overlay",Xo,(n={},n[v]=!!v,n))},t.createElement(Ct,{className:Qt("demio-ui-modal-content",ta,(r={},r[l]=!!l,r)),style:{maxHeight:d,width:y}},t.createElement("div",{className:Yo,"data-html":"header"},h&&t.createElement(kt,{className:Qt(Qo,(o={},o[ea]=!!s,o)),"data-html":"title"},h),!s&&t.createElement(Dt,{className:Jo,"data-html":"close-btn"},t.createElement(tn,null))),t.createElement("div",{className:na,"data-html":"content"},a)))))}function oa(e){return e.split("-")[1]}function aa(e){return"y"===e?"height":"width"}function ia(e){return e.split("-")[0]}function la(e){return["top","bottom"].includes(ia(e))?"x":"y"}function ca(e,t,n){let{reference:r,floating:o}=e;const a=r.x+r.width/2-o.width/2,i=r.y+r.height/2-o.height/2,l=la(t),c=aa(l),s=r[c]/2-o[c]/2,u="x"===l;let d;switch(ia(t)){case"top":d={x:a,y:r.y-o.height};break;case"bottom":d={x:a,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:i};break;case"left":d={x:r.x-o.width,y:i};break;default:d={x:r.x,y:r.y}}switch(oa(t)){case"start":d[l]-=s*(n&&u?-1:1);break;case"end":d[l]+=s*(n&&u?-1:1)}return d}function sa(e,t){return"function"==typeof e?e(t):e}function ua(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function da(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function pa(e,t){var n;void 0===t&&(t={});const{x:r,y:o,platform:a,rects:i,elements:l,strategy:c}=e,{boundary:s="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:p=!1,padding:f=0}=sa(t,e),m=ua(f),v=l[p?"floating"===d?"reference":"floating":d],h=da(await a.getClippingRect({element:null==(n=await(null==a.isElement?void 0:a.isElement(v)))||n?v:v.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(l.floating)),boundary:s,rootBoundary:u,strategy:c})),g="floating"===d?{...i.floating,x:r,y:o}:i.reference,y=await(null==a.getOffsetParent?void 0:a.getOffsetParent(l.floating)),w=await(null==a.isElement?void 0:a.isElement(y))&&await(null==a.getScale?void 0:a.getScale(y))||{x:1,y:1},b=da(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({rect:g,offsetParent:y,strategy:c}):g);return{top:(h.top-b.top+m.top)/w.y,bottom:(b.bottom-h.bottom+m.bottom)/w.y,left:(h.left-b.left+m.left)/w.x,right:(b.right-h.right+m.right)/w.x}}const fa=Math.min,ma=Math.max;function va(e,t,n){return ma(e,fa(t,n))}const ha=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:i,elements:l}=t,{element:c,padding:s=0}=sa(e,t)||{};if(null==c)return{};const u=ua(s),d={x:n,y:r},p=la(o),f=aa(p),m=await i.getDimensions(c),v="y"===p,h=v?"top":"left",g=v?"bottom":"right",y=v?"clientHeight":"clientWidth",w=a.reference[f]+a.reference[p]-d[p]-a.floating[f],b=d[p]-a.reference[p],_=await(null==i.getOffsetParent?void 0:i.getOffsetParent(c));let E=_?_[y]:0;E&&await(null==i.isElement?void 0:i.isElement(_))||(E=l.floating[y]||a.floating[f]);const x=w/2-b/2,O=E/2-m[f]/2-1,C=fa(u[h],O),k=fa(u[g],O),A=C,D=E-m[f]-k,P=E/2-m[f]/2+x,T=va(A,P,D),M=null!=oa(o)&&P!=T&&a.reference[f]/2-(P<A?C:k)-m[f]/2<0;return{[p]:d[p]-(M?P<A?A-P:D-P:0),data:{[p]:T,centerOffset:P-T}}}}),ga=["top","right","bottom","left"],ya={left:"right",right:"left",bottom:"top",top:"bottom"};function wa(e){return e.replace(/left|right|bottom|top/g,(e=>ya[e]))}const ba={start:"end",end:"start"};function _a(e){return e.replace(/start|end/g,(e=>ba[e]))}const Ea=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:a,initialPlacement:i,platform:l,elements:c}=t,{mainAxis:s=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:p="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...v}=sa(e,t),h=ia(r),g=ia(i)===i,y=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=d||(g||!m?[wa(i)]:function(e){const t=wa(e);return[_a(e),t,_a(t)]}(i));d||"none"===f||w.push(...function(e,t,n,r){const o=oa(e);let a=function(e,t,n){const r=["left","right"],o=["right","left"],a=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?a:i;default:return[]}}(ia(e),"start"===n,r);return o&&(a=a.map((e=>e+"-"+o)),t&&(a=a.concat(a.map(_a)))),a}(i,m,f,y));const b=[i,...w],_=await pa(t,v),E=[];let x=(null==(n=o.flip)?void 0:n.overflows)||[];if(s&&E.push(_[h]),u){const{main:e,cross:t}=function(e,t,n){void 0===n&&(n=!1);const r=oa(e),o=la(e),a=aa(o);let i="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[a]>t.floating[a]&&(i=wa(i)),{main:i,cross:wa(i)}}(r,a,y);E.push(_[e],_[t])}if(x=[...x,{placement:r,overflows:E}],!E.every((e=>e<=0))){var O,C;const e=((null==(O=o.flip)?void 0:O.index)||0)+1,t=b[e];if(t)return{data:{index:e,overflows:x},reset:{placement:t}};let n=null==(C=x.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:C.placement;if(!n)switch(p){case"bestFit":{var k;const e=null==(k=x.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:k[0];e&&(n=e);break}case"initialPlacement":n=i}if(r!==n)return{reset:{placement:n}}}return{}}}};function xa(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Oa(e){return ga.some((t=>e[t]>=0))}const Ca=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=sa(e,t);switch(r){case"referenceHidden":{const e=xa(await pa(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Oa(e)}}}case"escaped":{const e=xa(await pa(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Oa(e)}}}default:return{}}}}};const ka=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(e,t){const{placement:n,platform:r,elements:o}=e,a=await(null==r.isRTL?void 0:r.isRTL(o.floating)),i=ia(n),l=oa(n),c="x"===la(n),s=["left","top"].includes(i)?-1:1,u=a&&c?-1:1,d=sa(t,e);let{mainAxis:p,crossAxis:f,alignmentAxis:m}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return l&&"number"==typeof m&&(f="end"===l?-1*m:m),c?{x:f*u,y:p*s}:{x:p*s,y:f*u}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function Aa(e){return"x"===e?"y":"x"}const Da=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:i=!1,limiter:l={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=sa(e,t),s={x:n,y:r},u=await pa(t,c),d=la(ia(o)),p=Aa(d);let f=s[d],m=s[p];if(a){const e="y"===d?"bottom":"right";f=va(f+u["y"===d?"top":"left"],f,f-u[e])}if(i){const e="y"===p?"bottom":"right";m=va(m+u["y"===p?"top":"left"],m,m-u[e])}const v=l.fn({...t,[d]:f,[p]:m});return{...v,data:{x:v.x-n,y:v.y-r}}}}},Pa=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:a,middlewareData:i}=t,{offset:l=0,mainAxis:c=!0,crossAxis:s=!0}=sa(e,t),u={x:n,y:r},d=la(o),p=Aa(d);let f=u[d],m=u[p];const v=sa(l,t),h="number"==typeof v?{mainAxis:v,crossAxis:0}:{mainAxis:0,crossAxis:0,...v};if(c){const e="y"===d?"height":"width",t=a.reference[d]-a.floating[e]+h.mainAxis,n=a.reference[d]+a.reference[e]-h.mainAxis;f<t?f=t:f>n&&(f=n)}if(s){var g,y;const e="y"===d?"width":"height",t=["top","left"].includes(ia(o)),n=a.reference[p]-a.floating[e]+(t&&(null==(g=i.offset)?void 0:g[p])||0)+(t?0:h.crossAxis),r=a.reference[p]+a.reference[e]+(t?0:(null==(y=i.offset)?void 0:y[p])||0)-(t?h.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[d]:f,[p]:m}}}},Ta=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:a}=t,{apply:i=(()=>{}),...l}=sa(e,t),c=await pa(t,l),s=ia(n),u=oa(n),d="x"===la(n),{width:p,height:f}=r.floating;let m,v;"top"===s||"bottom"===s?(m=s,v=u===(await(null==o.isRTL?void 0:o.isRTL(a.floating))?"start":"end")?"left":"right"):(v=s,m="end"===u?"top":"bottom");const h=f-c[m],g=p-c[v],y=!t.middlewareData.shift;let w=h,b=g;if(d){const e=p-c.left-c.right;b=u||y?fa(g,e):e}else{const e=f-c.top-c.bottom;w=u||y?fa(h,e):e}if(y&&!u){const e=ma(c.left,0),t=ma(c.right,0),n=ma(c.top,0),r=ma(c.bottom,0);d?b=p-2*(0!==e||0!==t?e+t:ma(c.left,c.right)):w=f-2*(0!==n||0!==r?n+r:ma(c.top,c.bottom))}await i({...t,availableWidth:b,availableHeight:w});const _=await o.getDimensions(a.floating);return p!==_.width||f!==_.height?{reset:{rects:!0}}:{}}}};function Ma(e){var t;return(null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function Sa(e){return Ma(e).getComputedStyle(e)}function Ia(e){return e instanceof Ma(e).Node}function La(e){return Ia(e)?(e.nodeName||"").toLowerCase():""}function Na(e){return e instanceof Ma(e).HTMLElement}function ja(e){return e instanceof Ma(e).Element}function Ra(e){if("undefined"==typeof ShadowRoot)return!1;return e instanceof Ma(e).ShadowRoot||e instanceof ShadowRoot}function Ha(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=Sa(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function Za(e){return["table","td","th"].includes(La(e))}function Fa(e){const t=Va(),n=Sa(e);return"none"!==n.transform||"none"!==n.perspective||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function Va(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function Ba(e){return["html","body","#document"].includes(La(e))}const Ua=Math.min,za=Math.max,Wa=Math.round;function Ka(e){const t=Sa(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Na(e),a=o?e.offsetWidth:n,i=o?e.offsetHeight:r,l=Wa(n)!==a||Wa(r)!==i;return l&&(n=a,r=i),{width:n,height:r,fallback:l}}function qa(e){return ja(e)?e:e.contextElement}const Ga={x:1,y:1};function $a(e){const t=qa(e);if(!Na(t))return Ga;const n=t.getBoundingClientRect(),{width:r,height:o,fallback:a}=Ka(t);let i=(a?Wa(n.width):n.width)/r,l=(a?Wa(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}const Xa={x:0,y:0};function Ya(e,t,n){var r,o;if(void 0===t&&(t=!0),!Va())return Xa;const a=e?Ma(e):window;return!n||t&&n!==a?Xa:{x:(null==(r=a.visualViewport)?void 0:r.offsetLeft)||0,y:(null==(o=a.visualViewport)?void 0:o.offsetTop)||0}}function Ja(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const o=e.getBoundingClientRect(),a=qa(e);let i=Ga;t&&(r?ja(r)&&(i=$a(r)):i=$a(e));const l=Ya(a,n,r);let c=(o.left+l.x)/i.x,s=(o.top+l.y)/i.y,u=o.width/i.x,d=o.height/i.y;if(a){const e=Ma(a),t=r&&ja(r)?Ma(r):r;let n=e.frameElement;for(;n&&r&&t!==e;){const e=$a(n),t=n.getBoundingClientRect(),r=getComputedStyle(n);t.x+=(n.clientLeft+parseFloat(r.paddingLeft))*e.x,t.y+=(n.clientTop+parseFloat(r.paddingTop))*e.y,c*=e.x,s*=e.y,u*=e.x,d*=e.y,c+=t.x,s+=t.y,n=Ma(n).frameElement}}return da({width:u,height:d,x:c,y:s})}function Qa(e){return((Ia(e)?e.ownerDocument:e.document)||window.document).documentElement}function ei(e){return ja(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ti(e){return Ja(Qa(e)).left+ei(e).scrollLeft}function ni(e){if("html"===La(e))return e;const t=e.assignedSlot||e.parentNode||Ra(e)&&e.host||Qa(e);return Ra(t)?t.host:t}function ri(e){const t=ni(e);return Ba(t)?t.ownerDocument.body:Na(t)&&Ha(t)?t:ri(t)}function oi(e,t){var n;void 0===t&&(t=[]);const r=ri(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=Ma(r);return o?t.concat(a,a.visualViewport||[],Ha(r)?r:[]):t.concat(r,oi(r))}function ai(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=Ma(e),r=Qa(e),o=n.visualViewport;let a=r.clientWidth,i=r.clientHeight,l=0,c=0;if(o){a=o.width,i=o.height;const e=Va();(!e||e&&"fixed"===t)&&(l=o.offsetLeft,c=o.offsetTop)}return{width:a,height:i,x:l,y:c}}(e,n);else if("document"===t)r=function(e){const t=Qa(e),n=ei(e),r=e.ownerDocument.body,o=za(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=za(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let i=-n.scrollLeft+ti(e);const l=-n.scrollTop;return"rtl"===Sa(r).direction&&(i+=za(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:i,y:l}}(Qa(e));else if(ja(t))r=function(e,t){const n=Ja(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=Na(e)?$a(e):{x:1,y:1};return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:o*a.x,y:r*a.y}}(t,n);else{const n=Ya(e);r={...t,x:t.x-n.x,y:t.y-n.y}}return da(r)}function ii(e,t){const n=ni(e);return!(n===t||!ja(n)||Ba(n))&&("fixed"===Sa(n).position||ii(n,t))}function li(e,t){return Na(e)&&"fixed"!==Sa(e).position?t?t(e):e.offsetParent:null}function ci(e,t){const n=Ma(e);if(!Na(e))return n;let r=li(e,t);for(;r&&Za(r)&&"static"===Sa(r).position;)r=li(r,t);return r&&("html"===La(r)||"body"===La(r)&&"static"===Sa(r).position&&!Fa(r))?n:r||function(e){let t=ni(e);for(;Na(t)&&!Ba(t);){if(Fa(t))return t;t=ni(t)}return null}(e)||n}function si(e,t,n){const r=Na(t),o=Qa(t),a="fixed"===n,i=Ja(e,!0,a,t);let l={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(r||!r&&!a)if(("body"!==La(t)||Ha(o))&&(l=ei(t)),Na(t)){const e=Ja(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else o&&(c.x=ti(o));return{x:i.left+l.scrollLeft-c.x,y:i.top+l.scrollTop-c.y,width:i.width,height:i.height}}const ui={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[..."clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let r=oi(e).filter((e=>ja(e)&&"body"!==La(e))),o=null;const a="fixed"===Sa(e).position;let i=a?ni(e):e;for(;ja(i)&&!Ba(i);){const t=Sa(i),n=Fa(i);n||"fixed"!==t.position||(o=null),(a?!n&&!o:!n&&"static"===t.position&&o&&["absolute","fixed"].includes(o.position)||Ha(i)&&!n&&ii(e,i))?r=r.filter((e=>e!==i)):o=t,i=ni(i)}return t.set(e,r),r}(t,this._c):[].concat(n),r],i=a[0],l=a.reduce(((e,n)=>{const r=ai(t,n,o);return e.top=za(r.top,e.top),e.right=Ua(r.right,e.right),e.bottom=Ua(r.bottom,e.bottom),e.left=za(r.left,e.left),e}),ai(t,i,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=Na(n),a=Qa(n);if(n===a)return t;let i={scrollLeft:0,scrollTop:0},l={x:1,y:1};const c={x:0,y:0};if((o||!o&&"fixed"!==r)&&(("body"!==La(n)||Ha(a))&&(i=ei(n)),Na(n))){const e=Ja(n);l=$a(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}return{width:t.width*l.x,height:t.height*l.y,x:t.x*l.x-i.scrollLeft*l.x+c.x,y:t.y*l.y-i.scrollTop*l.y+c.y}},isElement:ja,getDimensions:function(e){return Ka(e)},getOffsetParent:ci,getDocumentElement:Qa,getScale:$a,async getElementRects(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||ci,a=this.getDimensions;return{reference:si(t,await o(n),r),floating:{x:0,y:0,...await a(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>"rtl"===Sa(e).direction};function di(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:i=!0,animationFrame:l=!1}=r,c=o||a?[...ja(e)?oi(e):e.contextElement?oi(e.contextElement):[],...oi(t)]:[];c.forEach((e=>{const t=!ja(e)&&e.toString().includes("V");!o||l&&!t||e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)}));let s,u=null;i&&(u=new ResizeObserver((()=>{n()})),ja(e)&&!l&&u.observe(e),ja(e)||!e.contextElement||l||u.observe(e.contextElement),u.observe(t));let d=l?Ja(e):null;return l&&function t(){const r=Ja(e);!d||r.x===d.x&&r.y===d.y&&r.width===d.width&&r.height===d.height||n();d=r,s=requestAnimationFrame(t)}(),n(),()=>{var e;c.forEach((e=>{o&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)})),null==(e=u)||e.disconnect(),u=null,l&&cancelAnimationFrame(s)}}const pi=(e,t,n)=>{const r=new Map,o={platform:ui,...n},a={...o.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:i}=n,l=a.filter(Boolean),c=await(null==i.isRTL?void 0:i.isRTL(t));let s=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=ca(s,r,c),p=r,f={},m=0;for(let n=0;n<l.length;n++){const{name:a,fn:v}=l[n],{x:h,y:g,data:y,reset:w}=await v({x:u,y:d,initialPlacement:r,placement:p,strategy:o,middlewareData:f,rects:s,platform:i,elements:{reference:e,floating:t}});u=null!=h?h:u,d=null!=g?g:d,f={...f,[a]:{...f[a],...y}},w&&m<=50&&(m++,"object"==typeof w&&(w.placement&&(p=w.placement),w.rects&&(s=!0===w.rects?await i.getElementRects({reference:e,floating:t,strategy:o}):w.rects),({x:u,y:d}=ca(s,p,c))),n=-1)}return{x:u,y:d,placement:p,strategy:o,middlewareData:f}})(e,t,{...o,platform:a})},fi=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"==typeof e?e(t):e;return n&&(o=n,{}.hasOwnProperty.call(o,"current"))?null!=n.current?ha({element:n.current,padding:r}).fn(t):{}:n?ha({element:n,padding:r}).fn(t):{};var o}});var mi="undefined"!=typeof document?l:s;function vi(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;0!=r--;)if(!vi(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){const n=o[r];if(("_owner"!==n||!e.$$typeof)&&!vi(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function hi(e){if("undefined"==typeof window)return 1;return(e.ownerDocument.defaultView||window).devicePixelRatio||1}function gi(e,t){const n=hi(e);return Math.round(t*n)/n}function yi(t){const n=e.useRef(t);return mi((()=>{n.current=t})),n}const wi=d(((e,t)=>{const{children:n,width:r=10,height:a=5,...i}=e;return o(Z.svg,E({},i,{ref:t,width:r,height:a,viewBox:"0 0 30 10",preserveAspectRatio:"none"}),e.asChild?n:o("polygon",{points:"0,0 30,0 15,10"}))})),bi="Popper",[_i,Ei]=x(bi),[xi,Oi]=_i(bi),Ci=d(((e,t)=>{const{__scopePopper:n,virtualRef:r,...a}=e,i=Oi("PopperAnchor",n),l=c(null),u=k(t,l);return s((()=>{i.onAnchorChange((null==r?void 0:r.current)||l.current)})),r?null:o(Z.div,E({},a,{ref:u}))})),ki="PopperContent",[Ai,Di]=_i(ki),Pi=d(((t,n)=>{var r,a,i,l,c,s,d,p;const{__scopePopper:f,side:m="bottom",sideOffset:v=0,align:h="center",alignOffset:g=0,arrowPadding:w=0,collisionBoundary:b=[],collisionPadding:_=0,sticky:x="partial",hideWhenDetached:O=!1,avoidCollisions:C=!0,onPlaced:A,...P}=t,T=Oi(ki,f),[M,I]=u(null),L=k(n,(e=>I(e))),[N,j]=u(null),R=un(N),H=null!==(r=null==R?void 0:R.width)&&void 0!==r?r:0,F=null!==(a=null==R?void 0:R.height)&&void 0!==a?a:0,V=m+("center"!==h?"-"+h:""),B="number"==typeof _?_:{top:0,right:0,bottom:0,left:0,..._},U=Array.isArray(b)?b:[b],z=U.length>0,W={padding:B,boundary:U.filter(Mi),altBoundary:z},{refs:K,floatingStyles:q,placement:G,isPositioned:$,middlewareData:X}=function(t){void 0===t&&(t={});const{placement:n="bottom",strategy:r="absolute",middleware:o=[],platform:a,elements:{reference:i,floating:l}={},transform:c=!0,whileElementsMounted:s,open:u}=t,[d,p]=e.useState({x:0,y:0,strategy:r,placement:n,middlewareData:{},isPositioned:!1}),[f,m]=e.useState(o);vi(f,o)||m(o);const[v,h]=e.useState(null),[g,w]=e.useState(null),b=e.useCallback((e=>{e!=O.current&&(O.current=e,h(e))}),[h]),_=e.useCallback((e=>{e!==C.current&&(C.current=e,w(e))}),[w]),E=i||v,x=l||g,O=e.useRef(null),C=e.useRef(null),k=e.useRef(d),A=yi(s),D=yi(a),P=e.useCallback((()=>{if(!O.current||!C.current)return;const e={placement:n,strategy:r,middleware:f};D.current&&(e.platform=D.current),pi(O.current,C.current,e).then((e=>{const t={...e,isPositioned:!0};T.current&&!vi(k.current,t)&&(k.current=t,y.flushSync((()=>{p(t)})))}))}),[f,n,r,D]);mi((()=>{!1===u&&k.current.isPositioned&&(k.current.isPositioned=!1,p((e=>({...e,isPositioned:!1}))))}),[u]);const T=e.useRef(!1);mi((()=>(T.current=!0,()=>{T.current=!1})),[]),mi((()=>{if(E&&(O.current=E),x&&(C.current=x),E&&x){if(A.current)return A.current(E,x,P);P()}}),[E,x,P,A]);const M=e.useMemo((()=>({reference:O,floating:C,setReference:b,setFloating:_})),[b,_]),S=e.useMemo((()=>({reference:E,floating:x})),[E,x]),I=e.useMemo((()=>{const e={position:r,left:0,top:0};if(!S.floating)return e;const t=gi(S.floating,d.x),n=gi(S.floating,d.y);return c?{...e,transform:"translate("+t+"px, "+n+"px)",...hi(S.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}}),[r,c,S.floating,d.x,d.y]);return e.useMemo((()=>({...d,update:P,refs:M,elements:S,floatingStyles:I})),[d,P,M,S,I])}({strategy:"fixed",placement:V,whileElementsMounted:di,elements:{reference:T.anchor},middleware:[ka({mainAxis:v+F,alignmentAxis:g}),C&&Da({mainAxis:!0,crossAxis:!1,limiter:"partial"===x?Pa():void 0,...W}),C&&Ea({...W}),Ta({...W,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{const{width:o,height:a}=t.reference,i=e.floating.style;i.setProperty("--radix-popper-available-width",`${n}px`),i.setProperty("--radix-popper-available-height",`${r}px`),i.setProperty("--radix-popper-anchor-width",`${o}px`),i.setProperty("--radix-popper-anchor-height",`${a}px`)}}),N&&fi({element:N,padding:w}),Si({arrowWidth:H,arrowHeight:F}),O&&Ca({strategy:"referenceHidden"})]}),[Y,J]=Ii(G),Q=S(A);D((()=>{$&&(null==Q||Q())}),[$,Q]);const ee=null===(i=X.arrow)||void 0===i?void 0:i.x,te=null===(l=X.arrow)||void 0===l?void 0:l.y,ne=0!==(null===(c=X.arrow)||void 0===c?void 0:c.centerOffset),[re,oe]=u();return D((()=>{M&&oe(window.getComputedStyle(M).zIndex)}),[M]),o("div",{ref:K.setFloating,"data-radix-popper-content-wrapper":"",style:{...q,transform:$?q.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:re,"--radix-popper-transform-origin":[null===(s=X.transformOrigin)||void 0===s?void 0:s.x,null===(d=X.transformOrigin)||void 0===d?void 0:d.y].join(" ")},dir:t.dir},o(Ai,{scope:f,placedSide:Y,onArrowChange:j,arrowX:ee,arrowY:te,shouldHideArrow:ne},o(Z.div,E({"data-side":Y,"data-align":J},P,{ref:L,style:{...P.style,animation:$?void 0:"none",opacity:null!==(p=X.hide)&&void 0!==p&&p.referenceHidden?0:void 0}}))))})),Ti={top:"bottom",right:"left",bottom:"top",left:"right"};function Mi(e){return null!==e}const Si=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,a,i;const{placement:l,rects:c,middlewareData:s}=t,u=0!==(null===(n=s.arrow)||void 0===n?void 0:n.centerOffset),d=u?0:e.arrowWidth,p=u?0:e.arrowHeight,[f,m]=Ii(l),v={start:"0%",center:"50%",end:"100%"}[m],h=(null!==(r=null===(o=s.arrow)||void 0===o?void 0:o.x)&&void 0!==r?r:0)+d/2,g=(null!==(a=null===(i=s.arrow)||void 0===i?void 0:i.y)&&void 0!==a?a:0)+p/2;let y="",w="";return"bottom"===f?(y=u?v:`${h}px`,w=-p+"px"):"top"===f?(y=u?v:`${h}px`,w=`${c.floating.height+p}px`):"right"===f?(y=-p+"px",w=u?v:`${g}px`):"left"===f&&(y=`${c.floating.width+p}px`,w=u?v:`${g}px`),{data:{x:y,y:w}}}});function Ii(e){const[t,n="center"]=e.split("-");return[t,n]}const Li=e=>{const{__scopePopper:t,children:n}=e,[r,a]=u(null);return o(xi,{scope:t,anchor:r,onAnchorChange:a},n)},Ni=Ci,ji=Pi,Ri=d((function(e,t){const{__scopePopper:n,...r}=e,a=Di("PopperArrow",n),i=Ti[a.placedSide];return o("span",{ref:a.onArrowChange,style:{position:"absolute",left:a.arrowX,top:a.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a.placedSide],visibility:a.shouldHideArrow?"hidden":void 0}},o(wi,E({},r,{ref:t,style:{...r.style,display:"block"}})))})),Hi="Popover",[Zi,Fi]=x(Hi,[Ei]),Vi=Ei(),[Bi,Ui]=Zi(Hi),zi=d(((e,t)=>{const{__scopePopover:n,...r}=e,a=Ui("PopoverTrigger",n),i=Vi(n),l=k(t,a.triggerRef),c=o(Z.button,E({type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":Qi(a.open)},r,{ref:l,onClick:A(e.onClick,a.onOpenToggle)}));return a.hasCustomAnchor?c:o(Ni,E({asChild:!0},i),c)})),Wi="PopoverPortal",[Ki,qi]=Zi(Wi,{forceMount:void 0}),Gi="PopoverContent",$i=d(((e,t)=>{const n=qi(Gi,e.__scopePopover),{forceMount:r=n.forceMount,...a}=e,i=Ui(Gi,e.__scopePopover);return o(ae,{present:r||i.open},i.modal?o(Xi,E({},a,{ref:t})):o(Yi,E({},a,{ref:t})))})),Xi=d(((e,t)=>{const n=Ui(Gi,e.__scopePopover),r=c(null),a=k(t,r),i=c(!1);return s((()=>{const e=r.current;if(e)return Je(e)}),[]),o(We,{as:L,allowPinchZoom:!0},o(Ji,E({},e,{ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:A(e.onCloseAutoFocus,(e=>{var t;e.preventDefault(),i.current||null===(t=n.triggerRef.current)||void 0===t||t.focus()})),onPointerDownOutside:A(e.onPointerDownOutside,(e=>{const t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey,r=2===t.button||n;i.current=r}),{checkForDefaultPrevented:!1}),onFocusOutside:A(e.onFocusOutside,(e=>e.preventDefault()),{checkForDefaultPrevented:!1})})))})),Yi=d(((e,t)=>{const n=Ui(Gi,e.__scopePopover),r=c(!1),a=c(!1);return o(Ji,E({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var o,i;(null===(o=e.onCloseAutoFocus)||void 0===o||o.call(e,t),t.defaultPrevented)||(r.current||null===(i=n.triggerRef.current)||void 0===i||i.focus(),t.preventDefault());r.current=!1,a.current=!1},onInteractOutside:t=>{var o,i;null===(o=e.onInteractOutside)||void 0===o||o.call(e,t),t.defaultPrevented||(r.current=!0,"pointerdown"===t.detail.originalEvent.type&&(a.current=!0));const l=t.target;(null===(i=n.triggerRef.current)||void 0===i?void 0:i.contains(l))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&a.current&&t.preventDefault()}}))})),Ji=d(((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:a,onCloseAutoFocus:i,disableOutsidePointerEvents:l,onEscapeKeyDown:c,onPointerDownOutside:s,onFocusOutside:u,onInteractOutside:d,...p}=e,f=Ui(Gi,n),m=Vi(n);return ce(),o(Y,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:a,onUnmountAutoFocus:i},o(W,{asChild:!0,disableOutsidePointerEvents:l,onInteractOutside:d,onEscapeKeyDown:c,onPointerDownOutside:s,onFocusOutside:u,onDismiss:()=>f.onOpenChange(!1)},o(ji,E({"data-state":Qi(f.open),role:"dialog",id:f.contentId},m,p,{ref:t,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))}));function Qi(e){return e?"open":"closed"}const el=e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:a,onOpenChange:l,modal:s=!1}=e,d=Vi(t),p=c(null),[f,m]=u(!1),[v=!1,h]=I({prop:r,defaultProp:a,onChange:l});return o(Li,d,o(Bi,{scope:t,contentId:M(),triggerRef:p,open:v,onOpenChange:h,onOpenToggle:i((()=>h((e=>!e))),[h]),hasCustomAnchor:f,onCustomAnchorAdd:i((()=>m(!0)),[]),onCustomAnchorRemove:i((()=>m(!1)),[]),modal:s},n))},tl=zi,nl=e=>{const{__scopePopover:t,forceMount:n,children:r,container:a}=e,i=Ui(Wi,t);return o(Ki,{scope:t,forceMount:n},o(ae,{present:n||i.open},o(oe,{asChild:!0,container:a},r)))},rl=$i;var ol="Popover-modules_popoverContent__EQXkn",al=g((function(e){var n,r=e.align,o=void 0===r?"center":r,a=e.childClass,i=void 0===a?"":a,l=e.children,c=void 0===l?"":l,s=e.content,u=void 0===s?"":s,d=e.isContentChild,p=void 0!==d&&d,f=e.isOpen,m=void 0!==f&&f,v=e.onOpen,h=e.className,g=void 0===h?"":h;return t.createElement(el,{open:m,onOpenChange:function(e){v&&v(e)}},t.createElement(tl,{className:i},c),t.createElement(nl,null,t.createElement(rl,{align:o,className:Qt("demio-ui-modal-content",ol,(n={},n[g]=!!g,n)),asChild:p},u)))}));const il="Progress",ll=100,[cl,sl]=x(il),[ul,dl]=cl(il),pl=d(((e,t)=>{const{__scopeProgress:n,value:r,max:a,getValueLabel:i=fl,...l}=e,c=hl(a)?a:ll,s=gl(r,c)?r:null,u=vl(s)?i(s,c):void 0;return o(ul,{scope:n,value:s,max:c},o(Z.div,E({"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":vl(s)?s:void 0,"aria-valuetext":u,role:"progressbar","data-state":ml(s,c),"data-value":null!=s?s:void 0,"data-max":c},l,{ref:t})))}));pl.propTypes={max(e,t,n){const r=e[t],o=String(r);return r&&!hl(r)?new Error(function(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`}(o,n)):null},value(e,t,n){const r=e[t],o=String(r),a=hl(e.max)?e.max:ll;return null==r||gl(r,a)?null:new Error(function(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be:\n - a positive number\n - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)\n - \`null\` if the progress is indeterminate.\n\nDefaulting to \`null\`.`}(o,n))}};function fl(e,t){return`${Math.round(e/t*100)}%`}function ml(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function vl(e){return"number"==typeof e}function hl(e){return vl(e)&&!isNaN(e)&&e>0}function gl(e,t){return vl(e)&&!isNaN(e)&&e<=t&&e>=0}const yl=pl,wl=d(((e,t)=>{var n;const{__scopeProgress:r,...a}=e,i=dl("ProgressIndicator",r);return o(Z.div,E({"data-state":ml(i.value,i.max),"data-value":null!==(n=i.value)&&void 0!==n?n:void 0,"data-max":i.max},a,{ref:t}))}));var bl="Progress-modules_root__E0rHH",_l="Progress-modules_indicator__qpwRi";function El(e){var n=e.max,r=void 0===n?100:n,o=e.progress,a=void 0===o?0:o,i=e.className,l=void 0===i?"":i,c=de(e,["max","progress","className"]),s=a>r?"100%":"".concat(a/r*100,"%");return t.createElement(yl,ue({className:Qt("demio-ui-progress",bl,{className:!!l}),value:a>r?r:a,max:r},c),t.createElement(wl,{className:_l,style:{width:s}}))}function xl(e){const n=e+"CollectionProvider",[r,o]=x(n),[a,i]=r(n,{collectionRef:{current:null},itemMap:new Map}),l=e+"CollectionSlot",c=e+"CollectionItemSlot",s="data-radix-collection-item";return[{Provider:e=>{const{scope:n,children:r}=e,o=t.useRef(null),i=t.useRef(new Map).current;return t.createElement(a,{scope:n,itemMap:i,collectionRef:o},r)},Slot:t.forwardRef(((e,n)=>{const{scope:r,children:o}=e,a=k(n,i(l,r).collectionRef);return t.createElement(L,{ref:a},o)})),ItemSlot:t.forwardRef(((e,n)=>{const{scope:r,children:o,...a}=e,l=t.useRef(null),u=k(n,l),d=i(c,r);return t.useEffect((()=>(d.itemMap.set(l,{ref:l,...a}),()=>{d.itemMap.delete(l)}))),t.createElement(L,{[s]:"",ref:u},o)}))},function(n){const r=i(e+"CollectionConsumer",n);return t.useCallback((()=>{const e=r.collectionRef.current;if(!e)return[];const t=Array.from(e.querySelectorAll(`[${s}]`));return Array.from(r.itemMap.values()).sort(((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current)))}),[r.collectionRef,r.itemMap])},o]}const Ol=n(void 0);function Cl(e){const t=a(Ol);return e||t||"ltr"}const kl="rovingFocusGroup.onEntryFocus",Al={bubbles:!1,cancelable:!0},Dl="RovingFocusGroup",[Pl,Tl,Ml]=xl(Dl),[Sl,Il]=x(Dl,[Ml]),[Ll,Nl]=Sl(Dl),jl=d(((e,t)=>o(Pl.Provider,{scope:e.__scopeRovingFocusGroup},o(Pl.Slot,{scope:e.__scopeRovingFocusGroup},o(Rl,E({},e,{ref:t})))))),Rl=d(((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:a=!1,dir:l,currentTabStopId:d,defaultCurrentTabStopId:p,onCurrentTabStopIdChange:f,onEntryFocus:m,...v}=e,h=c(null),g=k(t,h),y=Cl(l),[w=null,b]=I({prop:d,defaultProp:p,onChange:f}),[_,x]=u(!1),O=S(m),C=Tl(n),D=c(!1),[P,T]=u(0);return s((()=>{const e=h.current;if(e)return e.addEventListener(kl,O),()=>e.removeEventListener(kl,O)}),[O]),o(Ll,{scope:n,orientation:r,dir:y,loop:a,currentTabStopId:w,onItemFocus:i((e=>b(e)),[b]),onItemShiftTab:i((()=>x(!0)),[]),onFocusableItemAdd:i((()=>T((e=>e+1))),[]),onFocusableItemRemove:i((()=>T((e=>e-1))),[])},o(Z.div,E({tabIndex:_||0===P?-1:0,"data-orientation":r},v,{ref:g,style:{outline:"none",...e.style},onMouseDown:A(e.onMouseDown,(()=>{D.current=!0})),onFocus:A(e.onFocus,(e=>{const t=!D.current;if(e.target===e.currentTarget&&t&&!_){const t=new CustomEvent(kl,Al);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){const e=C().filter((e=>e.focusable));Fl([e.find((e=>e.active)),e.find((e=>e.id===w)),...e].filter(Boolean).map((e=>e.ref.current)))}}D.current=!1})),onBlur:A(e.onBlur,(()=>x(!1)))})))})),Hl=d(((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:a=!1,tabStopId:i,...l}=e,c=M(),u=i||c,d=Nl("RovingFocusGroupItem",n),p=d.currentTabStopId===u,f=Tl(n),{onFocusableItemAdd:m,onFocusableItemRemove:v}=d;return s((()=>{if(r)return m(),()=>v()}),[r,m,v]),o(Pl.ItemSlot,{scope:n,id:u,focusable:r,active:a},o(Z.span,E({tabIndex:p?0:-1,"data-orientation":d.orientation},l,{ref:t,onMouseDown:A(e.onMouseDown,(e=>{r?d.onItemFocus(u):e.preventDefault()})),onFocus:A(e.onFocus,(()=>d.onItemFocus(u))),onKeyDown:A(e.onKeyDown,(e=>{if("Tab"===e.key&&e.shiftKey)return void d.onItemShiftTab();if(e.target!==e.currentTarget)return;const t=function(e,t,n){const r=function(e,t){return"rtl"!==t?e:"ArrowLeft"===e?"ArrowRight":"ArrowRight"===e?"ArrowLeft":e}(e.key,n);return"vertical"===t&&["ArrowLeft","ArrowRight"].includes(r)||"horizontal"===t&&["ArrowUp","ArrowDown"].includes(r)?void 0:Zl[r]}(e,d.orientation,d.dir);if(void 0!==t){e.preventDefault();let o=f().filter((e=>e.focusable)).map((e=>e.ref.current));if("last"===t)o.reverse();else if("prev"===t||"next"===t){"prev"===t&&o.reverse();const a=o.indexOf(e.currentTarget);o=d.loop?(r=a+1,(n=o).map(((e,t)=>n[(r+t)%n.length]))):o.slice(a+1)}setTimeout((()=>Fl(o)))}var n,r}))})))})),Zl={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Fl(e){const t=document.activeElement;for(const n of e){if(n===t)return;if(n.focus(),document.activeElement!==t)return}}const Vl=jl,Bl=Hl,Ul="Radio",[zl,Wl]=x(Ul),[Kl,ql]=zl(Ul),Gl=d(((e,t)=>{const{__scopeRadio:n,name:r,checked:a=!1,required:i,disabled:l,value:s="on",onCheck:d,...p}=e,[f,m]=u(null),v=k(t,(e=>m(e))),h=c(!1),g=!f||Boolean(f.closest("form"));return o(Kl,{scope:n,checked:a,disabled:l},o(Z.button,E({type:"button",role:"radio","aria-checked":a,"data-state":Yl(a),"data-disabled":l?"":void 0,disabled:l,value:s},p,{ref:v,onClick:A(e.onClick,(e=>{a||null==d||d(),g&&(h.current=e.isPropagationStopped(),h.current||e.stopPropagation())}))})),g&&o(Xl,{control:f,bubbles:!h.current,name:r,value:s,checked:a,required:i,disabled:l,style:{transform:"translateX(-100%)"}}))})),$l=d(((e,t)=>{const{__scopeRadio:n,forceMount:r,...a}=e,i=ql("RadioIndicator",n);return o(ae,{present:r||i.checked},o(Z.span,E({"data-state":Yl(i.checked),"data-disabled":i.disabled?"":void 0},a,{ref:t})))})),Xl=e=>{const{control:t,checked:n,bubbles:r=!0,...a}=e,i=c(null),l=sn(n),u=un(t);return s((()=>{const e=i.current,t=window.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(t,"checked").set;if(l!==n&&o){const t=new Event("click",{bubbles:r});o.call(e,n),e.dispatchEvent(t)}}),[l,n,r]),o("input",E({type:"radio","aria-hidden":!0,defaultChecked:n},a,{tabIndex:-1,ref:i,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function Yl(e){return e?"checked":"unchecked"}const Jl=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Ql="RadioGroup",[ec,tc]=x(Ql,[Il,Wl]),nc=Il(),rc=Wl(),[oc,ac]=ec(Ql),ic=d(((e,t)=>{const{__scopeRadioGroup:n,name:r,defaultValue:a,value:i,required:l=!1,disabled:c=!1,orientation:s,dir:u,loop:d=!0,onValueChange:p,...f}=e,m=nc(n),v=Cl(u),[h,g]=I({prop:i,defaultProp:a,onChange:p});return o(oc,{scope:n,name:r,required:l,disabled:c,value:h,onValueChange:g},o(Vl,E({asChild:!0},m,{orientation:s,dir:v,loop:d}),o(Z.div,E({role:"radiogroup","aria-required":l,"aria-orientation":s,"data-disabled":c?"":void 0,dir:v},f,{ref:t}))))})),lc=d(((e,t)=>{const{__scopeRadioGroup:n,disabled:r,...a}=e,i=ac("RadioGroupItem",n),l=i.disabled||r,u=nc(n),d=rc(n),p=c(null),f=k(t,p),m=i.value===a.value,v=c(!1);return s((()=>{const e=e=>{Jl.includes(e.key)&&(v.current=!0)},t=()=>v.current=!1;return document.addEventListener("keydown",e),document.addEventListener("keyup",t),()=>{document.removeEventListener("keydown",e),document.removeEventListener("keyup",t)}}),[]),o(Bl,E({asChild:!0},u,{focusable:!l,active:m}),o(Gl,E({disabled:l,required:i.required,checked:m},d,a,{name:i.name,ref:f,onCheck:()=>i.onValueChange(a.value),onKeyDown:A((e=>{"Enter"===e.key&&e.preventDefault()})),onFocus:A(a.onFocus,(()=>{var e;v.current&&(null===(e=p.current)||void 0===e||e.click())}))})))})),cc=d(((e,t)=>{const{__scopeRadioGroup:n,...r}=e,a=rc(n);return o($l,E({},a,r,{ref:t}))}));var sc={root:"RadioGroup-modules_root__AbbNa",container:"RadioGroup-modules_container__yPAMg",indicator:"RadioGroup-modules_indicator__jEw97",item:"RadioGroup-modules_item__wuUmn",label:"RadioGroup-modules_label__ggYdY",footer:"RadioGroup-modules_footer__1Zp99",disabled:"RadioGroup-modules_disabled__H3T--"};function uc(e){var n,o=e.items,a=void 0===o?[]:o,i=e.error,l=void 0===i?"":i,c=e.defaultValue,s=void 0===c?"":c,u=e.ariaLabel,d=void 0===u?"":u,p=e.hint,f=void 0===p?"":p,m=e.onChange,v=e.disabled,h=void 0!==v&&v,g=e.value,y=void 0===g?"":g,w=e.className,b=void 0===w?"":w,_=de(e,["items","error","defaultValue","ariaLabel","hint","onChange","disabled","value","className"]),E=r((function(){return m?{value:y,onValueChange:m}:{}}),[y,m]);return t.createElement(ic,ue({},E,_,{className:Qt("demio-ui-radio-group",sc.root,(n={},n[sc.error]=!!l,n[b]=!!b,n)),defaultValue:s,"aria-label":d}),a.map((function(e){var n;return t.createElement("div",{key:e.id,className:Qt(sc.container,(n={},n[sc.disabled]=e.disabled||h,n))},t.createElement(lc,{className:sc.item,value:e.value,disabled:e.disabled||h,id:e.id},t.createElement(cc,{className:sc.indicator})),t.createElement(Bo,{className:sc.label,htmlFor:e.id,weight:"regular"},e.label))})),t.createElement("div",{className:sc.footer},l&&t.createElement(Go,{type:"error"},l),f&&!l&&t.createElement(Go,null,f)))}const dc="Switch",[pc,fc]=x(dc),[mc,vc]=pc(dc),hc=d(((e,t)=>{const{__scopeSwitch:n,name:r,checked:a,defaultChecked:i,required:l,disabled:s,value:d="on",onCheckedChange:p,...f}=e,[m,v]=u(null),h=k(t,(e=>v(e))),g=c(!1),y=!m||Boolean(m.closest("form")),[w=!1,b]=I({prop:a,defaultProp:i,onChange:p});return o(mc,{scope:n,checked:w,disabled:s},o(Z.button,E({type:"button",role:"switch","aria-checked":w,"aria-required":l,"data-state":yc(w),"data-disabled":s?"":void 0,disabled:s,value:d},f,{ref:h,onClick:A(e.onClick,(e=>{b((e=>!e)),y&&(g.current=e.isPropagationStopped(),g.current||e.stopPropagation())}))})),y&&o(gc,{control:m,bubbles:!g.current,name:r,value:d,checked:w,required:l,disabled:s,style:{transform:"translateX(-100%)"}}))})),gc=e=>{const{control:t,checked:n,bubbles:r=!0,...a}=e,i=c(null),l=sn(n),u=un(t);return s((()=>{const e=i.current,t=window.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(t,"checked").set;if(l!==n&&o){const t=new Event("click",{bubbles:r});o.call(e,n),e.dispatchEvent(t)}}),[l,n,r]),o("input",E({type:"checkbox","aria-hidden":!0,defaultChecked:n},a,{tabIndex:-1,ref:i,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function yc(e){return e?"checked":"unchecked"}const wc=hc,bc=d(((e,t)=>{const{__scopeSwitch:n,...r}=e,a=vc("SwitchThumb",n);return o(Z.span,E({"data-state":yc(a.checked),"data-disabled":a.disabled?"":void 0},r,{ref:t}))}));var _c="Switch-modules_root__V5S6a",Ec="Switch-modules_thumb__PZ-lR";function xc(e){var n,r=e.className,o=void 0===r?"":r,a=e.id,i=void 0===a?"":a,l=e.disabled,c=void 0!==l&&l,s=e.required,u=void 0!==s&&s,d=e.name,p=de(e,["className","id","disabled","required","name"]);return t.createElement(wc,ue({className:Qt(_c,"demio-ui-switch",(n={},n[o]=!!o,n)),disabled:c,required:u,name:d,id:i||d},p),t.createElement(bc,{className:Ec}))}const Oc=d(((e,t)=>o(Z.span,E({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}})))),Cc=Oc,[kc,Ac]=x("Tooltip",[Ei]),Dc=Ei(),Pc=700,Tc="tooltip.open",[Mc,Sc]=kc("TooltipProvider"),Ic="Tooltip",[Lc,Nc]=kc(Ic),jc="TooltipTrigger",Rc=d(((e,t)=>{const{__scopeTooltip:n,...r}=e,a=Nc(jc,n),l=Sc(jc,n),u=Dc(n),d=k(t,c(null),a.onTriggerChange),p=c(!1),f=c(!1),m=i((()=>p.current=!1),[]);return s((()=>()=>document.removeEventListener("pointerup",m)),[m]),o(Ni,E({asChild:!0},u),o(Z.button,E({"aria-describedby":a.open?a.contentId:void 0,"data-state":a.stateAttribute},r,{ref:d,onPointerMove:A(e.onPointerMove,(e=>{"touch"!==e.pointerType&&(f.current||l.isPointerInTransitRef.current||(a.onTriggerEnter(),f.current=!0))})),onPointerLeave:A(e.onPointerLeave,(()=>{a.onTriggerLeave(),f.current=!1})),onPointerDown:A(e.onPointerDown,(()=>{p.current=!0,document.addEventListener("pointerup",m,{once:!0})})),onFocus:A(e.onFocus,(()=>{p.current||a.onOpen()})),onBlur:A(e.onBlur,a.onClose),onClick:A(e.onClick,a.onClose)})))})),Hc="TooltipPortal",[Zc,Fc]=kc(Hc,{forceMount:void 0}),Vc="TooltipContent",Bc=d(((e,t)=>{const n=Fc(Vc,e.__scopeTooltip),{forceMount:r=n.forceMount,side:a="top",...i}=e,l=Nc(Vc,e.__scopeTooltip);return o(ae,{present:r||l.open},l.disableHoverableContent?o(Kc,E({side:a},i,{ref:t})):o(Uc,E({side:a},i,{ref:t})))})),Uc=d(((e,t)=>{const n=Nc(Vc,e.__scopeTooltip),r=Sc(Vc,e.__scopeTooltip),a=c(null),l=k(t,a),[d,p]=u(null),{trigger:f,onClose:m}=n,v=a.current,{onPointerInTransitChange:h}=r,g=i((()=>{p(null),h(!1)}),[h]),y=i(((e,t)=>{const n=e.currentTarget,r={x:e.clientX,y:e.clientY},o=function(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,function(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,o,a)){case a:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}(r,n.getBoundingClientRect())),a=function(e){const t=e.slice();return t.sort(((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0)),function(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const r=e[n];for(;t.length>=2;){const e=t[t.length-1],n=t[t.length-2];if(!((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x)))break;t.pop()}t.push(r)}t.pop();const n=[];for(let t=e.length-1;t>=0;t--){const r=e[t];for(;n.length>=2;){const e=n[n.length-1],t=n[n.length-2];if(!((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x)))break;n.pop()}n.push(r)}return n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}(t)}([...o,...function(e){const{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}(t.getBoundingClientRect())]);p(a),h(!0)}),[h]);return s((()=>()=>g()),[g]),s((()=>{if(f&&v){const e=e=>y(e,v),t=e=>y(e,f);return f.addEventListener("pointerleave",e),v.addEventListener("pointerleave",t),()=>{f.removeEventListener("pointerleave",e),v.removeEventListener("pointerleave",t)}}}),[f,v,y,g]),s((()=>{if(d){const e=e=>{const t=e.target,n={x:e.clientX,y:e.clientY},r=(null==f?void 0:f.contains(t))||(null==v?void 0:v.contains(t)),o=!function(e,t){const{x:n,y:r}=e;let o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){const i=t[e].x,l=t[e].y,c=t[a].x,s=t[a].y;l>r!=s>r&&n<(c-i)*(r-l)/(s-l)+i&&(o=!o)}return o}(n,d);r?g():o&&(g(),m())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}}),[f,v,d,m,g]),o(Kc,E({},e,{ref:l}))})),[zc,Wc]=kc(Ic,{isInside:!1}),Kc=d(((e,t)=>{const{__scopeTooltip:n,children:r,"aria-label":a,onEscapeKeyDown:i,onPointerDownOutside:l,...c}=e,u=Nc(Vc,n),d=Dc(n),{onClose:p}=u;return s((()=>(document.addEventListener(Tc,p),()=>document.removeEventListener(Tc,p))),[p]),s((()=>{if(u.trigger){const e=e=>{const t=e.target;null!=t&&t.contains(u.trigger)&&p()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}}),[u.trigger,p]),o(W,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:l,onFocusOutside:e=>e.preventDefault(),onDismiss:p},o(ji,E({"data-state":u.stateAttribute},d,c,{ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"}}),o(j,null,r),o(zc,{scope:n,isInside:!0},o(Cc,{id:u.contentId,role:"tooltip"},a||r))))}));const qc=e=>{const{__scopeTooltip:t,delayDuration:n=Pc,skipDelayDuration:r=300,disableHoverableContent:a=!1,children:l}=e,[d,p]=u(!0),f=c(!1),m=c(0);return s((()=>{const e=m.current;return()=>window.clearTimeout(e)}),[]),o(Mc,{scope:t,isOpenDelayed:d,delayDuration:n,onOpen:i((()=>{window.clearTimeout(m.current),p(!1)}),[]),onClose:i((()=>{window.clearTimeout(m.current),m.current=window.setTimeout((()=>p(!0)),r)}),[r]),isPointerInTransitRef:f,onPointerInTransitChange:i((e=>{f.current=e}),[]),disableHoverableContent:a},l)},Gc=e=>{const{__scopeTooltip:t,children:n,open:a,defaultOpen:l=!1,onOpenChange:d,disableHoverableContent:p,delayDuration:f}=e,m=Sc(Ic,e.__scopeTooltip),v=Dc(t),[h,g]=u(null),y=M(),w=c(0),b=null!=p?p:m.disableHoverableContent,_=null!=f?f:m.delayDuration,E=c(!1),[x=!1,O]=I({prop:a,defaultProp:l,onChange:e=>{e?(m.onOpen(),document.dispatchEvent(new CustomEvent(Tc))):m.onClose(),null==d||d(e)}}),C=r((()=>x?E.current?"delayed-open":"instant-open":"closed"),[x]),k=i((()=>{window.clearTimeout(w.current),E.current=!1,O(!0)}),[O]),A=i((()=>{window.clearTimeout(w.current),O(!1)}),[O]),D=i((()=>{window.clearTimeout(w.current),w.current=window.setTimeout((()=>{E.current=!0,O(!0)}),_)}),[_,O]);return s((()=>()=>window.clearTimeout(w.current)),[]),o(Li,v,o(Lc,{scope:t,contentId:y,open:x,stateAttribute:C,trigger:h,onTriggerChange:g,onTriggerEnter:i((()=>{m.isOpenDelayed?D():k()}),[m.isOpenDelayed,D,k]),onTriggerLeave:i((()=>{b?A():window.clearTimeout(w.current)}),[A,b]),onOpen:k,onClose:A,disableHoverableContent:b},n))},$c=Rc,Xc=e=>{const{__scopeTooltip:t,forceMount:n,children:r,container:a}=e,i=Nc(Hc,t);return o(Zc,{scope:t,forceMount:n},o(ae,{present:n||i.open},o(oe,{asChild:!0,container:a},r)))},Yc=Bc,Jc=d(((e,t)=>{const{__scopeTooltip:n,...r}=e,a=Dc(n);return Wc("TooltipArrow",n).isInside?null:o(Ri,E({},a,r,{ref:t}))}));var Qc="Tooltip-modules_content__--tK0",es="Tooltip-modules_arrow__4vjj8";function ts(e){var n,r=e.children,o=e.content,a=e.open,i=e.defaultOpen,l=e.onOpenChange,c=e.side,s=void 0===c?"top":c,u=e.align,d=void 0===u?"center":u,p=e.className,f=void 0===p?"":p,m=e.delayDuration,v=void 0===m?200:m,h=e.sideOffset,g=void 0===h?4:h,y=e.isPortal,w=void 0!==y&&y,b=de(e,["children","content","open","defaultOpen","onOpenChange","side","align","className","delayDuration","sideOffset","isPortal"]),_=t.createElement(Yc,ue({sideOffset:g,side:s,align:d},b,{className:Qt(Qc,"demio-ui-tooltip",(n={},n[f]=f,n))}),o,t.createElement(Jc,{className:es,width:11,height:5}));return o?t.createElement(qc,null,t.createElement(Gc,{delayDuration:v,open:a,defaultOpen:i,onOpenChange:l},t.createElement($c,{asChild:!0},r),w?t.createElement(Xc,null,_):_)):r}function ns(e,[t,n]){return Math.min(n,Math.max(t,e))}const rs=[" ","Enter","ArrowUp","ArrowDown"],os=[" ","Enter"],as="Select",[is,ls,cs]=xl(as),[ss,us]=x(as,[cs,Ei]),ds=Ei(),[ps,fs]=ss(as),[ms,vs]=ss(as),hs=d(((e,t)=>{const{__scopeSelect:n,disabled:r=!1,...a}=e,i=ds(n),l=fs("SelectTrigger",n),c=l.disabled||r,s=k(t,l.onTriggerChange),u=ls(n),[d,p,f]=Us((e=>{const t=u().filter((e=>!e.disabled)),n=t.find((e=>e.value===l.value)),r=zs(t,e,n);void 0!==r&&l.onValueChange(r.value)})),m=()=>{c||(l.onOpenChange(!0),f())};return o(Ni,E({asChild:!0},i),o(Z.button,E({type:"button",role:"combobox","aria-controls":l.contentId,"aria-expanded":l.open,"aria-required":l.required,"aria-autocomplete":"none",dir:l.dir,"data-state":l.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":void 0===l.value?"":void 0},a,{ref:s,onClick:A(a.onClick,(e=>{e.currentTarget.focus()})),onPointerDown:A(a.onPointerDown,(e=>{const t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&(m(),l.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)},e.preventDefault())})),onKeyDown:A(a.onKeyDown,(e=>{const t=""!==d.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||p(e.key),t&&" "===e.key||rs.includes(e.key)&&(m(),e.preventDefault())}))})))})),gs=d(((e,t)=>{const{__scopeSelect:n,className:r,style:a,children:i,placeholder:l,...c}=e,s=fs("SelectValue",n),{onValueNodeHasChildrenChange:u}=s,d=void 0!==i,p=k(t,s.onValueNodeChange);return D((()=>{u(d)}),[u,d]),o(Z.span,E({},c,{ref:p,style:{pointerEvents:"none"}}),void 0===s.value&&void 0!==l?l:i)})),ys=d(((e,t)=>{const{__scopeSelect:n,children:r,...a}=e;return o(Z.span,E({"aria-hidden":!0},a,{ref:t}),r||"▼")})),ws="SelectContent",bs=d(((e,t)=>{const n=fs(ws,e.__scopeSelect),[r,a]=u();if(D((()=>{a(new DocumentFragment)}),[]),!n.open){const t=r;return t?_(o(Es,{scope:e.__scopeSelect},o(is.Slot,{scope:e.__scopeSelect},o("div",null,e.children))),t):null}return o(Os,E({},e,{ref:t}))})),_s=10,[Es,xs]=ss(ws),Os=d(((e,t)=>{const{__scopeSelect:n,position:r="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:l,onPointerDownOutside:d,side:p,sideOffset:f,align:m,alignOffset:v,arrowPadding:h,collisionBoundary:g,collisionPadding:y,sticky:w,hideWhenDetached:b,avoidCollisions:_,...x}=e,O=fs(ws,n),[C,D]=u(null),[P,T]=u(null),M=k(t,(e=>D(e))),[S,I]=u(null),[N,j]=u(null),R=ls(n),[H,Z]=u(!1),F=c(!1);s((()=>{if(C)return Je(C)}),[C]),ce();const V=i((e=>{const[t,...n]=R().map((e=>e.ref.current)),[r]=n.slice(-1),o=document.activeElement;for(const n of e){if(n===o)return;if(null==n||n.scrollIntoView({block:"nearest"}),n===t&&P&&(P.scrollTop=0),n===r&&P&&(P.scrollTop=P.scrollHeight),null==n||n.focus(),document.activeElement!==o)return}}),[R,P]),B=i((()=>V([S,C])),[V,S,C]);s((()=>{H&&B()}),[H,B]);const{onOpenChange:U,triggerPointerDownPosRef:z}=O;s((()=>{if(C){let e={x:0,y:0};const t=t=>{var n,r,o,a;e={x:Math.abs(Math.round(t.pageX)-(null!==(n=null===(r=z.current)||void 0===r?void 0:r.x)&&void 0!==n?n:0)),y:Math.abs(Math.round(t.pageY)-(null!==(o=null===(a=z.current)||void 0===a?void 0:a.y)&&void 0!==o?o:0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():C.contains(n.target)||U(!1),document.removeEventListener("pointermove",t),z.current=null};return null!==z.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",n,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",n,{capture:!0})}}}),[C,U,z]),s((()=>{const e=()=>U(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}}),[U]);const[K,q]=Us((e=>{const t=R().filter((e=>!e.disabled)),n=t.find((e=>e.ref.current===document.activeElement)),r=zs(t,e,n);r&&setTimeout((()=>r.ref.current.focus()))})),G=i(((e,t,n)=>{const r=!F.current&&!n;(void 0!==O.value&&O.value===t||r)&&(I(e),r&&(F.current=!0))}),[O.value]),$=i((()=>null==C?void 0:C.focus()),[C]),X=i(((e,t,n)=>{const r=!F.current&&!n;(void 0!==O.value&&O.value===t||r)&&j(e)}),[O.value]),J="popper"===r?ks:Cs,Q=J===ks?{side:p,sideOffset:f,align:m,alignOffset:v,arrowPadding:h,collisionBoundary:g,collisionPadding:y,sticky:w,hideWhenDetached:b,avoidCollisions:_}:{};return o(Es,{scope:n,content:C,viewport:P,onViewportChange:T,itemRefCallback:G,selectedItem:S,onItemLeave:$,itemTextRefCallback:X,focusSelectedItem:B,selectedItemText:N,position:r,isPositioned:H,searchRef:K},o(We,{as:L,allowPinchZoom:!0},o(Y,{asChild:!0,trapped:O.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:A(a,(e=>{var t;null===(t=O.trigger)||void 0===t||t.focus({preventScroll:!0}),e.preventDefault()}))},o(W,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>O.onOpenChange(!1)},o(J,E({role:"listbox",id:O.contentId,"data-state":O.open?"open":"closed",dir:O.dir,onContextMenu:e=>e.preventDefault()},x,Q,{onPlaced:()=>Z(!0),ref:M,style:{display:"flex",flexDirection:"column",outline:"none",...x.style},onKeyDown:A(x.onKeyDown,(e=>{const t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||q(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=R().filter((e=>!e.disabled)).map((e=>e.ref.current));if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){const n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout((()=>V(t))),e.preventDefault()}}))}))))))})),Cs=d(((e,t)=>{const{__scopeSelect:n,onPlaced:r,...a}=e,l=fs(ws,n),s=xs(ws,n),[d,p]=u(null),[f,m]=u(null),v=k(t,(e=>m(e))),h=ls(n),g=c(!1),y=c(!0),{viewport:w,selectedItem:b,selectedItemText:_,focusSelectedItem:x}=s,O=i((()=>{if(l.trigger&&l.valueNode&&d&&f&&w&&b&&_){const e=l.trigger.getBoundingClientRect(),t=f.getBoundingClientRect(),n=l.valueNode.getBoundingClientRect(),o=_.getBoundingClientRect();if("rtl"!==l.dir){const r=o.left-t.left,a=n.left-r,i=e.left-a,l=e.width+i,c=Math.max(l,t.width),s=window.innerWidth-_s,u=ns(a,[_s,s-c]);d.style.minWidth=l+"px",d.style.left=u+"px"}else{const r=t.right-o.right,a=window.innerWidth-n.right-r,i=window.innerWidth-e.right-a,l=e.width+i,c=Math.max(l,t.width),s=window.innerWidth-_s,u=ns(a,[_s,s-c]);d.style.minWidth=l+"px",d.style.right=u+"px"}const a=h(),i=window.innerHeight-2*_s,c=w.scrollHeight,s=window.getComputedStyle(f),u=parseInt(s.borderTopWidth,10),p=parseInt(s.paddingTop,10),m=parseInt(s.borderBottomWidth,10),v=u+p+c+parseInt(s.paddingBottom,10)+m,y=Math.min(5*b.offsetHeight,v),E=window.getComputedStyle(w),x=parseInt(E.paddingTop,10),O=parseInt(E.paddingBottom,10),C=e.top+e.height/2-_s,k=i-C,A=b.offsetHeight/2,D=u+p+(b.offsetTop+A),P=v-D;if(D<=C){const e=b===a[a.length-1].ref.current;d.style.bottom="0px";const t=f.clientHeight-w.offsetTop-w.offsetHeight,n=D+Math.max(k,A+(e?O:0)+t+m);d.style.height=n+"px"}else{const e=b===a[0].ref.current;d.style.top="0px";const t=Math.max(C,u+w.offsetTop+(e?x:0)+A)+P;d.style.height=t+"px",w.scrollTop=D-C+w.offsetTop}d.style.margin=`${_s}px 0`,d.style.minHeight=y+"px",d.style.maxHeight=i+"px",null==r||r(),requestAnimationFrame((()=>g.current=!0))}}),[h,l.trigger,l.valueNode,d,f,w,b,_,l.dir,r]);D((()=>O()),[O]);const[C,A]=u();D((()=>{f&&A(window.getComputedStyle(f).zIndex)}),[f]);const P=i((e=>{e&&!0===y.current&&(O(),null==x||x(),y.current=!1)}),[O,x]);return o(As,{scope:n,contentWrapper:d,shouldExpandOnScrollRef:g,onScrollButtonChange:P},o("div",{ref:p,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:C}},o(Z.div,E({},a,{ref:v,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}}))))})),ks=d(((e,t)=>{const{__scopeSelect:n,align:r="start",collisionPadding:a=_s,...i}=e,l=ds(n);return o(ji,E({},l,i,{ref:t,align:r,collisionPadding:a,style:{boxSizing:"border-box",...i.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}}))})),[As,Ds]=ss(ws,{}),Ps="SelectViewport",Ts=d(((e,t)=>{const{__scopeSelect:n,...r}=e,a=xs(Ps,n),i=Ds(Ps,n),l=k(t,a.onViewportChange),s=c(0);return o(v,null,o("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"}}),o(is.Slot,{scope:n},o(Z.div,E({"data-radix-select-viewport":"",role:"presentation"},r,{ref:l,style:{position:"relative",flex:1,overflow:"auto",...r.style},onScroll:A(r.onScroll,(e=>{const t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=i;if(null!=r&&r.current&&n){const e=Math.abs(s.current-t.scrollTop);if(e>0){const r=window.innerHeight-2*_s,o=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),i=Math.max(o,a);if(i<r){const o=i+e,a=Math.min(r,o),l=o-a;n.style.height=a+"px","0px"===n.style.bottom&&(t.scrollTop=l>0?l:0,n.style.justifyContent="flex-end")}}}s.current=t.scrollTop}))}))))}));ss("SelectGroup");const Ms="SelectItem",[Ss,Is]=ss(Ms),Ls=d(((e,t)=>{const{__scopeSelect:n,value:r,disabled:a=!1,textValue:l,...c}=e,s=fs(Ms,n),d=xs(Ms,n),p=s.value===r,[f,m]=u(null!=l?l:""),[v,h]=u(!1),g=k(t,(e=>{var t;return null===(t=d.itemRefCallback)||void 0===t?void 0:t.call(d,e,r,a)})),y=M(),w=()=>{a||(s.onValueChange(r),s.onOpenChange(!1))};return o(Ss,{scope:n,value:r,disabled:a,textId:y,isSelected:p,onItemTextChange:i((e=>{m((t=>{var n;return t||(null!==(n=null==e?void 0:e.textContent)&&void 0!==n?n:"").trim()}))}),[])},o(is.ItemSlot,{scope:n,value:r,disabled:a,textValue:f},o(Z.div,E({role:"option","aria-labelledby":y,"data-highlighted":v?"":void 0,"aria-selected":p&&v,"data-state":p?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1},c,{ref:g,onFocus:A(c.onFocus,(()=>h(!0))),onBlur:A(c.onBlur,(()=>h(!1))),onPointerUp:A(c.onPointerUp,w),onPointerMove:A(c.onPointerMove,(e=>{var t;a?null===(t=d.onItemLeave)||void 0===t||t.call(d):e.currentTarget.focus({preventScroll:!0})})),onPointerLeave:A(c.onPointerLeave,(e=>{var t;e.currentTarget===document.activeElement&&(null===(t=d.onItemLeave)||void 0===t||t.call(d))})),onKeyDown:A(c.onKeyDown,(e=>{var t;""!==(null===(t=d.searchRef)||void 0===t?void 0:t.current)&&" "===e.key||(os.includes(e.key)&&w()," "===e.key&&e.preventDefault())}))}))))})),Ns="SelectItemText",js=d(((e,t)=>{const{__scopeSelect:n,className:a,style:i,...l}=e,c=fs(Ns,n),s=xs(Ns,n),d=Is(Ns,n),p=vs(Ns,n),[f,m]=u(null),h=k(t,(e=>m(e)),d.onItemTextChange,(e=>{var t;return null===(t=s.itemTextRefCallback)||void 0===t?void 0:t.call(s,e,d.value,d.disabled)})),g=null==f?void 0:f.textContent,y=r((()=>o("option",{key:d.value,value:d.value,disabled:d.disabled},g)),[d.disabled,d.value,g]),{onNativeOptionAdd:w,onNativeOptionRemove:b}=p;return D((()=>(w(y),()=>b(y))),[w,b,y]),o(v,null,o(Z.span,E({id:d.textId},l,{ref:h})),d.isSelected&&c.valueNode&&!c.valueNodeHasChildren?_(l.children,c.valueNode):null)})),Rs="SelectScrollUpButton",Hs=d(((e,t)=>{const n=xs(Rs,e.__scopeSelect),r=Ds(Rs,e.__scopeSelect),[a,i]=u(!1),l=k(t,r.onScrollButtonChange);return D((()=>{if(n.viewport&&n.isPositioned){const t=n.viewport;function e(){const e=t.scrollTop>0;i(e)}return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}}),[n.viewport,n.isPositioned]),a?o(Vs,E({},e,{ref:l,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}})):null})),Zs="SelectScrollDownButton",Fs=d(((e,t)=>{const n=xs(Zs,e.__scopeSelect),r=Ds(Zs,e.__scopeSelect),[a,i]=u(!1),l=k(t,r.onScrollButtonChange);return D((()=>{if(n.viewport&&n.isPositioned){const t=n.viewport;function e(){const e=t.scrollHeight-t.clientHeight,n=Math.ceil(t.scrollTop)<e;i(n)}return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}}),[n.viewport,n.isPositioned]),a?o(Vs,E({},e,{ref:l,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}})):null})),Vs=d(((e,t)=>{const{__scopeSelect:n,onAutoScroll:r,...a}=e,l=xs("SelectScrollButton",n),u=c(null),d=ls(n),p=i((()=>{null!==u.current&&(window.clearInterval(u.current),u.current=null)}),[]);return s((()=>()=>p()),[p]),D((()=>{var e;const t=d().find((e=>e.ref.current===document.activeElement));null==t||null===(e=t.ref.current)||void 0===e||e.scrollIntoView({block:"nearest"})}),[d]),o(Z.div,E({"aria-hidden":!0},a,{ref:t,style:{flexShrink:0,...a.style},onPointerDown:A(a.onPointerDown,(()=>{null===u.current&&(u.current=window.setInterval(r,50))})),onPointerMove:A(a.onPointerMove,(()=>{var e;null===(e=l.onItemLeave)||void 0===e||e.call(l),null===u.current&&(u.current=window.setInterval(r,50))})),onPointerLeave:A(a.onPointerLeave,(()=>{p()}))}))})),Bs=d(((e,t)=>{const{value:n,...r}=e,a=c(null),i=k(t,a),l=sn(n);return s((()=>{const e=a.current,t=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(t,"value").set;if(l!==n&&r){const t=new Event("change",{bubbles:!0});r.call(e,n),e.dispatchEvent(t)}}),[l,n]),o(Oc,{asChild:!0},o("select",E({},r,{ref:i,defaultValue:n})))}));function Us(e){const t=S(e),n=c(""),r=c(0),o=i((e=>{const o=n.current+e;t(o),function e(t){n.current=t,window.clearTimeout(r.current),""!==t&&(r.current=window.setTimeout((()=>e("")),1e3))}(o)}),[t]),a=i((()=>{n.current="",window.clearTimeout(r.current)}),[]);return s((()=>()=>window.clearTimeout(r.current)),[]),[n,o,a]}function zs(e,t,n){const r=t.length>1&&Array.from(t).every((e=>e===t[0]))?t[0]:t,o=n?e.indexOf(n):-1;let a=(i=e,l=Math.max(o,0),i.map(((e,t)=>i[(l+t)%i.length])));var i,l;1===r.length&&(a=a.filter((e=>e!==n)));const c=a.find((e=>e.textValue.toLowerCase().startsWith(r.toLowerCase())));return c!==n?c:void 0}Bs.displayName="BubbleSelect";const Ws=e=>{const{__scopeSelect:t,children:n,open:r,defaultOpen:a,onOpenChange:l,value:s,defaultValue:d,onValueChange:p,dir:f,name:m,autoComplete:v,disabled:h,required:g}=e,y=ds(t),[w,b]=u(null),[_,E]=u(null),[x,O]=u(!1),C=Cl(f),[k=!1,A]=I({prop:r,defaultProp:a,onChange:l}),[D,P]=I({prop:s,defaultProp:d,onChange:p}),T=c(null),S=!w||Boolean(w.closest("form")),[L,N]=u(new Set),j=Array.from(L).map((e=>e.props.value)).join(";");return o(Li,y,o(ps,{required:g,scope:t,trigger:w,onTriggerChange:b,valueNode:_,onValueNodeChange:E,valueNodeHasChildren:x,onValueNodeHasChildrenChange:O,contentId:M(),value:D,onValueChange:P,open:k,onOpenChange:A,dir:C,triggerPointerDownPosRef:T,disabled:h},o(is.Provider,{scope:t},o(ms,{scope:e.__scopeSelect,onNativeOptionAdd:i((e=>{N((t=>new Set(t).add(e)))}),[]),onNativeOptionRemove:i((e=>{N((t=>{const n=new Set(t);return n.delete(e),n}))}),[])},n)),S?o(Bs,{key:j,"aria-hidden":!0,required:g,tabIndex:-1,name:m,autoComplete:v,value:D,onChange:e=>P(e.target.value),disabled:h},void 0===D?o("option",{value:""}):null,Array.from(L)):null))},Ks=hs,qs=gs,Gs=ys,$s=bs,Xs=Ts,Ys=Ls,Js=js,Qs=Hs,eu=Fs;var tu="Select-modules_trigger__dS9Dx",nu="Select-modules_icon__sgRRc",ru="Select-modules_startIcon__kohMV",ou="Select-modules_value__h6Q4Z",au="Select-modules_content__YuAqS",iu="Select-modules_item__cTAIm",lu=t.forwardRef((function(e,n){var r=e.children,o=e.sideOffset,a=void 0===o?4:o,i=e.position,l=void 0===i?"popper":i,c=e.disabled,s=void 0!==c&&c,u=e.value,d=void 0===u?"":u,p=e.id,f=e.icon,m=void 0===f?null:f,v=e.placeholder,h=void 0===v?"":v,g=de(e,["children","sideOffset","position","disabled","value","id","icon","placeholder"]);return t.createElement(Ws,ue({value:d||void 0,disabled:s},g),t.createElement(Ks,{id:p,ref:n,className:tu},m&&t.createElement("span",{className:ru},m),t.createElement("span",{className:ou},t.createElement(qs,{placeholder:h})),t.createElement(Gs,{className:nu},t.createElement(jn,null))),t.createElement($s,{position:l,className:au,sideOffset:a},t.createElement(Xs,null,t.createElement(Qs,null,"ChevronUpIcon"),t.createElement(Xs,null,r),t.createElement(eu,null,"ChevronDownIcon"))))})),cu=t.forwardRef((function(e,n){var r=e.children,o=e.disabled,a=void 0!==o&&o,i=de(e,["children","disabled"]);return t.createElement(Ys,ue({},i,{ref:n,className:iu,disabled:a}),r)})),su=Js;const uu="Tabs",[du,pu]=x(uu,[Il]),fu=Il(),[mu,vu]=du(uu);function hu(e,t){return`${e}-trigger-${t}`}function gu(e,t){return`${e}-content-${t}`}const yu=d(((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:a,defaultValue:i,orientation:l="horizontal",dir:c,activationMode:s="automatic",...u}=e,d=Cl(c),[p,f]=I({prop:r,onChange:a,defaultProp:i});return o(mu,{scope:n,baseId:M(),value:p,onValueChange:f,orientation:l,dir:d,activationMode:s},o(Z.div,E({dir:d,"data-orientation":l},u,{ref:t})))})),wu=d(((e,t)=>{const{__scopeTabs:n,loop:r=!0,...a}=e,i=vu("TabsList",n),l=fu(n);return o(Vl,E({asChild:!0},l,{orientation:i.orientation,dir:i.dir,loop:r}),o(Z.div,E({role:"tablist","aria-orientation":i.orientation},a,{ref:t})))})),bu=d(((e,t)=>{const{__scopeTabs:n,value:r,disabled:a=!1,...i}=e,l=vu("TabsTrigger",n),c=fu(n),s=hu(l.baseId,r),u=gu(l.baseId,r),d=r===l.value;return o(Bl,E({asChild:!0},c,{focusable:!a,active:d}),o(Z.button,E({type:"button",role:"tab","aria-selected":d,"aria-controls":u,"data-state":d?"active":"inactive","data-disabled":a?"":void 0,disabled:a,id:s},i,{ref:t,onMouseDown:A(e.onMouseDown,(e=>{a||0!==e.button||!1!==e.ctrlKey?e.preventDefault():l.onValueChange(r)})),onKeyDown:A(e.onKeyDown,(e=>{[" ","Enter"].includes(e.key)&&l.onValueChange(r)})),onFocus:A(e.onFocus,(()=>{const e="manual"!==l.activationMode;d||a||!e||l.onValueChange(r)}))})))})),_u=d(((e,t)=>{const{__scopeTabs:n,value:r,forceMount:a,children:i,...l}=e,u=vu("TabsContent",n),d=hu(u.baseId,r),p=gu(u.baseId,r),f=r===u.value,m=c(f);return s((()=>{const e=requestAnimationFrame((()=>m.current=!1));return()=>cancelAnimationFrame(e)}),[]),o(ae,{present:a||f},(({present:n})=>o(Z.div,E({"data-state":f?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":d,hidden:!n,id:p,tabIndex:0},l,{ref:t,style:{...e.style,animationDuration:m.current?"0s":void 0}}),n&&i)))}));var Eu="Tabs-modules_root__TvYE1",xu="Tabs-modules_list__G3KVd",Ou="Tabs-modules_tab__-FuG6",Cu="Tabs-modules_content__X0OLh";function ku(e){var n,r=e.children,o=e.className,a=void 0===o?"":o,i=de(e,["children","className"]);return t.createElement(yu,ue({},i,{className:Qt(Eu,"demio-ui-tabs",(n={},n[a]=a,n))}),r)}function Au(e){var n,r=e.children,o=e.className,a=void 0===o?"":o;return t.createElement(wu,{className:Qt(xu,"demio-ui-tabs-list",(n={},n[a]=a,n))},r)}function Du(e){var n,r=e.children,o=e.className,a=void 0===o?"":o,i=de(e,["children","className"]);return t.createElement(bu,ue({},i,{className:Qt(Ou,(n={},n[a]=a,n))}),r)}function Pu(e){var n,r=e.children,o=e.value,a=e.className,i=void 0===a?"":a;return t.createElement(_u,{value:o,className:Qt(Cu,"demio-ui-tabs-tab",(n={},n[i]=i,n))},r)}export{cn as Alert,ln as Button,Uo as Checkbox,Wo as FormGroup,$o as Input,Go as InputHint,Bo as Label,an as Loader,ra as Modal,al as Popover,El as Progress,uc as RadioGroup,lu as Select,cu as SelectItem,su as SelectItemText,xc as Switch,Du as Tab,Pu as TabsContent,Au as TabsList,ku as TabsRoot,ts as Tooltip,Ho as icons};
|
|
7
7
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb250ZXh0L2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnMvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3ByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3QvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWlkL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1zbG90L2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1wcmltaXRpdmUvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpc21pc3NhYmxlLWxheWVyL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtZXNjYXBlLWtleWRvd24vZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWZvY3VzLXNjb3BlL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1wb3J0YWwvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1mb2N1cy1ndWFyZHMvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2Rpc3QvZXMyMDE1L2NvbnN0YW50cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2UtY2FsbGJhY2stcmVmL2Rpc3QvZXMyMDE1L3VzZU1lcmdlUmVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvdXNlUmVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1jYWxsYmFjay1yZWYvZGlzdC9lczIwMTUvYXNzaWduUmVmLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3VzZS1zaWRlY2FyL2Rpc3QvZXMyMDE1L21lZGl1bS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2Utc2lkZWNhci9kaXN0L2VzMjAxNS9leHBvcnRzLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvbWVkaXVtLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvVUkuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L3NpbmdsZXRvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9nZXQtbm9uY2UvZGlzdC9lczIwMTUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L2NvbXBvbmVudC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1zdHlsZS1zaW5nbGV0b24vZGlzdC9lczIwMTUvaG9vay5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsLWJhci9kaXN0L2VzMjAxNS91dGlscy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsLWJhci9kaXN0L2VzMjAxNS9jb21wb25lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9hZ2dyZXNpdmVDYXB0dXJlLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvaGFuZGxlU2Nyb2xsLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvU2lkZUVmZmVjdC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L3NpZGVjYXIuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9Db21iaW5hdGlvbi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9hcmlhLWhpZGRlbi9kaXN0L2VzMjAxNS9pbmRleC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZGlhbG9nL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1hbGVydC1kaWFsb2cvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyIsIi4uLy4uL3NyYy9pY29ucy9jbG9zZS5zdmciLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Mb2FkZXIvTG9hZGVyLnRzeCIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24udHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvQWxlcnQvQWxlcnQudHN4IiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtcHJldmlvdXMvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jaGVja2JveC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL3NyYy9pY29ucy9hZGQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2tleWJvYXJkX2Fycm93X2Rvd24uc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2Fycm93LWxlZnQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2Jsb2NrLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9ibHVyX29uLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9jYWNoZWQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2NhbGVuZGFyLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9jaGVja2JveC5zdmciLCIuLi8uLi9zcmMvaWNvbnMvY2hlY2tib3hfdW5jaGVjay5zdmciLCIuLi8uLi9zcmMvaWNvbnMvY2hlY2tfY2lyY2xlLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9jbG9jay5zdmciLCIuLi8uLi9zcmMvaWNvbnMvY3VzdG9taXplLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9kZWxldGUuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2V2ZW50X2RldGFpbHMuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2V2ZW50X3JlcGVhdC5zdmciLCIuLi8uLi9zcmMvaWNvbnMvaW5mby5zdmciLCIuLi8uLi9zcmMvaWNvbnMvaW5mby0xLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9tYWdpYy5zdmciLCIuLi8uLi9zcmMvaWNvbnMvbWF0ZXJpYWxzLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9taWNfb2ZmLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL21pY19vZmYuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL21pYy5zdmciLCIuLi8uLi9zcmMvaWNvbnMvbWljLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3Bhc3N3b3JkX2V5ZS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvcGFzc3dvcmRfZXllX2Nyb3NzZWQuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3BsYXkuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3NtaWxlLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9zdGFja2VkX2VtYWlsLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy90b2RheS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdmlkZW9jYW1fb2ZmLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy92aWRlb2NhbV9vZmYtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdmlkZW9jYW0uc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZpZGVvY2FtLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV9vZmYtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdm9sdW1lX29mZi5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdm9sdW1lX3VwLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV91cC5zdmciLCIuLi8uLi9zcmMvaWNvbnMvd2FybmluZy0xLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy93YXJuaW5nLnN2ZyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtbGFiZWwvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9MYWJlbC9MYWJlbC50c3giLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9DaGVja2JveC9DaGVja2JveC50c3giLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Gb3JtR3JvdXAvRm9ybUdyb3VwLnRzeCIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0lucHV0SGludC9JbnB1dEhpbnQudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvSW5wdXQvSW5wdXQudHN4IiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvTW9kYWwvTW9kYWwudHN4IiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BmbG9hdGluZy11aS9jb3JlL2Rpc3QvZmxvYXRpbmctdWkuY29yZS5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2RvbS9kaXN0L2Zsb2F0aW5nLXVpLmRvbS5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL3JlYWN0LWRvbS9kaXN0L2Zsb2F0aW5nLXVpLnJlYWN0LWRvbS5lc20uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWFycm93L2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1wb3BwZXIvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXBvcG92ZXIvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Qb3BvdmVyL1BvcG92ZXIudHN4IiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1wcm9ncmVzcy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1Byb2dyZXNzL1Byb2dyZXNzLnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY29sbGVjdGlvbi9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZGlyZWN0aW9uL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1yb3ZpbmctZm9jdXMvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXJhZGlvLWdyb3VwL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvUmFkaW9Hcm91cC9SYWRpb0dyb3VwLnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtc3dpdGNoL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU3dpdGNoL1N3aXRjaC50c3giLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXZpc3VhbGx5LWhpZGRlbi9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdG9vbHRpcC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1Rvb2x0aXAvVG9vbHRpcC50c3giLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL251bWJlci9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtc2VsZWN0L2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2VsZWN0L1NlbGVjdC50c3giLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXRhYnMvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UYWJzL1RhYnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufSIsImltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAkM2JrQUskY3JlYXRlQ29udGV4dCwgdXNlTWVtbyBhcyAkM2JrQUskdXNlTWVtbywgY3JlYXRlRWxlbWVudCBhcyAkM2JrQUskY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCBhcyAkM2JrQUskdXNlQ29udGV4dH0gZnJvbSBcInJlYWN0XCI7XG5cblxuZnVuY3Rpb24gJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkocm9vdENvbXBvbmVudE5hbWUsIGRlZmF1bHRDb250ZXh0KSB7XG4gICAgY29uc3QgQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHQpO1xuICAgIGZ1bmN0aW9uIFByb3ZpZGVyKHByb3BzKSB7XG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uY29udGV4dCB9ID0gcHJvcHM7IC8vIE9ubHkgcmUtbWVtb2l6ZSB3aGVuIHByb3AgdmFsdWVzIGNoYW5nZVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIGNvbnN0IHZhbHVlID0gJDNia0FLJHVzZU1lbW8oKCk9PmNvbnRleHRcbiAgICAgICAgLCBPYmplY3QudmFsdWVzKGNvbnRleHQpKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdXNlQ29udGV4dChjb25zdW1lck5hbWUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICBpZiAoY29udGV4dCkgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIGlmIChkZWZhdWx0Q29udGV4dCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZGVmYXVsdENvbnRleHQ7IC8vIGlmIGEgZGVmYXVsdENvbnRleHQgd2Fzbid0IHNwZWNpZmllZCwgaXQncyBhIHJlcXVpcmVkIGNvbnRleHQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICB9XG4gICAgUHJvdmlkZXIuZGlzcGxheU5hbWUgPSByb290Q29tcG9uZW50TmFtZSArICdQcm92aWRlcic7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgUHJvdmlkZXIsXG4gICAgICAgIHVzZUNvbnRleHRcbiAgICBdO1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogY3JlYXRlQ29udGV4dFNjb3BlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRjNTEyYzI3YWIwMmVmODk1JGV4cG9ydCQ1MGM3YjRlOWQ5ZjE5YzEoc2NvcGVOYW1lLCBjcmVhdGVDb250ZXh0U2NvcGVEZXBzID0gW10pIHtcbiAgICBsZXQgZGVmYXVsdENvbnRleHRzID0gW107XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogY3JlYXRlQ29udGV4dFxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOShyb290Q29tcG9uZW50TmFtZSwgZGVmYXVsdENvbnRleHQpIHtcbiAgICAgICAgY29uc3QgQmFzZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBkZWZhdWx0Q29udGV4dHMubGVuZ3RoO1xuICAgICAgICBkZWZhdWx0Q29udGV4dHMgPSBbXG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29udGV4dHMsXG4gICAgICAgICAgICBkZWZhdWx0Q29udGV4dFxuICAgICAgICBdO1xuICAgICAgICBmdW5jdGlvbiBQcm92aWRlcihwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5jb250ZXh0IH0gPSBwcm9wcztcbiAgICAgICAgICAgIGNvbnN0IENvbnRleHQgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV1baW5kZXhdKSB8fCBCYXNlQ29udGV4dDsgLy8gT25seSByZS1tZW1vaXplIHdoZW4gcHJvcCB2YWx1ZXMgY2hhbmdlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICQzYmtBSyR1c2VNZW1vKCgpPT5jb250ZXh0XG4gICAgICAgICAgICAsIE9iamVjdC52YWx1ZXMoY29udGV4dCkpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVzZUNvbnRleHQoY29uc3VtZXJOYW1lLCBzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgQ29udGV4dCA9IChzY29wZSA9PT0gbnVsbCB8fCBzY29wZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NvcGVbc2NvcGVOYW1lXVtpbmRleF0pIHx8IEJhc2VDb250ZXh0O1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGNvbnRleHQpIHJldHVybiBjb250ZXh0O1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb250ZXh0ICE9PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0Q29udGV4dDsgLy8gaWYgYSBkZWZhdWx0Q29udGV4dCB3YXNuJ3Qgc3BlY2lmaWVkLCBpdCdzIGEgcmVxdWlyZWQgY29udGV4dC5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICAgICAgfVxuICAgICAgICBQcm92aWRlci5kaXNwbGF5TmFtZSA9IHJvb3RDb21wb25lbnROYW1lICsgJ1Byb3ZpZGVyJztcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFByb3ZpZGVyLFxuICAgICAgICAgICAgdXNlQ29udGV4dFxuICAgICAgICBdO1xuICAgIH1cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBjcmVhdGVTY29wZVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBjcmVhdGVTY29wZSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlQ29udGV4dHMgPSBkZWZhdWx0Q29udGV4dHMubWFwKChkZWZhdWx0Q29udGV4dCk9PntcbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VTY29wZShzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgY29udGV4dHMgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV0pIHx8IHNjb3BlQ29udGV4dHM7XG4gICAgICAgICAgICByZXR1cm4gJDNia0FLJHVzZU1lbW8oKCk9Pih7XG4gICAgICAgICAgICAgICAgICAgIFtgX19zY29wZSR7c2NvcGVOYW1lfWBdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zY29wZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzY29wZU5hbWVdOiBjb250ZXh0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgICAgIGNvbnRleHRzXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlLnNjb3BlTmFtZSA9IHNjb3BlTmFtZTtcbiAgICByZXR1cm4gW1xuICAgICAgICAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOSxcbiAgICAgICAgJGM1MTJjMjdhYjAyZWY4OTUkdmFyJGNvbXBvc2VDb250ZXh0U2NvcGVzKGNyZWF0ZVNjb3BlLCAuLi5jcmVhdGVDb250ZXh0U2NvcGVEZXBzKVxuICAgIF07XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBjb21wb3NlQ29udGV4dFNjb3Blc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSR2YXIkY29tcG9zZUNvbnRleHRTY29wZXMoLi4uc2NvcGVzKSB7XG4gICAgY29uc3QgYmFzZVNjb3BlID0gc2NvcGVzWzBdO1xuICAgIGlmIChzY29wZXMubGVuZ3RoID09PSAxKSByZXR1cm4gYmFzZVNjb3BlO1xuICAgIGNvbnN0IGNyZWF0ZVNjb3BlMSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlSG9va3MgPSBzY29wZXMubWFwKChjcmVhdGVTY29wZSk9Pih7XG4gICAgICAgICAgICAgICAgdXNlU2NvcGU6IGNyZWF0ZVNjb3BlKCksXG4gICAgICAgICAgICAgICAgc2NvcGVOYW1lOiBjcmVhdGVTY29wZS5zY29wZU5hbWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VDb21wb3NlZFNjb3BlcyhvdmVycmlkZVNjb3Blcykge1xuICAgICAgICAgICAgY29uc3QgbmV4dFNjb3BlczEgPSBzY29wZUhvb2tzLnJlZHVjZSgobmV4dFNjb3BlcywgeyB1c2VTY29wZTogdXNlU2NvcGUgLCBzY29wZU5hbWU6IHNjb3BlTmFtZSAgfSk9PntcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgY2FsbGluZyBhIGhvb2sgaW5zaWRlIGEgY2FsbGJhY2sgd2hpY2ggUmVhY3Qgd2FybnMgYWdhaW5zdCB0byBhdm9pZCBpbmNvbnNpc3RlbnRcbiAgICAgICAgICAgICAgICAvLyByZW5kZXJzLCBob3dldmVyLCBzY29waW5nIGRvZXNuJ3QgaGF2ZSByZW5kZXIgc2lkZSBlZmZlY3RzIHNvIHdlIGlnbm9yZSB0aGUgcnVsZS5cbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAgICAgICAgICAgICBjb25zdCBzY29wZVByb3BzID0gdXNlU2NvcGUob3ZlcnJpZGVTY29wZXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY29wZSA9IHNjb3BlUHJvcHNbYF9fc2NvcGUke3Njb3BlTmFtZX1gXTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5uZXh0U2NvcGVzLFxuICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50U2NvcGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgcmV0dXJuICQzYmtBSyR1c2VNZW1vKCgpPT4oe1xuICAgICAgICAgICAgICAgICAgICBbYF9fc2NvcGUke2Jhc2VTY29wZS5zY29wZU5hbWV9YF06IG5leHRTY29wZXMxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIG5leHRTY29wZXMxXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlMS5zY29wZU5hbWUgPSBiYXNlU2NvcGUuc2NvcGVOYW1lO1xuICAgIHJldHVybiBjcmVhdGVTY29wZTE7XG59XG5cblxuXG5cbmV4cG9ydCB7JGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkgYXMgY3JlYXRlQ29udGV4dCwgJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JDUwYzdiNGU5ZDlmMTljMSBhcyBjcmVhdGVDb250ZXh0U2NvcGV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VDYWxsYmFjayBhcyAkM3ZxbXIkdXNlQ2FsbGJhY2t9IGZyb20gXCJyZWFjdFwiO1xuXG5cbi8qKlxuICogU2V0IGEgZ2l2ZW4gcmVmIHRvIGEgZ2l2ZW4gdmFsdWVcbiAqIFRoaXMgdXRpbGl0eSB0YWtlcyBjYXJlIG9mIGRpZmZlcmVudCB0eXBlcyBvZiByZWZzOiBjYWxsYmFjayByZWZzIGFuZCBSZWZPYmplY3QocylcbiAqLyBmdW5jdGlvbiAkNmVkMDQwNjg4OGY3M2ZjNCR2YXIkc2V0UmVmKHJlZiwgdmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykgcmVmKHZhbHVlKTtcbiAgICBlbHNlIGlmIChyZWYgIT09IG51bGwgJiYgcmVmICE9PSB1bmRlZmluZWQpIHJlZi5jdXJyZW50ID0gdmFsdWU7XG59XG4vKipcbiAqIEEgdXRpbGl0eSB0byBjb21wb3NlIG11bHRpcGxlIHJlZnMgdG9nZXRoZXJcbiAqIEFjY2VwdHMgY2FsbGJhY2sgcmVmcyBhbmQgUmVmT2JqZWN0KHMpXG4gKi8gZnVuY3Rpb24gJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JDQzZTQ0NmQzMmIzZDIxYWYoLi4ucmVmcykge1xuICAgIHJldHVybiAobm9kZSk9PnJlZnMuZm9yRWFjaCgocmVmKT0+JDZlZDA0MDY4ODhmNzNmYzQkdmFyJHNldFJlZihyZWYsIG5vZGUpXG4gICAgICAgIClcbiAgICA7XG59XG4vKipcbiAqIEEgY3VzdG9tIGhvb2sgdGhhdCBjb21wb3NlcyBtdWx0aXBsZSByZWZzXG4gKiBBY2NlcHRzIGNhbGxiYWNrIHJlZnMgYW5kIFJlZk9iamVjdChzKVxuICovIGZ1bmN0aW9uICQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCRjN2IyY2JlMzU1MmEwZDA1KC4uLnJlZnMpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgcmV0dXJuICQzdnFtciR1c2VDYWxsYmFjaygkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiguLi5yZWZzKSwgcmVmcyk7XG59XG5cblxuXG5cbmV4cG9ydCB7JDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JDQzZTQ0NmQzMmIzZDIxYWYgYXMgY29tcG9zZVJlZnMsICQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCRjN2IyY2JlMzU1MmEwZDA1IGFzIHVzZUNvbXBvc2VkUmVmc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJmdW5jdGlvbiAkZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMChvcmlnaW5hbEV2ZW50SGFuZGxlciwgb3VyRXZlbnRIYW5kbGVyLCB7IGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZDogY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID0gdHJ1ZSAgfSA9IHt9KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSBudWxsIHx8IG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSB2b2lkIDAgfHwgb3JpZ2luYWxFdmVudEhhbmRsZXIoZXZlbnQpO1xuICAgICAgICBpZiAoY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID09PSBmYWxzZSB8fCAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuIG91ckV2ZW50SGFuZGxlciA9PT0gbnVsbCB8fCBvdXJFdmVudEhhbmRsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG91ckV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgfTtcbn1cblxuXG5cblxuZXhwb3J0IHskZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMCBhcyBjb21wb3NlRXZlbnRIYW5kbGVyc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkZHhsd0gkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcblxuXG4vKipcbiAqIE9uIHRoZSBzZXJ2ZXIsIFJlYWN0IGVtaXRzIGEgd2FybmluZyB3aGVuIGNhbGxpbmcgYHVzZUxheW91dEVmZmVjdGAuXG4gKiBUaGlzIGlzIGJlY2F1c2UgbmVpdGhlciBgdXNlTGF5b3V0RWZmZWN0YCBub3IgYHVzZUVmZmVjdGAgcnVuIG9uIHRoZSBzZXJ2ZXIuXG4gKiBXZSB1c2UgdGhpcyBzYWZlIHZlcnNpb24gd2hpY2ggc3VwcHJlc3NlcyB0aGUgd2FybmluZyBieSByZXBsYWNpbmcgaXQgd2l0aCBhIG5vb3Agb24gdGhlIHNlcnZlci5cbiAqXG4gKiBTZWU6IGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9ob29rcy1yZWZlcmVuY2UuaHRtbCN1c2VsYXlvdXRlZmZlY3RcbiAqLyBjb25zdCAkOWY3OTY1OTg4Njk0NmMxNiRleHBvcnQkZTVjNWE1ZjkxN2E1ODcxYyA9IEJvb2xlYW4oZ2xvYmFsVGhpcyA9PT0gbnVsbCB8fCBnbG9iYWxUaGlzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBnbG9iYWxUaGlzLmRvY3VtZW50KSA/ICRkeGx3SCR1c2VMYXlvdXRFZmZlY3QgOiAoKT0+e307XG5cblxuXG5cbmV4cG9ydCB7JDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMgYXMgdXNlTGF5b3V0RWZmZWN0fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAqIGFzICQyQU9EeCRyZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlTGF5b3V0RWZmZWN0IGFzICQyQU9EeCR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcblxuXG5cbmNvbnN0ICQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkID0gJDJBT0R4JHJlYWN0Wyd1c2VJZCcudG9TdHJpbmcoKV0gfHwgKCgpPT51bmRlZmluZWRcbik7XG5sZXQgJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50ID0gMDtcbmZ1bmN0aW9uICQxNzQ2YTM0NWYzZDczYmI3JGV4cG9ydCRmNjgwODc3YTM0NzExZTM3KGRldGVybWluaXN0aWNJZCkge1xuICAgIGNvbnN0IFtpZCwgc2V0SWRdID0gJDJBT0R4JHJlYWN0LnVzZVN0YXRlKCQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkKCkpOyAvLyBSZWFjdCB2ZXJzaW9ucyBvbGRlciB0aGFuIDE4IHdpbGwgaGF2ZSBjbGllbnQtc2lkZSBpZHMgb25seS5cbiAgICAkMkFPRHgkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmICghZGV0ZXJtaW5pc3RpY0lkKSBzZXRJZCgocmVhY3RJZCk9PnJlYWN0SWQgIT09IG51bGwgJiYgcmVhY3RJZCAhPT0gdm9pZCAwID8gcmVhY3RJZCA6IFN0cmluZygkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkY291bnQrKylcbiAgICAgICAgKTtcbiAgICB9LCBbXG4gICAgICAgIGRldGVybWluaXN0aWNJZFxuICAgIF0pO1xuICAgIHJldHVybiBkZXRlcm1pbmlzdGljSWQgfHwgKGlkID8gYHJhZGl4LSR7aWR9YCA6ICcnKTtcbn1cblxuXG5cblxuZXhwb3J0IHskMTc0NmEzNDVmM2Q3M2JiNyRleHBvcnQkZjY4MDg3N2EzNDcxMWUzNyBhcyB1c2VJZH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZVJlZiBhcyAkbHdpV2okdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGx3aVdqJHVzZUVmZmVjdCwgdXNlTWVtbyBhcyAkbHdpV2okdXNlTWVtb30gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBBIGN1c3RvbSBob29rIHRoYXQgY29udmVydHMgYSBjYWxsYmFjayB0byBhIHJlZiB0byBhdm9pZCB0cmlnZ2VyaW5nIHJlLXJlbmRlcnMgd2hlbiBwYXNzZWQgYXMgYVxuICogcHJvcCBvciBhdm9pZCByZS1leGVjdXRpbmcgZWZmZWN0cyB3aGVuIHBhc3NlZCBhcyBhIGRlcGVuZGVuY3lcbiAqLyBmdW5jdGlvbiAkYjFiMjMxNGY1ZjlhMWQ4NCRleHBvcnQkMjViZWM4YzZmNTRlZTc5YShjYWxsYmFjaykge1xuICAgIGNvbnN0IGNhbGxiYWNrUmVmID0gJGx3aVdqJHVzZVJlZihjYWxsYmFjayk7XG4gICAgJGx3aVdqJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjYWxsYmFja1JlZi5jdXJyZW50ID0gY2FsbGJhY2s7XG4gICAgfSk7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTkyNDBcbiAgICByZXR1cm4gJGx3aVdqJHVzZU1lbW8oKCk9PiguLi5hcmdzKT0+e1xuICAgICAgICAgICAgdmFyIF9jYWxsYmFja1JlZiRjdXJyZW50O1xuICAgICAgICAgICAgcmV0dXJuIChfY2FsbGJhY2tSZWYkY3VycmVudCA9IGNhbGxiYWNrUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jYWxsYmFja1JlZiRjdXJyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY2FsbGJhY2tSZWYkY3VycmVudC5jYWxsKGNhbGxiYWNrUmVmLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICwgW10pO1xufVxuXG5cblxuXG5leHBvcnQgeyRiMWIyMzE0ZjVmOWExZDg0JGV4cG9ydCQyNWJlYzhjNmY1NGVlNzlhIGFzIHVzZUNhbGxiYWNrUmVmfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7dXNlQ2FsbGJhY2sgYXMgJGJuUHc5JHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSBhcyAkYm5QdzkkdXNlU3RhdGUsIHVzZVJlZiBhcyAkYm5QdzkkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGJuUHc5JHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICRiblB3OSR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5cblxuXG5mdW5jdGlvbiAkNzFjZDc2Y2M2MGUwNDU0ZSRleHBvcnQkNmYzMjEzNTA4MGNiNGMzKHsgcHJvcDogcHJvcCAsIGRlZmF1bHRQcm9wOiBkZWZhdWx0UHJvcCAsIG9uQ2hhbmdlOiBvbkNoYW5nZSA9ICgpPT57fSAgfSkge1xuICAgIGNvbnN0IFt1bmNvbnRyb2xsZWRQcm9wLCBzZXRVbmNvbnRyb2xsZWRQcm9wXSA9ICQ3MWNkNzZjYzYwZTA0NTRlJHZhciR1c2VVbmNvbnRyb2xsZWRTdGF0ZSh7XG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0UHJvcCxcbiAgICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlXG4gICAgfSk7XG4gICAgY29uc3QgaXNDb250cm9sbGVkID0gcHJvcCAhPT0gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHZhbHVlMSA9IGlzQ29udHJvbGxlZCA/IHByb3AgOiB1bmNvbnRyb2xsZWRQcm9wO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICRiblB3OSR1c2VDYWxsYmFja1JlZihvbkNoYW5nZSk7XG4gICAgY29uc3Qgc2V0VmFsdWUgPSAkYm5QdzkkdXNlQ2FsbGJhY2soKG5leHRWYWx1ZSk9PntcbiAgICAgICAgaWYgKGlzQ29udHJvbGxlZCkge1xuICAgICAgICAgICAgY29uc3Qgc2V0dGVyID0gbmV4dFZhbHVlO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgbmV4dFZhbHVlID09PSAnZnVuY3Rpb24nID8gc2V0dGVyKHByb3ApIDogbmV4dFZhbHVlO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBwcm9wKSBoYW5kbGVDaGFuZ2UodmFsdWUpO1xuICAgICAgICB9IGVsc2Ugc2V0VW5jb250cm9sbGVkUHJvcChuZXh0VmFsdWUpO1xuICAgIH0sIFtcbiAgICAgICAgaXNDb250cm9sbGVkLFxuICAgICAgICBwcm9wLFxuICAgICAgICBzZXRVbmNvbnRyb2xsZWRQcm9wLFxuICAgICAgICBoYW5kbGVDaGFuZ2VcbiAgICBdKTtcbiAgICByZXR1cm4gW1xuICAgICAgICB2YWx1ZTEsXG4gICAgICAgIHNldFZhbHVlXG4gICAgXTtcbn1cbmZ1bmN0aW9uICQ3MWNkNzZjYzYwZTA0NTRlJHZhciR1c2VVbmNvbnRyb2xsZWRTdGF0ZSh7IGRlZmF1bHRQcm9wOiBkZWZhdWx0UHJvcCAsIG9uQ2hhbmdlOiBvbkNoYW5nZSAgfSkge1xuICAgIGNvbnN0IHVuY29udHJvbGxlZFN0YXRlID0gJGJuUHc5JHVzZVN0YXRlKGRlZmF1bHRQcm9wKTtcbiAgICBjb25zdCBbdmFsdWVdID0gdW5jb250cm9sbGVkU3RhdGU7XG4gICAgY29uc3QgcHJldlZhbHVlUmVmID0gJGJuUHc5JHVzZVJlZih2YWx1ZSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gJGJuUHc5JHVzZUNhbGxiYWNrUmVmKG9uQ2hhbmdlKTtcbiAgICAkYm5QdzkkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChwcmV2VmFsdWVSZWYuY3VycmVudCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIGhhbmRsZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICBwcmV2VmFsdWVSZWYuY3VycmVudCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgcHJldlZhbHVlUmVmLFxuICAgICAgICBoYW5kbGVDaGFuZ2VcbiAgICBdKTtcbiAgICByZXR1cm4gdW5jb250cm9sbGVkU3RhdGU7XG59XG5cblxuXG5cbmV4cG9ydCB7JDcxY2Q3NmNjNjBlMDQ1NGUkZXhwb3J0JDZmMzIxMzUwODBjYjRjMyBhcyB1c2VDb250cm9sbGFibGVTdGF0ZX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDlJcmpYJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDlJcmpYJGZvcndhcmRSZWYsIENoaWxkcmVuIGFzICQ5SXJqWCRDaGlsZHJlbiwgaXNWYWxpZEVsZW1lbnQgYXMgJDlJcmpYJGlzVmFsaWRFbGVtZW50LCBjcmVhdGVFbGVtZW50IGFzICQ5SXJqWCRjcmVhdGVFbGVtZW50LCBjbG9uZUVsZW1lbnQgYXMgJDlJcmpYJGNsb25lRWxlbWVudCwgRnJhZ21lbnQgYXMgJDlJcmpYJEZyYWdtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZVJlZnMgYXMgJDlJcmpYJGNvbXBvc2VSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTbG90XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCQ4YzZlZDVjNjY2YWMxMzYwID0gLyojX19QVVJFX18qLyAkOUlyalgkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IGNoaWxkcmVuOiBjaGlsZHJlbiAsIC4uLnNsb3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY2hpbGRyZW5BcnJheSA9ICQ5SXJqWCRDaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKTtcbiAgICBjb25zdCBzbG90dGFibGUgPSBjaGlsZHJlbkFycmF5LmZpbmQoJDVlNjNjOTYxZmMxY2UyMTEkdmFyJGlzU2xvdHRhYmxlKTtcbiAgICBpZiAoc2xvdHRhYmxlKSB7XG4gICAgICAgIC8vIHRoZSBuZXcgZWxlbWVudCB0byByZW5kZXIgaXMgdGhlIG9uZSBwYXNzZWQgYXMgYSBjaGlsZCBvZiBgU2xvdHRhYmxlYFxuICAgICAgICBjb25zdCBuZXdFbGVtZW50ID0gc2xvdHRhYmxlLnByb3BzLmNoaWxkcmVuO1xuICAgICAgICBjb25zdCBuZXdDaGlsZHJlbiA9IGNoaWxkcmVuQXJyYXkubWFwKChjaGlsZCk9PntcbiAgICAgICAgICAgIGlmIChjaGlsZCA9PT0gc2xvdHRhYmxlKSB7XG4gICAgICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGUgbmV3IGVsZW1lbnQgd2lsbCBiZSB0aGUgb25lIHJlbmRlcmVkLCB3ZSBhcmUgb25seSBpbnRlcmVzdGVkXG4gICAgICAgICAgICAgICAgLy8gaW4gZ3JhYmJpbmcgaXRzIGNoaWxkcmVuIChgbmV3RWxlbWVudC5wcm9wcy5jaGlsZHJlbmApXG4gICAgICAgICAgICAgICAgaWYgKCQ5SXJqWCRDaGlsZHJlbi5jb3VudChuZXdFbGVtZW50KSA+IDEpIHJldHVybiAkOUlyalgkQ2hpbGRyZW4ub25seShudWxsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkaXNWYWxpZEVsZW1lbnQobmV3RWxlbWVudCkgPyBuZXdFbGVtZW50LnByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSByZXR1cm4gY2hpbGQ7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY3JlYXRlRWxlbWVudCgkNWU2M2M5NjFmYzFjZTIxMSR2YXIkU2xvdENsb25lLCAkOUlyalgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHNsb3RQcm9wcywge1xuICAgICAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICAgICAgfSksIC8qI19fUFVSRV9fKi8gJDlJcmpYJGlzVmFsaWRFbGVtZW50KG5ld0VsZW1lbnQpID8gLyojX19QVVJFX18qLyAkOUlyalgkY2xvbmVFbGVtZW50KG5ld0VsZW1lbnQsIHVuZGVmaW5lZCwgbmV3Q2hpbGRyZW4pIDogbnVsbCk7XG4gICAgfVxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5SXJqWCRjcmVhdGVFbGVtZW50KCQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUsICQ5SXJqWCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgc2xvdFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSksIGNoaWxkcmVuKTtcbn0pO1xuJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JDhjNmVkNWM2NjZhYzEzNjAuZGlzcGxheU5hbWUgPSAnU2xvdCc7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTbG90Q2xvbmVcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVlNjNjOTYxZmMxY2UyMTEkdmFyJFNsb3RDbG9uZSA9IC8qI19fUFVSRV9fKi8gJDlJcmpYJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5zbG90UHJvcHMgfSA9IHByb3BzO1xuICAgIGlmICgvKiNfX1BVUkVfXyovICQ5SXJqWCRpc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpIHJldHVybiAvKiNfX1BVUkVfXyovICQ5SXJqWCRjbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgICAgLi4uJDVlNjNjOTYxZmMxY2UyMTEkdmFyJG1lcmdlUHJvcHMoc2xvdFByb3BzLCBjaGlsZHJlbi5wcm9wcyksXG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmID8gJDlJcmpYJGNvbXBvc2VSZWZzKGZvcndhcmRlZFJlZiwgY2hpbGRyZW4ucmVmKSA6IGNoaWxkcmVuLnJlZlxuICAgIH0pO1xuICAgIHJldHVybiAkOUlyalgkQ2hpbGRyZW4uY291bnQoY2hpbGRyZW4pID4gMSA/ICQ5SXJqWCRDaGlsZHJlbi5vbmx5KG51bGwpIDogbnVsbDtcbn0pO1xuJDVlNjNjOTYxZmMxY2UyMTEkdmFyJFNsb3RDbG9uZS5kaXNwbGF5TmFtZSA9ICdTbG90Q2xvbmUnO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xvdHRhYmxlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCRkOWYxY2NmMGJkYjA1ZDQ1ID0gKHsgY2hpbGRyZW46IGNoaWxkcmVuICB9KT0+e1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5SXJqWCRjcmVhdGVFbGVtZW50KCQ5SXJqWCRGcmFnbWVudCwgbnVsbCwgY2hpbGRyZW4pO1xufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8gZnVuY3Rpb24gJDVlNjNjOTYxZmMxY2UyMTEkdmFyJGlzU2xvdHRhYmxlKGNoaWxkKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDlJcmpYJGlzVmFsaWRFbGVtZW50KGNoaWxkKSAmJiBjaGlsZC50eXBlID09PSAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NTtcbn1cbmZ1bmN0aW9uICQ1ZTYzYzk2MWZjMWNlMjExJHZhciRtZXJnZVByb3BzKHNsb3RQcm9wcywgY2hpbGRQcm9wcykge1xuICAgIC8vIGFsbCBjaGlsZCBwcm9wcyBzaG91bGQgb3ZlcnJpZGVcbiAgICBjb25zdCBvdmVycmlkZVByb3BzID0ge1xuICAgICAgICAuLi5jaGlsZFByb3BzXG4gICAgfTtcbiAgICBmb3IoY29uc3QgcHJvcE5hbWUgaW4gY2hpbGRQcm9wcyl7XG4gICAgICAgIGNvbnN0IHNsb3RQcm9wVmFsdWUgPSBzbG90UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICBjb25zdCBjaGlsZFByb3BWYWx1ZSA9IGNoaWxkUHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICBjb25zdCBpc0hhbmRsZXIgPSAvXm9uW0EtWl0vLnRlc3QocHJvcE5hbWUpO1xuICAgICAgICBpZiAoaXNIYW5kbGVyKSB7XG4gICAgICAgICAgICAvLyBpZiB0aGUgaGFuZGxlciBleGlzdHMgb24gYm90aCwgd2UgY29tcG9zZSB0aGVtXG4gICAgICAgICAgICBpZiAoc2xvdFByb3BWYWx1ZSAmJiBjaGlsZFByb3BWYWx1ZSkgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSAoLi4uYXJncyk9PntcbiAgICAgICAgICAgICAgICBjaGlsZFByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICBzbG90UHJvcFZhbHVlKC4uLmFyZ3MpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNsb3RQcm9wVmFsdWUpIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gc2xvdFByb3BWYWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wTmFtZSA9PT0gJ3N0eWxlJykgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSB7XG4gICAgICAgICAgICAuLi5zbG90UHJvcFZhbHVlLFxuICAgICAgICAgICAgLi4uY2hpbGRQcm9wVmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgZWxzZSBpZiAocHJvcE5hbWUgPT09ICdjbGFzc05hbWUnKSBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IFtcbiAgICAgICAgICAgIHNsb3RQcm9wVmFsdWUsXG4gICAgICAgICAgICBjaGlsZFByb3BWYWx1ZVxuICAgICAgICBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLnNsb3RQcm9wcyxcbiAgICAgICAgLi4ub3ZlcnJpZGVQcm9wc1xuICAgIH07XG59XG5jb25zdCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCQ4YzZlZDVjNjY2YWMxMzYwO1xuXG5cblxuXG5leHBvcnQgeyQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCQ4YzZlZDVjNjY2YWMxMzYwIGFzIFNsb3QsICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCRkOWYxY2NmMGJkYjA1ZDQ1IGFzIFNsb3R0YWJsZSwgJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDRxNUZxJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDRxNUZxJGZvcndhcmRSZWYsIHVzZUVmZmVjdCBhcyAkNHE1RnEkdXNlRWZmZWN0LCBjcmVhdGVFbGVtZW50IGFzICQ0cTVGcSRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Zmx1c2hTeW5jIGFzICQ0cTVGcSRmbHVzaFN5bmN9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7U2xvdCBhcyAkNHE1RnEkU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5cblxuXG5cblxuY29uc3QgJDg5MjdmNmYyYWNjNGYzODYkdmFyJE5PREVTID0gW1xuICAgICdhJyxcbiAgICAnYnV0dG9uJyxcbiAgICAnZGl2JyxcbiAgICAnZm9ybScsXG4gICAgJ2gyJyxcbiAgICAnaDMnLFxuICAgICdpbWcnLFxuICAgICdpbnB1dCcsXG4gICAgJ2xhYmVsJyxcbiAgICAnbGknLFxuICAgICduYXYnLFxuICAgICdvbCcsXG4gICAgJ3AnLFxuICAgICdzcGFuJyxcbiAgICAnc3ZnJyxcbiAgICAndWwnXG5dOyAvLyBUZW1wb3Jhcnkgd2hpbGUgd2UgYXdhaXQgbWVyZ2Ugb2YgdGhpcyBmaXg6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZC9wdWxsLzU1Mzk2XG4vLyBwcmV0dGllci1pZ25vcmVcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByaW1pdGl2ZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkMjUwZmZhNjNjZGMwZDAzNCA9ICQ4OTI3ZjZmMmFjYzRmMzg2JHZhciROT0RFUy5yZWR1Y2UoKHByaW1pdGl2ZSwgbm9kZSk9PntcbiAgICBjb25zdCBOb2RlID0gLyojX19QVVJFX18qLyAkNHE1RnEkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICAgICAgY29uc3QgeyBhc0NoaWxkOiBhc0NoaWxkICwgLi4ucHJpbWl0aXZlUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICBjb25zdCBDb21wID0gYXNDaGlsZCA/ICQ0cTVGcSRTbG90IDogbm9kZTtcbiAgICAgICAgJDRxNUZxJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAgICAgd2luZG93W1N5bWJvbC5mb3IoJ3JhZGl4LXVpJyldID0gdHJ1ZTtcbiAgICAgICAgfSwgW10pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNHE1RnEkY3JlYXRlRWxlbWVudChDb21wLCAkNHE1RnEkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByaW1pdGl2ZVByb3BzLCB7XG4gICAgICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgICAgICB9KSk7XG4gICAgfSk7XG4gICAgTm9kZS5kaXNwbGF5TmFtZSA9IGBQcmltaXRpdmUuJHtub2RlfWA7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJpbWl0aXZlLFxuICAgICAgICBbbm9kZV06IE5vZGVcbiAgICB9O1xufSwge30pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVXRpbHNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gLyoqXG4gKiBGbHVzaCBjdXN0b20gZXZlbnQgZGlzcGF0Y2hcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yYWRpeC11aS9wcmltaXRpdmVzL3B1bGwvMTM3OFxuICpcbiAqIFJlYWN0IGJhdGNoZXMgKmFsbCogZXZlbnQgaGFuZGxlcnMgc2luY2UgdmVyc2lvbiAxOCwgdGhpcyBpbnRyb2R1Y2VzIGNlcnRhaW4gY29uc2lkZXJhdGlvbnMgd2hlbiB1c2luZyBjdXN0b20gZXZlbnQgdHlwZXMuXG4gKlxuICogSW50ZXJuYWxseSwgUmVhY3QgcHJpb3JpdGlzZXMgZXZlbnRzIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6XG4gKiAgLSBkaXNjcmV0ZVxuICogIC0gY29udGludW91c1xuICogIC0gZGVmYXVsdFxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL2E4YTQ3NDJmMWM1NDQ5M2RmMDBkYTY0OGEzZjlkMjZlM2RiOWM4YjUvcGFja2FnZXMvcmVhY3QtZG9tL3NyYy9ldmVudHMvUmVhY3RET01FdmVudExpc3RlbmVyLmpzI0wyOTQtTDM1MFxuICpcbiAqIGBkaXNjcmV0ZWAgaXMgYW4gIGltcG9ydGFudCBkaXN0aW5jdGlvbiBhcyB1cGRhdGVzIHdpdGhpbiB0aGVzZSBldmVudHMgYXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkuXG4gKiBSZWFjdCBob3dldmVyLCBpcyBub3QgYWJsZSB0byBpbmZlciB0aGUgcHJpb3JpdHkgb2YgY3VzdG9tIGV2ZW50IHR5cGVzIGR1ZSB0byBob3cgdGhleSBhcmUgZGV0ZWN0ZWQgaW50ZXJuYWxseS5cbiAqIEJlY2F1c2Ugb2YgdGhpcywgaXQncyBwb3NzaWJsZSBmb3IgdXBkYXRlcyBmcm9tIGN1c3RvbSBldmVudHMgdG8gYmUgdW5leHBlY3RlZGx5IGJhdGNoZWQgd2hlblxuICogZGlzcGF0Y2hlZCBieSBhbm90aGVyIGBkaXNjcmV0ZWAgZXZlbnQuXG4gKlxuICogSW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdXBkYXRlcyBmcm9tIGN1c3RvbSBldmVudHMgYXJlIGFwcGxpZWQgcHJlZGljdGFibHksIHdlIG5lZWQgdG8gbWFudWFsbHkgZmx1c2ggdGhlIGJhdGNoLlxuICogVGhpcyB1dGlsaXR5IHNob3VsZCBiZSB1c2VkIHdoZW4gZGlzcGF0Y2hpbmcgYSBjdXN0b20gZXZlbnQgZnJvbSB3aXRoaW4gYW5vdGhlciBgZGlzY3JldGVgIGV2ZW50LCB0aGlzIHV0aWxpdHlcbiAqIGlzIG5vdCBuZXNzZXNhcnkgd2hlbiBkaXNwYXRjaGluZyBrbm93biBldmVudCB0eXBlcywgb3IgaWYgZGlzcGF0Y2hpbmcgYSBjdXN0b20gdHlwZSBpbnNpZGUgYSBub24tZGlzY3JldGUgZXZlbnQuXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBkaXNwYXRjaGluZyBhIGtub3duIGNsaWNrIPCfkY5cbiAqIHRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCjigJhjbGlja+KAmSkpXG4gKlxuICogZGlzcGF0Y2hpbmcgYSBjdXN0b20gdHlwZSB3aXRoaW4gYSBub24tZGlzY3JldGUgZXZlbnQg8J+RjlxuICogb25TY3JvbGw9eyhldmVudCkgPT4gZXZlbnQudGFyZ2V0LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KOKAmGN1c3RvbVR5cGXigJkpKX1cbiAqXG4gKiBkaXNwYXRjaGluZyBhIGN1c3RvbSB0eXBlIHdpdGhpbiBhIGBkaXNjcmV0ZWAgZXZlbnQg8J+RjVxuICogb25Qb2ludGVyRG93bj17KGV2ZW50KSA9PiBkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQoZXZlbnQudGFyZ2V0LCBuZXcgQ3VzdG9tRXZlbnQo4oCYY3VzdG9tVHlwZeKAmSkpfVxuICpcbiAqIE5vdGU6IHRob3VnaCBSZWFjdCBjbGFzc2lmaWVzIGBmb2N1c2AsIGBmb2N1c2luYCBhbmQgYGZvY3Vzb3V0YCBldmVudHMgYXMgYGRpc2NyZXRlYCwgaXQncyAgbm90IHJlY29tbWVuZGVkIHRvIHVzZVxuICogdGhpcyB1dGlsaXR5IHdpdGggdGhlbS4gVGhpcyBpcyBiZWNhdXNlIGl0J3MgcG9zc2libGUgZm9yIHRob3NlIGhhbmRsZXJzIHRvIGJlIGNhbGxlZCBpbXBsaWNpdGx5IGR1cmluZyByZW5kZXJcbiAqIGUuZy4gd2hlbiBmb2N1cyBpcyB3aXRoaW4gYSBjb21wb25lbnQgYXMgaXQgaXMgdW5tb3VudGVkLCBvciB3aGVuIG1hbmFnaW5nIGZvY3VzIG9uIG1vdW50LlxuICovIGZ1bmN0aW9uICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQ2ZDFhMDMxN2JkZTdkZTdmKHRhcmdldCwgZXZlbnQpIHtcbiAgICBpZiAodGFyZ2V0KSAkNHE1RnEkZmx1c2hTeW5jKCgpPT50YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudClcbiAgICApO1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQyNTBmZmE2M2NkYzBkMDM0O1xuXG5cblxuXG5leHBvcnQgeyQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQyNTBmZmE2M2NkYzBkMDM0IGFzIFByaW1pdGl2ZSwgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JDZkMWEwMzE3YmRlN2RlN2YgYXMgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAka3F3cEgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAka3F3cEgkY3JlYXRlQ29udGV4dCwgZm9yd2FyZFJlZiBhcyAka3F3cEgkZm9yd2FyZFJlZiwgdXNlQ29udGV4dCBhcyAka3F3cEgkdXNlQ29udGV4dCwgdXNlU3RhdGUgYXMgJGtxd3BIJHVzZVN0YXRlLCB1c2VFZmZlY3QgYXMgJGtxd3BIJHVzZUVmZmVjdCwgY3JlYXRlRWxlbWVudCBhcyAka3F3cEgkY3JlYXRlRWxlbWVudCwgdXNlUmVmIGFzICRrcXdwSCR1c2VSZWZ9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAka3F3cEgkUHJpbWl0aXZlLCBkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQgYXMgJGtxd3BIJGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICRrcXdwSCR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICRrcXdwSCR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5pbXBvcnQge3VzZUVzY2FwZUtleWRvd24gYXMgJGtxd3BIJHVzZUVzY2FwZUtleWRvd259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWVzY2FwZS1rZXlkb3duXCI7XG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlzbWlzc2FibGVMYXllclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRElTTUlTU0FCTEVfTEFZRVJfTkFNRSA9ICdEaXNtaXNzYWJsZUxheWVyJztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRDT05URVhUX1VQREFURSA9ICdkaXNtaXNzYWJsZUxheWVyLnVwZGF0ZSc7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkUE9JTlRFUl9ET1dOX09VVFNJREUgPSAnZGlzbWlzc2FibGVMYXllci5wb2ludGVyRG93bk91dHNpZGUnO1xuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJEZPQ1VTX09VVFNJREUgPSAnZGlzbWlzc2FibGVMYXllci5mb2N1c091dHNpZGUnO1xubGV0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzO1xuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERpc21pc3NhYmxlTGF5ZXJDb250ZXh0ID0gLyojX19QVVJFX18qLyAka3F3cEgkY3JlYXRlQ29udGV4dCh7XG4gICAgbGF5ZXJzOiBuZXcgU2V0KCksXG4gICAgbGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQ6IG5ldyBTZXQoKSxcbiAgICBicmFuY2hlczogbmV3IFNldCgpXG59KTtcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCQxNzdmYjYyZmYzZWMxZjIyID0gLyojX19QVVJFX18qLyAka3F3cEgkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgICBjb25zdCB7IGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzID0gZmFsc2UgLCBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93biAsIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSAsIG9uRm9jdXNPdXRzaWRlOiBvbkZvY3VzT3V0c2lkZSAsIG9uSW50ZXJhY3RPdXRzaWRlOiBvbkludGVyYWN0T3V0c2lkZSAsIG9uRGlzbWlzczogb25EaXNtaXNzICwgLi4ubGF5ZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRrcXdwSCR1c2VDb250ZXh0KCQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCk7XG4gICAgY29uc3QgW25vZGUxLCBzZXROb2RlXSA9ICRrcXdwSCR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBvd25lckRvY3VtZW50ID0gKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlMSA9PT0gbnVsbCB8fCBub2RlMSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZTEub3duZXJEb2N1bWVudCkgIT09IG51bGwgJiYgX25vZGUkb3duZXJEb2N1bWVudCAhPT0gdm9pZCAwID8gX25vZGUkb3duZXJEb2N1bWVudCA6IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudDtcbiAgICBjb25zdCBbLCBmb3JjZV0gPSAka3F3cEgkdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRrcXdwSCR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldE5vZGUobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IGxheWVycyA9IEFycmF5LmZyb20oY29udGV4dC5sYXllcnMpO1xuICAgIGNvbnN0IFtoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZF0gPSBbXG4gICAgICAgIC4uLmNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRcbiAgICBdLnNsaWNlKC0xKTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgY29uc3QgaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRJbmRleCA9IGxheWVycy5pbmRleE9mKGhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkKTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgY29uc3QgaW5kZXggPSBub2RlMSA/IGxheWVycy5pbmRleE9mKG5vZGUxKSA6IC0xO1xuICAgIGNvbnN0IGlzQm9keVBvaW50ZXJFdmVudHNEaXNhYmxlZCA9IGNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZSA+IDA7XG4gICAgY29uc3QgaXNQb2ludGVyRXZlbnRzRW5hYmxlZCA9IGluZGV4ID49IGhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkSW5kZXg7XG4gICAgY29uc3QgcG9pbnRlckRvd25PdXRzaWRlID0gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZVBvaW50ZXJEb3duT3V0c2lkZSgoZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgY29uc3QgaXNQb2ludGVyRG93bk9uQnJhbmNoID0gW1xuICAgICAgICAgICAgLi4uY29udGV4dC5icmFuY2hlc1xuICAgICAgICBdLnNvbWUoKGJyYW5jaCk9PmJyYW5jaC5jb250YWlucyh0YXJnZXQpXG4gICAgICAgICk7XG4gICAgICAgIGlmICghaXNQb2ludGVyRXZlbnRzRW5hYmxlZCB8fCBpc1BvaW50ZXJEb3duT25CcmFuY2gpIHJldHVybjtcbiAgICAgICAgb25Qb2ludGVyRG93bk91dHNpZGUgPT09IG51bGwgfHwgb25Qb2ludGVyRG93bk91dHNpZGUgPT09IHZvaWQgMCB8fCBvblBvaW50ZXJEb3duT3V0c2lkZShldmVudCk7XG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlID09PSBudWxsIHx8IG9uSW50ZXJhY3RPdXRzaWRlID09PSB2b2lkIDAgfHwgb25JbnRlcmFjdE91dHNpZGUoZXZlbnQpO1xuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIG9uRGlzbWlzcyA9PT0gbnVsbCB8fCBvbkRpc21pc3MgPT09IHZvaWQgMCB8fCBvbkRpc21pc3MoKTtcbiAgICB9LCBvd25lckRvY3VtZW50KTtcbiAgICBjb25zdCBmb2N1c091dHNpZGUgPSAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkdXNlRm9jdXNPdXRzaWRlKChldmVudCk9PntcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICBjb25zdCBpc0ZvY3VzSW5CcmFuY2ggPSBbXG4gICAgICAgICAgICAuLi5jb250ZXh0LmJyYW5jaGVzXG4gICAgICAgIF0uc29tZSgoYnJhbmNoKT0+YnJhbmNoLmNvbnRhaW5zKHRhcmdldClcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlzRm9jdXNJbkJyYW5jaCkgcmV0dXJuO1xuICAgICAgICBvbkZvY3VzT3V0c2lkZSA9PT0gbnVsbCB8fCBvbkZvY3VzT3V0c2lkZSA9PT0gdm9pZCAwIHx8IG9uRm9jdXNPdXRzaWRlKGV2ZW50KTtcbiAgICAgICAgb25JbnRlcmFjdE91dHNpZGUgPT09IG51bGwgfHwgb25JbnRlcmFjdE91dHNpZGUgPT09IHZvaWQgMCB8fCBvbkludGVyYWN0T3V0c2lkZShldmVudCk7XG4gICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgb25EaXNtaXNzID09PSBudWxsIHx8IG9uRGlzbWlzcyA9PT0gdm9pZCAwIHx8IG9uRGlzbWlzcygpO1xuICAgIH0sIG93bmVyRG9jdW1lbnQpO1xuICAgICRrcXdwSCR1c2VFc2NhcGVLZXlkb3duKChldmVudCk9PntcbiAgICAgICAgY29uc3QgaXNIaWdoZXN0TGF5ZXIgPSBpbmRleCA9PT0gY29udGV4dC5sYXllcnMuc2l6ZSAtIDE7XG4gICAgICAgIGlmICghaXNIaWdoZXN0TGF5ZXIpIHJldHVybjtcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duID09PSBudWxsIHx8IG9uRXNjYXBlS2V5RG93biA9PT0gdm9pZCAwIHx8IG9uRXNjYXBlS2V5RG93bihldmVudCk7XG4gICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCAmJiBvbkRpc21pc3MpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBvbkRpc21pc3MoKTtcbiAgICAgICAgfVxuICAgIH0sIG93bmVyRG9jdW1lbnQpO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKCFub2RlMSkgcmV0dXJuO1xuICAgICAgICBpZiAoZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzKSB7XG4gICAgICAgICAgICBpZiAoY29udGV4dC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5zaXplID09PSAwKSB7XG4gICAgICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHMgPSBvd25lckRvY3VtZW50LmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cztcbiAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50LmJvZHkuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuYWRkKG5vZGUxKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LmxheWVycy5hZGQobm9kZTEpO1xuICAgICAgICAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUoKTtcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAoZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzICYmIGNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZSA9PT0gMSkgb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cztcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIG5vZGUxLFxuICAgICAgICBvd25lckRvY3VtZW50LFxuICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMsXG4gICAgICAgIGNvbnRleHRcbiAgICBdKTtcbiAgICAvKipcbiAgICogV2UgcHVycG9zZWZ1bGx5IHByZXZlbnQgY29tYmluaW5nIHRoaXMgZWZmZWN0IHdpdGggdGhlIGBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHNgIGVmZmVjdFxuICAgKiBiZWNhdXNlIGEgY2hhbmdlIHRvIGBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHNgIHdvdWxkIHJlbW92ZSB0aGlzIGxheWVyIGZyb20gdGhlIHN0YWNrXG4gICAqIGFuZCBhZGQgaXQgdG8gdGhlIGVuZCBhZ2FpbiBzbyB0aGUgbGF5ZXJpbmcgb3JkZXIgd291bGRuJ3QgYmUgX2NyZWF0aW9uIG9yZGVyXy5cbiAgICogV2Ugb25seSB3YW50IHRoZW0gdG8gYmUgcmVtb3ZlZCBmcm9tIGNvbnRleHQgc3RhY2tzIHdoZW4gdW5tb3VudGVkLlxuICAgKi8gJGtxd3BIJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIGlmICghbm9kZTEpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnRleHQubGF5ZXJzLmRlbGV0ZShub2RlMSk7XG4gICAgICAgICAgICBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmRlbGV0ZShub2RlMSk7XG4gICAgICAgICAgICAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUoKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIG5vZGUxLFxuICAgICAgICBjb250ZXh0XG4gICAgXSk7XG4gICAgJGtxd3BIJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBoYW5kbGVVcGRhdGUgPSAoKT0+Zm9yY2Uoe30pXG4gICAgICAgIDtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUsIGhhbmRsZVVwZGF0ZSk7XG4gICAgICAgIHJldHVybiAoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUsIGhhbmRsZVVwZGF0ZSlcbiAgICAgICAgO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAka3F3cEgkY3JlYXRlRWxlbWVudCgka3F3cEgkUHJpbWl0aXZlLmRpdiwgJGtxd3BIJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBsYXllclByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogaXNCb2R5UG9pbnRlckV2ZW50c0Rpc2FibGVkID8gaXNQb2ludGVyRXZlbnRzRW5hYmxlZCA/ICdhdXRvJyA6ICdub25lJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlXG4gICAgICAgIH0sXG4gICAgICAgIG9uRm9jdXNDYXB0dXJlOiAka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1c0NhcHR1cmUsIGZvY3VzT3V0c2lkZS5vbkZvY3VzQ2FwdHVyZSksXG4gICAgICAgIG9uQmx1ckNhcHR1cmU6ICRrcXdwSCRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkJsdXJDYXB0dXJlLCBmb2N1c091dHNpZGUub25CbHVyQ2FwdHVyZSksXG4gICAgICAgIG9uUG9pbnRlckRvd25DYXB0dXJlOiAka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Qb2ludGVyRG93bkNhcHR1cmUsIHBvaW50ZXJEb3duT3V0c2lkZS5vblBvaW50ZXJEb3duQ2FwdHVyZSlcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMiwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRElTTUlTU0FCTEVfTEFZRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaXNtaXNzYWJsZUxheWVyQnJhbmNoXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRCUkFOQ0hfTkFNRSA9ICdEaXNtaXNzYWJsZUxheWVyQnJhbmNoJztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCQ0ZDVlYjIxMDlkYjE0MjI4ID0gLyojX19QVVJFX18qLyAka3F3cEgkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJGtxd3BIJHVzZUNvbnRleHQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERpc21pc3NhYmxlTGF5ZXJDb250ZXh0KTtcbiAgICBjb25zdCByZWYgPSAka3F3cEgkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRrcXdwSCR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgbm9kZSA9IHJlZi5jdXJyZW50O1xuICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgY29udGV4dC5icmFuY2hlcy5hZGQobm9kZSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBjb250ZXh0LmJyYW5jaGVzLmRlbGV0ZShub2RlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRleHQuYnJhbmNoZXNcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAka3F3cEgkY3JlYXRlRWxlbWVudCgka3F3cEgkUHJpbWl0aXZlLmRpdiwgJGtxd3BIJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCQ0ZDVlYjIxMDlkYjE0MjI4LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRCUkFOQ0hfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIC8qKlxuICogTGlzdGVucyBmb3IgYHBvaW50ZXJkb3duYCBvdXRzaWRlIGEgcmVhY3Qgc3VidHJlZS4gV2UgdXNlIGBwb2ludGVyZG93bmAgcmF0aGVyIHRoYW4gYHBvaW50ZXJ1cGBcbiAqIHRvIG1pbWljIGxheWVyIGRpc21pc3NpbmcgYmVoYXZpb3VyIHByZXNlbnQgaW4gT1MuXG4gKiBSZXR1cm5zIHByb3BzIHRvIHBhc3MgdG8gdGhlIG5vZGUgd2Ugd2FudCB0byBjaGVjayBmb3Igb3V0c2lkZSBldmVudHMuXG4gKi8gZnVuY3Rpb24gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZVBvaW50ZXJEb3duT3V0c2lkZShvblBvaW50ZXJEb3duT3V0c2lkZSwgb3duZXJEb2N1bWVudCA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkge1xuICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSA9ICRrcXdwSCR1c2VDYWxsYmFja1JlZihvblBvaW50ZXJEb3duT3V0c2lkZSk7XG4gICAgY29uc3QgaXNQb2ludGVySW5zaWRlUmVhY3RUcmVlUmVmID0gJGtxd3BIJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tSZWYgPSAka3F3cEgkdXNlUmVmKCgpPT57fSk7XG4gICAgJGtxd3BIJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBoYW5kbGVQb2ludGVyRG93biA9IChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgJiYgIWlzUG9pbnRlckluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnREZXRhaWwgPSB7XG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2ZW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50KCkge1xuICAgICAgICAgICAgICAgICAgICAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudCgkNWNiOTJiZWY3NTc3OTYwZSR2YXIkUE9JTlRFUl9ET1dOX09VVFNJREUsIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSwgZXZlbnREZXRhaWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NyZXRlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICogT24gdG91Y2ggZGV2aWNlcywgd2UgbmVlZCB0byB3YWl0IGZvciBhIGNsaWNrIGV2ZW50IGJlY2F1c2UgYnJvd3NlcnMgaW1wbGVtZW50XG4gICAgICAgICAqIGEgfjM1MG1zIGRlbGF5IGJldHdlZW4gdGhlIHRpbWUgdGhlIHVzZXIgc3RvcHMgdG91Y2hpbmcgdGhlIGRpc3BsYXkgYW5kIHdoZW4gdGhlXG4gICAgICAgICAqIGJyb3dzZXIgZXhlY3V0cmVzIGV2ZW50cy4gV2UgbmVlZCB0byBlbnN1cmUgd2UgZG9uJ3QgcmVhY3RpdmF0ZSBwb2ludGVyLWV2ZW50cyB3aXRoaW5cbiAgICAgICAgICogdGhpcyB0aW1lZnJhbWUgb3RoZXJ3aXNlIHRoZSBicm93c2VyIG1heSBleGVjdXRlIGV2ZW50cyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gcHJldmVudGVkLlxuICAgICAgICAgKlxuICAgICAgICAgKiBBZGRpdGlvbmFsbHksIHRoaXMgYWxzbyBsZXRzIHVzIGRlYWwgYXV0b21hdGljYWxseSB3aXRoIGNhbmNlbGxhdGlvbnMgd2hlbiBhIGNsaWNrIGV2ZW50XG4gICAgICAgICAqIGlzbid0IHJhaXNlZCBiZWNhdXNlIHRoZSBwYWdlIHdhcyBjb25zaWRlcmVkIHNjcm9sbGVkL2RyYWctc2Nyb2xsZWQsIGxvbmctcHJlc3NlZCwgZXRjLlxuICAgICAgICAgKlxuICAgICAgICAgKiBUaGlzIGlzIHdoeSB3ZSBhbHNvIGNvbnRpbnVvdXNseSByZW1vdmUgdGhlIHByZXZpb3VzIGxpc3RlbmVyLCBiZWNhdXNlIHdlIGNhbm5vdCBiZVxuICAgICAgICAgKiBjZXJ0YWluIHRoYXQgaXQgd2FzIHJhaXNlZCwgYW5kIHRoZXJlZm9yZSBjbGVhbmVkLXVwLlxuICAgICAgICAgKi8gaWYgKGV2ZW50LnBvaW50ZXJUeXBlID09PSAndG91Y2gnKSB7XG4gICAgICAgICAgICAgICAgICAgIG93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCA9IGhhbmRsZUFuZERpc3BhdGNoUG9pbnRlckRvd25PdXRzaWRlRXZlbnQ7XG4gICAgICAgICAgICAgICAgICAgIG93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja1JlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbmNlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgKiBpZiB0aGlzIGhvb2sgZXhlY3V0ZXMgaW4gYSBjb21wb25lbnQgdGhhdCBtb3VudHMgdmlhIGEgYHBvaW50ZXJkb3duYCBldmVudCwgdGhlIGV2ZW50XG4gICAgICogd291bGQgYnViYmxlIHVwIHRvIHRoZSBkb2N1bWVudCBhbmQgdHJpZ2dlciBhIGBwb2ludGVyRG93bk91dHNpZGVgIGV2ZW50LiBXZSBhdm9pZFxuICAgICAqIHRoaXMgYnkgZGVsYXlpbmcgdGhlIGV2ZW50IGxpc3RlbmVyIHJlZ2lzdHJhdGlvbiBvbiB0aGUgZG9jdW1lbnQuXG4gICAgICogVGhpcyBpcyBub3QgUmVhY3Qgc3BlY2lmaWMsIGJ1dCByYXRoZXIgaG93IHRoZSBET00gd29ya3MsIGllOlxuICAgICAqIGBgYFxuICAgICAqIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsICgpID0+IHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKCdJIHdpbGwgbG9nJyk7XG4gICAgICogICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsICgpID0+IHtcbiAgICAgKiAgICAgY29uc29sZS5sb2coJ0kgd2lsbCBhbHNvIGxvZycpO1xuICAgICAqICAgfSlcbiAgICAgKiB9KTtcbiAgICAgKi8gY29uc3QgdGltZXJJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlckRvd24pO1xuICAgICAgICB9LCAwKTtcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICAgICAgb3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgICAgICAgIG93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVDbGlja1JlZi5jdXJyZW50KTtcbiAgICAgICAgfTtcbiAgICB9LCBbXG4gICAgICAgIG93bmVyRG9jdW1lbnQsXG4gICAgICAgIGhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZVxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIC8vIGVuc3VyZXMgd2UgY2hlY2sgUmVhY3QgY29tcG9uZW50IHRyZWUgKG5vdCBqdXN0IERPTSB0cmVlKVxuICAgICAgICBvblBvaW50ZXJEb3duQ2FwdHVyZTogKCk9PmlzUG9pbnRlckluc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH07XG59XG4vKipcbiAqIExpc3RlbnMgZm9yIHdoZW4gZm9jdXMgaGFwcGVucyBvdXRzaWRlIGEgcmVhY3Qgc3VidHJlZS5cbiAqIFJldHVybnMgcHJvcHMgdG8gcGFzcyB0byB0aGUgcm9vdCAobm9kZSkgb2YgdGhlIHN1YnRyZWUgd2Ugd2FudCB0byBjaGVjay5cbiAqLyBmdW5jdGlvbiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkdXNlRm9jdXNPdXRzaWRlKG9uRm9jdXNPdXRzaWRlLCBvd25lckRvY3VtZW50ID0gZ2xvYmFsVGhpcyA9PT0gbnVsbCB8fCBnbG9iYWxUaGlzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBnbG9iYWxUaGlzLmRvY3VtZW50KSB7XG4gICAgY29uc3QgaGFuZGxlRm9jdXNPdXRzaWRlID0gJGtxd3BIJHVzZUNhbGxiYWNrUmVmKG9uRm9jdXNPdXRzaWRlKTtcbiAgICBjb25zdCBpc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmID0gJGtxd3BIJHVzZVJlZihmYWxzZSk7XG4gICAgJGtxd3BIJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBoYW5kbGVGb2N1cyA9IChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgJiYgIWlzRm9jdXNJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50RGV0YWlsID0ge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJEZPQ1VTX09VVFNJREUsIGhhbmRsZUZvY3VzT3V0c2lkZSwgZXZlbnREZXRhaWwsIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzY3JldGU6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIG93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzKTtcbiAgICAgICAgcmV0dXJuICgpPT5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBoYW5kbGVGb2N1cylcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgb3duZXJEb2N1bWVudCxcbiAgICAgICAgaGFuZGxlRm9jdXNPdXRzaWRlXG4gICAgXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgb25Gb2N1c0NhcHR1cmU6ICgpPT5pc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICxcbiAgICAgICAgb25CbHVyQ2FwdHVyZTogKCk9PmlzRm9jdXNJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfTtcbn1cbmZ1bmN0aW9uICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRkaXNwYXRjaFVwZGF0ZSgpIHtcbiAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudCgkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUpO1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuZnVuY3Rpb24gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQobmFtZSwgaGFuZGxlciwgZGV0YWlsLCB7IGRpc2NyZXRlOiBkaXNjcmV0ZSAgfSkge1xuICAgIGNvbnN0IHRhcmdldCA9IGRldGFpbC5vcmlnaW5hbEV2ZW50LnRhcmdldDtcbiAgICBjb25zdCBldmVudCA9IG5ldyBDdXN0b21FdmVudChuYW1lLCB7XG4gICAgICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgICAgICBkZXRhaWw6IGRldGFpbFxuICAgIH0pO1xuICAgIGlmIChoYW5kbGVyKSB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyLCB7XG4gICAgICAgIG9uY2U6IHRydWVcbiAgICB9KTtcbiAgICBpZiAoZGlzY3JldGUpICRrcXdwSCRkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQodGFyZ2V0LCBldmVudCk7XG4gICAgZWxzZSB0YXJnZXQuZGlzcGF0Y2hFdmVudChldmVudCk7XG59XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCQxNzdmYjYyZmYzZWMxZjIyO1xuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGFlY2IyZGRjYjU1Yzk1YmUgPSAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyODtcblxuXG5cblxuZXhwb3J0IHskNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMiBhcyBEaXNtaXNzYWJsZUxheWVyLCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyOCBhcyBEaXNtaXNzYWJsZUxheWVyQnJhbmNoLCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkYWVjYjJkZGNiNTVjOTViZSBhcyBCcmFuY2h9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VFZmZlY3QgYXMgJGhQU1E1JHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICRoUFNRNSR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5cblxuXG4vKipcbiAqIExpc3RlbnMgZm9yIHdoZW4gdGhlIGVzY2FwZSBrZXkgaXMgZG93blxuICovIGZ1bmN0aW9uICRhZGRjMTZlMWJiZTU4ZmQwJGV4cG9ydCQzYTcyYTU3MjQ0ZDZlNzY1KG9uRXNjYXBlS2V5RG93blByb3AsIG93bmVyRG9jdW1lbnQgPSBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdsb2JhbFRoaXMuZG9jdW1lbnQpIHtcbiAgICBjb25zdCBvbkVzY2FwZUtleURvd24gPSAkaFBTUTUkdXNlQ2FsbGJhY2tSZWYob25Fc2NhcGVLZXlEb3duUHJvcCk7XG4gICAgJGhQU1E1JHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIG9uRXNjYXBlS2V5RG93bihldmVudCk7XG4gICAgICAgIH07XG4gICAgICAgIG93bmVyRG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pO1xuICAgICAgICByZXR1cm4gKCk9Pm93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG9uRXNjYXBlS2V5RG93bixcbiAgICAgICAgb3duZXJEb2N1bWVudFxuICAgIF0pO1xufVxuXG5cblxuXG5leHBvcnQgeyRhZGRjMTZlMWJiZTU4ZmQwJGV4cG9ydCQzYTcyYTU3MjQ0ZDZlNzY1IGFzIHVzZUVzY2FwZUtleWRvd259O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ0NVFIdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ0NVFIdiRmb3J3YXJkUmVmLCB1c2VTdGF0ZSBhcyAkNDVRSHYkdXNlU3RhdGUsIHVzZVJlZiBhcyAkNDVRSHYkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDQ1UUh2JHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2sgYXMgJDQ1UUh2JHVzZUNhbGxiYWNrLCBjcmVhdGVFbGVtZW50IGFzICQ0NVFIdiRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ0NVFIdiR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkNDVRSHYkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkNDVRSHYkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuXG5cblxuXG5cblxuY29uc3QgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9NT1VOVCA9ICdmb2N1c1Njb3BlLmF1dG9Gb2N1c09uTW91bnQnO1xuY29uc3QgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5UID0gJ2ZvY3VzU2NvcGUuYXV0b0ZvY3VzT25Vbm1vdW50JztcbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRFVkVOVF9PUFRJT05TID0ge1xuICAgIGJ1YmJsZXM6IGZhbHNlLFxuICAgIGNhbmNlbGFibGU6IHRydWVcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBGb2N1c1Njb3BlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRGT0NVU19TQ09QRV9OQU1FID0gJ0ZvY3VzU2NvcGUnO1xuY29uc3QgJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JDIwZTQwMjg5NjQxZmJiYjYgPSAvKiNfX1BVUkVfXyovICQ0NVFIdiRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgbG9vcDogbG9vcCA9IGZhbHNlICwgdHJhcHBlZDogdHJhcHBlZCA9IGZhbHNlICwgb25Nb3VudEF1dG9Gb2N1czogb25Nb3VudEF1dG9Gb2N1c1Byb3AgLCBvblVubW91bnRBdXRvRm9jdXM6IG9uVW5tb3VudEF1dG9Gb2N1c1Byb3AgLCAuLi5zY29wZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBbY29udGFpbmVyMSwgc2V0Q29udGFpbmVyXSA9ICQ0NVFIdiR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBvbk1vdW50QXV0b0ZvY3VzID0gJDQ1UUh2JHVzZUNhbGxiYWNrUmVmKG9uTW91bnRBdXRvRm9jdXNQcm9wKTtcbiAgICBjb25zdCBvblVubW91bnRBdXRvRm9jdXMgPSAkNDVRSHYkdXNlQ2FsbGJhY2tSZWYob25Vbm1vdW50QXV0b0ZvY3VzUHJvcCk7XG4gICAgY29uc3QgbGFzdEZvY3VzZWRFbGVtZW50UmVmID0gJDQ1UUh2JHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNDVRSHYkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXRDb250YWluZXIobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IGZvY3VzU2NvcGUgPSAkNDVRSHYkdXNlUmVmKHtcbiAgICAgICAgcGF1c2VkOiBmYWxzZSxcbiAgICAgICAgcGF1c2UgKCkge1xuICAgICAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICByZXN1bWUgKCkge1xuICAgICAgICAgICAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pLmN1cnJlbnQ7IC8vIFRha2VzIGNhcmUgb2YgdHJhcHBpbmcgZm9jdXMgaWYgZm9jdXMgaXMgbW92ZWQgb3V0c2lkZSBwcm9ncmFtbWF0aWNhbGx5IGZvciBleGFtcGxlXG4gICAgJDQ1UUh2JHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAodHJhcHBlZCkge1xuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlRm9jdXNJbihldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c1Njb3BlLnBhdXNlZCB8fCAhY29udGFpbmVyMSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyMS5jb250YWlucyh0YXJnZXQpKSBsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCA9IHRhcmdldDtcbiAgICAgICAgICAgICAgICBlbHNlICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCwge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzT3V0KGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGZvY3VzU2NvcGUucGF1c2VkIHx8ICFjb250YWluZXIxKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgcmVsYXRlZFRhcmdldCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7IC8vIEEgYGZvY3Vzb3V0YCBldmVudCB3aXRoIGEgYG51bGxgIGByZWxhdGVkVGFyZ2V0YCB3aWxsIGhhcHBlbiBpbiBhdCBsZWFzdCB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyAxLiBXaGVuIHRoZSB1c2VyIHN3aXRjaGVzIGFwcC90YWJzL3dpbmRvd3MvdGhlIGJyb3dzZXIgaXRzZWxmIGxvc2VzIGZvY3VzLlxuICAgICAgICAgICAgICAgIC8vIDIuIEluIEdvb2dsZSBDaHJvbWUsIHdoZW4gdGhlIGZvY3VzZWQgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIFdlIGxldCB0aGUgYnJvd3NlciBkbyBpdHMgdGhpbmcgaGVyZSBiZWNhdXNlOlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gMS4gVGhlIGJyb3dzZXIgYWxyZWFkeSBrZWVwcyBhIG1lbW9yeSBvZiB3aGF0J3MgZm9jdXNlZCBmb3Igd2hlbiB0aGUgcGFnZSBnZXRzIHJlZm9jdXNlZC5cbiAgICAgICAgICAgICAgICAvLyAyLiBJbiBHb29nbGUgQ2hyb21lLCBpZiB3ZSB0cnkgdG8gZm9jdXMgdGhlIGRlbGV0ZWQgZm9jdXNlZCBlbGVtZW50IChhcyBwZXIgYmVsb3cpLCBpdFxuICAgICAgICAgICAgICAgIC8vICAgIHRocm93cyB0aGUgQ1BVIHRvIDEwMCUsIHNvIHdlIGF2b2lkIGRvaW5nIGFueXRoaW5nIGZvciB0aGlzIHJlYXNvbiBoZXJlIHRvby5cbiAgICAgICAgICAgICAgICBpZiAocmVsYXRlZFRhcmdldCA9PT0gbnVsbCkgcmV0dXJuOyAvLyBJZiB0aGUgZm9jdXMgaGFzIG1vdmVkIHRvIGFuIGFjdHVhbCBsZWdpdGltYXRlIGVsZW1lbnQgKGByZWxhdGVkVGFyZ2V0ICE9PSBudWxsYClcbiAgICAgICAgICAgICAgICAvLyB0aGF0IGlzIG91dHNpZGUgdGhlIGNvbnRhaW5lciwgd2UgbW92ZSBmb2N1cyB0byB0aGUgbGFzdCB2YWxpZCBmb2N1c2VkIGVsZW1lbnQgaW5zaWRlLlxuICAgICAgICAgICAgICAgIGlmICghY29udGFpbmVyMS5jb250YWlucyhyZWxhdGVkVGFyZ2V0KSkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGxhc3RGb2N1c2VkRWxlbWVudFJlZi5jdXJyZW50LCB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSAvLyBXaGVuIHRoZSBmb2N1c2VkIGVsZW1lbnQgZ2V0cyByZW1vdmVkIGZyb20gdGhlIERPTSwgYnJvd3NlcnMgbW92ZSBmb2N1c1xuICAgICAgICAgICAgLy8gYmFjayB0byB0aGUgZG9jdW1lbnQuYm9keS4gSW4gdGhpcyBjYXNlLCB3ZSBtb3ZlIGZvY3VzIHRvIHRoZSBjb250YWluZXJcbiAgICAgICAgICAgIC8vIHRvIGtlZXAgZm9jdXMgdHJhcHBlZCBjb3JyZWN0bHkuXG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVNdXRhdGlvbnMobXV0YXRpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKXtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLnJlbW92ZWROb2Rlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShjb250YWluZXIxICE9PSBudWxsICYmIGNvbnRhaW5lcjEgIT09IHZvaWQgMCAmJiBjb250YWluZXIxLmNvbnRhaW5zKGZvY3VzZWRFbGVtZW50KSkpICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhjb250YWluZXIxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBoYW5kbGVGb2N1c0luKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXQpO1xuICAgICAgICAgICAgY29uc3QgbXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGhhbmRsZU11dGF0aW9ucyk7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVyMSkgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lcjEsIHtcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNvdXQnLCBoYW5kbGVGb2N1c091dCk7XG4gICAgICAgICAgICAgICAgbXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICB0cmFwcGVkLFxuICAgICAgICBjb250YWluZXIxLFxuICAgICAgICBmb2N1c1Njb3BlLnBhdXNlZFxuICAgIF0pO1xuICAgICQ0NVFIdiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRhaW5lcjEpIHtcbiAgICAgICAgICAgICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c1Njb3Blc1N0YWNrLmFkZChmb2N1c1Njb3BlKTtcbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBoYXNGb2N1c2VkQ2FuZGlkYXRlID0gY29udGFpbmVyMS5jb250YWlucyhwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCFoYXNGb2N1c2VkQ2FuZGlkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW91bnRFdmVudCA9IG5ldyBDdXN0b21FdmVudCgkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5ULCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRVZFTlRfT1BUSU9OUyk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyMS5hZGRFdmVudExpc3RlbmVyKCRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fTU9VTlQsIG9uTW91bnRBdXRvRm9jdXMpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEuZGlzcGF0Y2hFdmVudChtb3VudEV2ZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoIW1vdW50RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNGaXJzdCgkZDM4NjNjNDZhMTdlOGEyOCR2YXIkcmVtb3ZlTGlua3MoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlQ2FuZGlkYXRlcyhjb250YWluZXIxKSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGNvbnRhaW5lcjEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEucmVtb3ZlRXZlbnRMaXN0ZW5lcigkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5ULCBvbk1vdW50QXV0b0ZvY3VzKTsgLy8gV2UgaGl0IGEgcmVhY3QgYnVnIChmaXhlZCBpbiB2MTcpIHdpdGggZm9jdXNpbmcgaW4gdW5tb3VudC5cbiAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGRlbGF5IHRoZSBmb2N1cyBhIGxpdHRsZSB0byBnZXQgYXJvdW5kIGl0IGZvciBub3cuXG4gICAgICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE3ODk0XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bm1vdW50RXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5ULCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRVZFTlRfT1BUSU9OUyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEuYWRkRXZlbnRMaXN0ZW5lcigkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX1VOTU9VTlQsIG9uVW5tb3VudEF1dG9Gb2N1cyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEuZGlzcGF0Y2hFdmVudCh1bm1vdW50RXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXVubW91bnRFdmVudC5kZWZhdWx0UHJldmVudGVkKSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMocHJldmlvdXNseUZvY3VzZWRFbGVtZW50ICE9PSBudWxsICYmIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCAhPT0gdm9pZCAwID8gcHJldmlvdXNseUZvY3VzZWRFbGVtZW50IDogZG9jdW1lbnQuYm9keSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byByZW1vdmUgdGhlIGxpc3RlbmVyIGFmdGVyIHdlIGBkaXNwYXRjaEV2ZW50YFxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5ULCBvblVubW91bnRBdXRvRm9jdXMpO1xuICAgICAgICAgICAgICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNTY29wZXNTdGFjay5yZW1vdmUoZm9jdXNTY29wZSk7XG4gICAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250YWluZXIxLFxuICAgICAgICBvbk1vdW50QXV0b0ZvY3VzLFxuICAgICAgICBvblVubW91bnRBdXRvRm9jdXMsXG4gICAgICAgIGZvY3VzU2NvcGVcbiAgICBdKTsgLy8gVGFrZXMgY2FyZSBvZiBsb29waW5nIGZvY3VzICh3aGVuIHRhYmJpbmcgd2hpbHN0IGF0IHRoZSBlZGdlcylcbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gJDQ1UUh2JHVzZUNhbGxiYWNrKChldmVudCk9PntcbiAgICAgICAgaWYgKCFsb29wICYmICF0cmFwcGVkKSByZXR1cm47XG4gICAgICAgIGlmIChmb2N1c1Njb3BlLnBhdXNlZCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBpc1RhYktleSA9IGV2ZW50LmtleSA9PT0gJ1RhYicgJiYgIWV2ZW50LmFsdEtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtleTtcbiAgICAgICAgY29uc3QgZm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICBpZiAoaXNUYWJLZXkgJiYgZm9jdXNlZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgICBjb25zdCBbZmlyc3QsIGxhc3RdID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlRWRnZXMoY29udGFpbmVyKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1RhYmJhYmxlRWxlbWVudHNJbnNpZGUgPSBmaXJzdCAmJiBsYXN0OyAvLyB3ZSBjYW4gb25seSB3cmFwIGZvY3VzIGlmIHdlIGhhdmUgdGFiYmFibGUgZWRnZXNcbiAgICAgICAgICAgIGlmICghaGFzVGFiYmFibGVFbGVtZW50c0luc2lkZSkge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c2VkRWxlbWVudCA9PT0gY29udGFpbmVyKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5ICYmIGZvY3VzZWRFbGVtZW50ID09PSBsYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb29wKSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMoZmlyc3QsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmIGZvY3VzZWRFbGVtZW50ID09PSBmaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9vcCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGxhc3QsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGxvb3AsXG4gICAgICAgIHRyYXBwZWQsXG4gICAgICAgIGZvY3VzU2NvcGUucGF1c2VkXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDQ1UUh2JGNyZWF0ZUVsZW1lbnQoJDQ1UUh2JFByaW1pdGl2ZS5kaXYsICQ0NVFIdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHRhYkluZGV4OiAtMVxuICAgIH0sIHNjb3BlUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uS2V5RG93bjogaGFuZGxlS2V5RG93blxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCQyMGU0MDI4OTY0MWZiYmI2LCB7XG4gICAgZGlzcGxheU5hbWU6ICRkMzg2M2M0NmExN2U4YTI4JHZhciRGT0NVU19TQ09QRV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFV0aWxzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIC8qKlxuICogQXR0ZW1wdHMgZm9jdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYSBsaXN0IG9mIGNhbmRpZGF0ZXMuXG4gKiBTdG9wcyB3aGVuIGZvY3VzIGhhcyBhY3R1YWxseSBtb3ZlZC5cbiAqLyBmdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNGaXJzdChjYW5kaWRhdGVzLCB7IHNlbGVjdDogc2VsZWN0ID0gZmFsc2UgIH0gPSB7fSkge1xuICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgY2FuZGlkYXRlcyl7XG4gICAgICAgICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhjYW5kaWRhdGUsIHtcbiAgICAgICAgICAgIHNlbGVjdDogc2VsZWN0XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gcHJldmlvdXNseUZvY3VzZWRFbGVtZW50KSByZXR1cm47XG4gICAgfVxufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCBhbmQgbGFzdCB0YWJiYWJsZSBlbGVtZW50cyBpbnNpZGUgYSBjb250YWluZXIuXG4gKi8gZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlRWRnZXMoY29udGFpbmVyKSB7XG4gICAgY29uc3QgY2FuZGlkYXRlcyA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoY29udGFpbmVyKTtcbiAgICBjb25zdCBmaXJzdCA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRmaW5kVmlzaWJsZShjYW5kaWRhdGVzLCBjb250YWluZXIpO1xuICAgIGNvbnN0IGxhc3QgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZmluZFZpc2libGUoY2FuZGlkYXRlcy5yZXZlcnNlKCksIGNvbnRhaW5lcik7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgZmlyc3QsXG4gICAgICAgIGxhc3RcbiAgICBdO1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBwb3RlbnRpYWwgdGFiYmFibGUgY2FuZGlkYXRlcy5cbiAqXG4gKiBOT1RFOiBUaGlzIGlzIG9ubHkgYSBjbG9zZSBhcHByb3hpbWF0aW9uLiBGb3IgZXhhbXBsZSBpdCBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IGNhc2VzIGxpa2Ugd2hlblxuICogZWxlbWVudHMgYXJlIG5vdCB2aXNpYmxlLiBUaGlzIGNhbm5vdCBiZSB3b3JrZWQgb3V0IGVhc2lseSBieSBqdXN0IHJlYWRpbmcgYSBwcm9wZXJ0eSwgYnV0IHJhdGhlclxuICogbmVjZXNzaXRhdGUgcnVudGltZSBrbm93bGVkZ2UgKGNvbXB1dGVkIHN0eWxlcywgZXRjKS4gV2UgZGVhbCB3aXRoIHRoZXNlIGNhc2VzIHNlcGFyYXRlbHkuXG4gKlxuICogU2VlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVHJlZVdhbGtlclxuICogQ3JlZGl0OiBodHRwczovL2dpdGh1Yi5jb20vZGlzY29yZC9mb2N1cy1sYXllcnMvYmxvYi9tYXN0ZXIvc3JjL3V0aWwvd3JhcEZvY3VzLnRzeCNMMVxuICovIGZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoY29udGFpbmVyKSB7XG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgICBjb25zdCB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGNvbnRhaW5lciwgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsIHtcbiAgICAgICAgYWNjZXB0Tm9kZTogKG5vZGUpPT57XG4gICAgICAgICAgICBjb25zdCBpc0hpZGRlbklucHV0ID0gbm9kZS50YWdOYW1lID09PSAnSU5QVVQnICYmIG5vZGUudHlwZSA9PT0gJ2hpZGRlbic7XG4gICAgICAgICAgICBpZiAobm9kZS5kaXNhYmxlZCB8fCBub2RlLmhpZGRlbiB8fCBpc0hpZGRlbklucHV0KSByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfU0tJUDsgLy8gYC50YWJJbmRleGAgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBgdGFiaW5kZXhgIGF0dHJpYnV0ZS4gSXQgd29ya3Mgb24gdGhlXG4gICAgICAgICAgICAvLyBydW50aW1lJ3MgdW5kZXJzdGFuZGluZyBvZiB0YWJiYWJpbGl0eSwgc28gdGhpcyBhdXRvbWF0aWNhbGx5IGFjY291bnRzXG4gICAgICAgICAgICAvLyBmb3IgYW55IGtpbmQgb2YgZWxlbWVudCB0aGF0IGNvdWxkIGJlIHRhYmJlZCB0by5cbiAgICAgICAgICAgIHJldHVybiBub2RlLnRhYkluZGV4ID49IDAgPyBOb2RlRmlsdGVyLkZJTFRFUl9BQ0NFUFQgOiBOb2RlRmlsdGVyLkZJTFRFUl9TS0lQO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgd2hpbGUod2Fsa2VyLm5leHROb2RlKCkpbm9kZXMucHVzaCh3YWxrZXIuY3VycmVudE5vZGUpOyAvLyB3ZSBkbyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIG9yZGVyIG9mIG5vZGVzIHdpdGggcG9zaXRpdmUgYHRhYkluZGV4YCBhcyBpdFxuICAgIC8vIGhpbmRlcnMgYWNjZXNzaWJpbGl0eSB0byBoYXZlIHRhYiBvcmRlciBkaWZmZXJlbnQgZnJvbSB2aXN1YWwgb3JkZXIuXG4gICAgcmV0dXJuIG5vZGVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCB2aXNpYmxlIGVsZW1lbnQgaW4gYSBsaXN0LlxuICogTk9URTogT25seSBjaGVja3MgdmlzaWJpbGl0eSB1cCB0byB0aGUgYGNvbnRhaW5lcmAuXG4gKi8gZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZpbmRWaXNpYmxlKGVsZW1lbnRzLCBjb250YWluZXIpIHtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpe1xuICAgICAgICAvLyB3ZSBzdG9wIGNoZWNraW5nIGlmIGl0J3MgaGlkZGVuIGF0IHRoZSBgY29udGFpbmVyYCBsZXZlbCAoZXhjbHVkaW5nKVxuICAgICAgICBpZiAoISRkMzg2M2M0NmExN2U4YTI4JHZhciRpc0hpZGRlbihlbGVtZW50LCB7XG4gICAgICAgICAgICB1cFRvOiBjb250YWluZXJcbiAgICAgICAgfSkpIHJldHVybiBlbGVtZW50O1xuICAgIH1cbn1cbmZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRpc0hpZGRlbihub2RlLCB7IHVwVG86IHVwVG8gIH0pIHtcbiAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS52aXNpYmlsaXR5ID09PSAnaGlkZGVuJykgcmV0dXJuIHRydWU7XG4gICAgd2hpbGUobm9kZSl7XG4gICAgICAgIC8vIHdlIHN0b3AgYXQgYHVwVG9gIChleGNsdWRpbmcgaXQpXG4gICAgICAgIGlmICh1cFRvICE9PSB1bmRlZmluZWQgJiYgbm9kZSA9PT0gdXBUbykgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5kaXNwbGF5ID09PSAnbm9uZScpIHJldHVybiB0cnVlO1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnRFbGVtZW50O1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNTZWxlY3RhYmxlSW5wdXQoZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCAmJiAnc2VsZWN0JyBpbiBlbGVtZW50O1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGVsZW1lbnQsIHsgc2VsZWN0OiBzZWxlY3QgPSBmYWxzZSAgfSA9IHt9KSB7XG4gICAgLy8gb25seSBmb2N1cyBpZiB0aGF0IGVsZW1lbnQgaXMgZm9jdXNhYmxlXG4gICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5mb2N1cykge1xuICAgICAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50OyAvLyBOT1RFOiB3ZSBwcmV2ZW50IHNjcm9sbGluZyBvbiBmb2N1cywgdG8gbWluaW1pemUgamFycmluZyB0cmFuc2l0aW9ucyBmb3IgdXNlcnNcbiAgICAgICAgZWxlbWVudC5mb2N1cyh7XG4gICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgIH0pOyAvLyBvbmx5IHNlbGVjdCBpZiBpdHMgbm90IHRoZSBzYW1lIGVsZW1lbnQsIGl0IHN1cHBvcnRzIHNlbGVjdGlvbiBhbmQgd2UgbmVlZCB0byBzZWxlY3RcbiAgICAgICAgaWYgKGVsZW1lbnQgIT09IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCAmJiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNTZWxlY3RhYmxlSW5wdXQoZWxlbWVudCkgJiYgc2VsZWN0KSBlbGVtZW50LnNlbGVjdCgpO1xuICAgIH1cbn1cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEZvY3VzU2NvcGUgc3RhY2tcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzU2NvcGVzU3RhY2sgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkY3JlYXRlRm9jdXNTY29wZXNTdGFjaygpO1xuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2soKSB7XG4gICAgLyoqIEEgc3RhY2sgb2YgZm9jdXMgc2NvcGVzLCB3aXRoIHRoZSBhY3RpdmUgb25lIGF0IHRoZSB0b3AgKi8gbGV0IHN0YWNrID0gW107XG4gICAgcmV0dXJuIHtcbiAgICAgICAgYWRkIChmb2N1c1Njb3BlKSB7XG4gICAgICAgICAgICAvLyBwYXVzZSB0aGUgY3VycmVudGx5IGFjdGl2ZSBmb2N1cyBzY29wZSAoYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2spXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVGb2N1c1Njb3BlID0gc3RhY2tbMF07XG4gICAgICAgICAgICBpZiAoZm9jdXNTY29wZSAhPT0gYWN0aXZlRm9jdXNTY29wZSkgYWN0aXZlRm9jdXNTY29wZSA9PT0gbnVsbCB8fCBhY3RpdmVGb2N1c1Njb3BlID09PSB2b2lkIDAgfHwgYWN0aXZlRm9jdXNTY29wZS5wYXVzZSgpO1xuICAgICAgICAgICAgIC8vIHJlbW92ZSBpbiBjYXNlIGl0IGFscmVhZHkgZXhpc3RzIChiZWNhdXNlIHdlJ2xsIHJlLWFkZCBpdCBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjaylcbiAgICAgICAgICAgIHN0YWNrID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGFycmF5UmVtb3ZlKHN0YWNrLCBmb2N1c1Njb3BlKTtcbiAgICAgICAgICAgIHN0YWNrLnVuc2hpZnQoZm9jdXNTY29wZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZSAoZm9jdXNTY29wZSkge1xuICAgICAgICAgICAgdmFyIF9zdGFjayQ7XG4gICAgICAgICAgICBzdGFjayA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRhcnJheVJlbW92ZShzdGFjaywgZm9jdXNTY29wZSk7XG4gICAgICAgICAgICAoX3N0YWNrJCA9IHN0YWNrWzBdKSA9PT0gbnVsbCB8fCBfc3RhY2skID09PSB2b2lkIDAgfHwgX3N0YWNrJC5yZXN1bWUoKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkYXJyYXlSZW1vdmUoYXJyYXksIGl0ZW0pIHtcbiAgICBjb25zdCB1cGRhdGVkQXJyYXkgPSBbXG4gICAgICAgIC4uLmFycmF5XG4gICAgXTtcbiAgICBjb25zdCBpbmRleCA9IHVwZGF0ZWRBcnJheS5pbmRleE9mKGl0ZW0pO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHVwZGF0ZWRBcnJheS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiB1cGRhdGVkQXJyYXk7XG59XG5mdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkcmVtb3ZlTGlua3MoaXRlbXMpIHtcbiAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtKT0+aXRlbS50YWdOYW1lICE9PSAnQSdcbiAgICApO1xufVxuY29uc3QgJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNjtcblxuXG5cblxuZXhwb3J0IHskZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNiBhcyBGb2N1c1Njb3BlLCAkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkN1NYbDIkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkN1NYbDIkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkN1NYbDIkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgJDdTWGwyJHJlYWN0ZG9tIGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ3U1hsMiRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9ydGFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRmMTcwMWJlYWUwODNkYmFlJHZhciRQT1JUQUxfTkFNRSA9ICdQb3J0YWwnO1xuY29uc3QgJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAvKiNfX1BVUkVfXyovICQ3U1hsMiRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIHZhciBfZ2xvYmFsVGhpcyRkb2N1bWVudDtcbiAgICBjb25zdCB7IGNvbnRhaW5lcjogY29udGFpbmVyID0gZ2xvYmFsVGhpcyA9PT0gbnVsbCB8fCBnbG9iYWxUaGlzID09PSB2b2lkIDAgPyB2b2lkIDAgOiAoX2dsb2JhbFRoaXMkZG9jdW1lbnQgPSBnbG9iYWxUaGlzLmRvY3VtZW50KSA9PT0gbnVsbCB8fCBfZ2xvYmFsVGhpcyRkb2N1bWVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2dsb2JhbFRoaXMkZG9jdW1lbnQuYm9keSAsIC4uLnBvcnRhbFByb3BzIH0gPSBwcm9wcztcbiAgICByZXR1cm4gY29udGFpbmVyID8gLyojX19QVVJFX18qLyAkN1NYbDIkcmVhY3Rkb20uY3JlYXRlUG9ydGFsKC8qI19fUFVSRV9fKi8gJDdTWGwyJGNyZWF0ZUVsZW1lbnQoJDdTWGwyJFByaW1pdGl2ZS5kaXYsICQ3U1hsMiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9ydGFsUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSksIGNvbnRhaW5lcikgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMsIHtcbiAgICBkaXNwbGF5TmFtZTogJGYxNzAxYmVhZTA4M2RiYWUkdmFyJFBPUlRBTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYztcblxuXG5cblxuZXhwb3J0IHskZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyBhcyBQb3J0YWwsICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHtDaGlsZHJlbiBhcyAkaXFxM3IkQ2hpbGRyZW4sIGNsb25lRWxlbWVudCBhcyAkaXFxM3IkY2xvbmVFbGVtZW50LCB1c2VTdGF0ZSBhcyAkaXFxM3IkdXNlU3RhdGUsIHVzZVJlZiBhcyAkaXFxM3IkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGlxcTNyJHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2sgYXMgJGlxcTNyJHVzZUNhbGxiYWNrLCB1c2VSZWR1Y2VyIGFzICRpcXEzciR1c2VSZWR1Y2VyfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Zmx1c2hTeW5jIGFzICRpcXEzciRmbHVzaFN5bmN9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICRpcXEzciR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkaXFxM3IkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5cblxuXG5cblxuXG5mdW5jdGlvbiAkZmU5NjNiMzU1MzQ3Y2M2OCRleHBvcnQkM2U2NTQzZGUxNGY4NjE0Zihpbml0aWFsU3RhdGUsIG1hY2hpbmUpIHtcbiAgICByZXR1cm4gJGlxcTNyJHVzZVJlZHVjZXIoKHN0YXRlLCBldmVudCk9PntcbiAgICAgICAgY29uc3QgbmV4dFN0YXRlID0gbWFjaGluZVtzdGF0ZV1bZXZlbnRdO1xuICAgICAgICByZXR1cm4gbmV4dFN0YXRlICE9PSBudWxsICYmIG5leHRTdGF0ZSAhPT0gdm9pZCAwID8gbmV4dFN0YXRlIDogc3RhdGU7XG4gICAgfSwgaW5pdGlhbFN0YXRlKTtcbn1cblxuXG5jb25zdCAkOTIxYTg4OWNlZTZkZjdlOCRleHBvcnQkOTljMmI3NzlhYTRlOGI4YiA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IHByZXNlbnQ6IHByZXNlbnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gIH0gPSBwcm9wcztcbiAgICBjb25zdCBwcmVzZW5jZSA9ICQ5MjFhODg5Y2VlNmRmN2U4JHZhciR1c2VQcmVzZW5jZShwcmVzZW50KTtcbiAgICBjb25zdCBjaGlsZCA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkcmVuKHtcbiAgICAgICAgcHJlc2VudDogcHJlc2VuY2UuaXNQcmVzZW50XG4gICAgfSkgOiAkaXFxM3IkQ2hpbGRyZW4ub25seShjaGlsZHJlbik7XG4gICAgY29uc3QgcmVmID0gJGlxcTNyJHVzZUNvbXBvc2VkUmVmcyhwcmVzZW5jZS5yZWYsIGNoaWxkLnJlZik7XG4gICAgY29uc3QgZm9yY2VNb3VudCA9IHR5cGVvZiBjaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJztcbiAgICByZXR1cm4gZm9yY2VNb3VudCB8fCBwcmVzZW5jZS5pc1ByZXNlbnQgPyAvKiNfX1BVUkVfXyovICRpcXEzciRjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgICAgcmVmOiByZWZcbiAgICB9KSA6IG51bGw7XG59O1xuJDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIuZGlzcGxheU5hbWUgPSAnUHJlc2VuY2UnO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogdXNlUHJlc2VuY2VcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gZnVuY3Rpb24gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJHVzZVByZXNlbmNlKHByZXNlbnQpIHtcbiAgICBjb25zdCBbbm9kZTEsIHNldE5vZGVdID0gJGlxcTNyJHVzZVN0YXRlKCk7XG4gICAgY29uc3Qgc3R5bGVzUmVmID0gJGlxcTNyJHVzZVJlZih7fSk7XG4gICAgY29uc3QgcHJldlByZXNlbnRSZWYgPSAkaXFxM3IkdXNlUmVmKHByZXNlbnQpO1xuICAgIGNvbnN0IHByZXZBbmltYXRpb25OYW1lUmVmID0gJGlxcTNyJHVzZVJlZignbm9uZScpO1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHByZXNlbnQgPyAnbW91bnRlZCcgOiAndW5tb3VudGVkJztcbiAgICBjb25zdCBbc3RhdGUsIHNlbmRdID0gJGZlOTYzYjM1NTM0N2NjNjgkZXhwb3J0JDNlNjU0M2RlMTRmODYxNGYoaW5pdGlhbFN0YXRlLCB7XG4gICAgICAgIG1vdW50ZWQ6IHtcbiAgICAgICAgICAgIFVOTU9VTlQ6ICd1bm1vdW50ZWQnLFxuICAgICAgICAgICAgQU5JTUFUSU9OX09VVDogJ3VubW91bnRTdXNwZW5kZWQnXG4gICAgICAgIH0sXG4gICAgICAgIHVubW91bnRTdXNwZW5kZWQ6IHtcbiAgICAgICAgICAgIE1PVU5UOiAnbW91bnRlZCcsXG4gICAgICAgICAgICBBTklNQVRJT05fRU5EOiAndW5tb3VudGVkJ1xuICAgICAgICB9LFxuICAgICAgICB1bm1vdW50ZWQ6IHtcbiAgICAgICAgICAgIE1PVU5UOiAnbW91bnRlZCdcbiAgICAgICAgfVxuICAgIH0pO1xuICAgICRpcXEzciR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXNSZWYuY3VycmVudCk7XG4gICAgICAgIHByZXZBbmltYXRpb25OYW1lUmVmLmN1cnJlbnQgPSBzdGF0ZSA9PT0gJ21vdW50ZWQnID8gY3VycmVudEFuaW1hdGlvbk5hbWUgOiAnbm9uZSc7XG4gICAgfSwgW1xuICAgICAgICBzdGF0ZVxuICAgIF0pO1xuICAgICRpcXEzciR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgc3R5bGVzID0gc3R5bGVzUmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IHdhc1ByZXNlbnQgPSBwcmV2UHJlc2VudFJlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBoYXNQcmVzZW50Q2hhbmdlZCA9IHdhc1ByZXNlbnQgIT09IHByZXNlbnQ7XG4gICAgICAgIGlmIChoYXNQcmVzZW50Q2hhbmdlZCkge1xuICAgICAgICAgICAgY29uc3QgcHJldkFuaW1hdGlvbk5hbWUgPSBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXMpO1xuICAgICAgICAgICAgaWYgKHByZXNlbnQpIHNlbmQoJ01PVU5UJyk7XG4gICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50QW5pbWF0aW9uTmFtZSA9PT0gJ25vbmUnIHx8IChzdHlsZXMgPT09IG51bGwgfHwgc3R5bGVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdHlsZXMuZGlzcGxheSkgPT09ICdub25lJykgLy8gSWYgdGhlcmUgaXMgbm8gZXhpdCBhbmltYXRpb24gb3IgdGhlIGVsZW1lbnQgaXMgaGlkZGVuLCBhbmltYXRpb25zIHdvbid0IHJ1blxuICAgICAgICAgICAgLy8gc28gd2UgdW5tb3VudCBpbnN0YW50bHlcbiAgICAgICAgICAgIHNlbmQoJ1VOTU9VTlQnKTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgKiBXaGVuIGBwcmVzZW50YCBjaGFuZ2VzIHRvIGBmYWxzZWAsIHdlIGNoZWNrIGNoYW5nZXMgdG8gYW5pbWF0aW9uLW5hbWUgdG9cbiAgICAgICAgICogZGV0ZXJtaW5lIHdoZXRoZXIgYW4gYW5pbWF0aW9uIGhhcyBzdGFydGVkLiBXZSBjaG9zZSB0aGlzIGFwcHJvYWNoIChyZWFkaW5nXG4gICAgICAgICAqIGNvbXB1dGVkIHN0eWxlcykgYmVjYXVzZSB0aGVyZSBpcyBubyBgYW5pbWF0aW9ucnVuYCBldmVudCBhbmQgYGFuaW1hdGlvbnN0YXJ0YFxuICAgICAgICAgKiBmaXJlcyBhZnRlciBgYW5pbWF0aW9uLWRlbGF5YCBoYXMgZXhwaXJlZCB3aGljaCB3b3VsZCBiZSB0b28gbGF0ZS5cbiAgICAgICAgICovIGNvbnN0IGlzQW5pbWF0aW5nID0gcHJldkFuaW1hdGlvbk5hbWUgIT09IGN1cnJlbnRBbmltYXRpb25OYW1lO1xuICAgICAgICAgICAgICAgIGlmICh3YXNQcmVzZW50ICYmIGlzQW5pbWF0aW5nKSBzZW5kKCdBTklNQVRJT05fT1VUJyk7XG4gICAgICAgICAgICAgICAgZWxzZSBzZW5kKCdVTk1PVU5UJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcmV2UHJlc2VudFJlZi5jdXJyZW50ID0gcHJlc2VudDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcHJlc2VudCxcbiAgICAgICAgc2VuZFxuICAgIF0pO1xuICAgICRpcXEzciR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKG5vZGUxKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAqIFRyaWdnZXJpbmcgYW4gQU5JTUFUSU9OX09VVCBkdXJpbmcgYW4gQU5JTUFUSU9OX0lOIHdpbGwgZmlyZSBhbiBgYW5pbWF0aW9uY2FuY2VsYFxuICAgICAgICogZXZlbnQgZm9yIEFOSU1BVElPTl9JTiBhZnRlciB3ZSBoYXZlIGVudGVyZWQgYHVubW91bnRTdXNwZW5kZWRgIHN0YXRlLiBTbywgd2VcbiAgICAgICAqIG1ha2Ugc3VyZSB3ZSBvbmx5IHRyaWdnZXIgQU5JTUFUSU9OX0VORCBmb3IgdGhlIGN1cnJlbnRseSBhY3RpdmUgYW5pbWF0aW9uLlxuICAgICAgICovIGNvbnN0IGhhbmRsZUFuaW1hdGlvbkVuZCA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50QW5pbWF0aW9uTmFtZSA9ICQ5MjFhODg5Y2VlNmRmN2U4JHZhciRnZXRBbmltYXRpb25OYW1lKHN0eWxlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0N1cnJlbnRBbmltYXRpb24gPSBjdXJyZW50QW5pbWF0aW9uTmFtZS5pbmNsdWRlcyhldmVudC5hbmltYXRpb25OYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBub2RlMSAmJiBpc0N1cnJlbnRBbmltYXRpb24pIC8vIFdpdGggUmVhY3QgMTggY29uY3VycmVuY3kgdGhpcyB1cGRhdGUgaXMgYXBwbGllZFxuICAgICAgICAgICAgICAgIC8vIGEgZnJhbWUgYWZ0ZXIgdGhlIGFuaW1hdGlvbiBlbmRzLCBjcmVhdGluZyBhIGZsYXNoIG9mIHZpc2libGUgY29udGVudC5cbiAgICAgICAgICAgICAgICAvLyBCeSBtYW51YWxseSBmbHVzaGluZyB3ZSBlbnN1cmUgdGhleSBzeW5jIHdpdGhpbiBhIGZyYW1lLCByZW1vdmluZyB0aGUgZmxhc2guXG4gICAgICAgICAgICAgICAgJGlxcTNyJGZsdXNoU3luYygoKT0+c2VuZCgnQU5JTUFUSU9OX0VORCcpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVBbmltYXRpb25TdGFydCA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBub2RlMSkgLy8gaWYgYW5pbWF0aW9uIG9jY3VycmVkLCBzdG9yZSBpdHMgbmFtZSBhcyB0aGUgcHJldmlvdXMgYW5pbWF0aW9uLlxuICAgICAgICAgICAgICAgIHByZXZBbmltYXRpb25OYW1lUmVmLmN1cnJlbnQgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXNSZWYuY3VycmVudCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbm9kZTEuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uc3RhcnQnLCBoYW5kbGVBbmltYXRpb25TdGFydCk7XG4gICAgICAgICAgICBub2RlMS5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25jYW5jZWwnLCBoYW5kbGVBbmltYXRpb25FbmQpO1xuICAgICAgICAgICAgbm9kZTEuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgICAgIG5vZGUxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbnN0YXJ0JywgaGFuZGxlQW5pbWF0aW9uU3RhcnQpO1xuICAgICAgICAgICAgICAgIG5vZGUxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmNhbmNlbCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgbm9kZTEucmVtb3ZlRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uZW5kJywgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSAvLyBUcmFuc2l0aW9uIHRvIHRoZSB1bm1vdW50ZWQgc3RhdGUgaWYgdGhlIG5vZGUgaXMgcmVtb3ZlZCBwcmVtYXR1cmVseS5cbiAgICAgICAgLy8gV2UgYXZvaWQgZG9pbmcgc28gZHVyaW5nIGNsZWFudXAgYXMgdGhlIG5vZGUgbWF5IGNoYW5nZSBidXQgc3RpbGwgZXhpc3QuXG4gICAgICAgIHNlbmQoJ0FOSU1BVElPTl9FTkQnKTtcbiAgICB9LCBbXG4gICAgICAgIG5vZGUxLFxuICAgICAgICBzZW5kXG4gICAgXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaXNQcmVzZW50OiBbXG4gICAgICAgICAgICAnbW91bnRlZCcsXG4gICAgICAgICAgICAndW5tb3VudFN1c3BlbmRlZCdcbiAgICAgICAgXS5pbmNsdWRlcyhzdGF0ZSksXG4gICAgICAgIHJlZjogJGlxcTNyJHVzZUNhbGxiYWNrKChub2RlKT0+e1xuICAgICAgICAgICAgaWYgKG5vZGUpIHN0eWxlc1JlZi5jdXJyZW50ID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICAgICAgICAgIHNldE5vZGUobm9kZSk7XG4gICAgICAgIH0sIFtdKVxuICAgIH07XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICQ5MjFhODg5Y2VlNmRmN2U4JHZhciRnZXRBbmltYXRpb25OYW1lKHN0eWxlcykge1xuICAgIHJldHVybiAoc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmFuaW1hdGlvbk5hbWUpIHx8ICdub25lJztcbn1cblxuXG5cblxuZXhwb3J0IHskOTIxYTg4OWNlZTZkZjdlOCRleHBvcnQkOTljMmI3NzlhYTRlOGI4YiBhcyBQcmVzZW5jZX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUVmZmVjdCBhcyAkMXdFcnokdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcblxuXG4vKiogTnVtYmVyIG9mIGNvbXBvbmVudHMgd2hpY2ggaGF2ZSByZXF1ZXN0ZWQgaW50ZXJlc3QgdG8gaGF2ZSBmb2N1cyBndWFyZHMgKi8gbGV0ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudCA9IDA7XG5mdW5jdGlvbiAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5Yihwcm9wcykge1xuICAgICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRiN2VjZTI0YTIyYWVkYThjKCk7XG4gICAgcmV0dXJuIHByb3BzLmNoaWxkcmVuO1xufVxuLyoqXG4gKiBJbmplY3RzIGEgcGFpciBvZiBmb2N1cyBndWFyZHMgYXQgdGhlIGVkZ2VzIG9mIHRoZSB3aG9sZSBET00gdHJlZVxuICogdG8gZW5zdXJlIGBmb2N1c2luYCAmIGBmb2N1c291dGAgZXZlbnRzIGNhbiBiZSBjYXVnaHQgY29uc2lzdGVudGx5LlxuICovIGZ1bmN0aW9uICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRiN2VjZTI0YTIyYWVkYThjKCkge1xuICAgICQxd0VyeiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgdmFyIF9lZGdlR3VhcmRzJCwgX2VkZ2VHdWFyZHMkMjtcbiAgICAgICAgY29uc3QgZWRnZUd1YXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJhZGl4LWZvY3VzLWd1YXJkXScpO1xuICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJiZWdpbicsIChfZWRnZUd1YXJkcyQgPSBlZGdlR3VhcmRzWzBdKSAhPT0gbnVsbCAmJiBfZWRnZUd1YXJkcyQgIT09IHZvaWQgMCA/IF9lZGdlR3VhcmRzJCA6ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkpO1xuICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50RWxlbWVudCgnYmVmb3JlZW5kJywgKF9lZGdlR3VhcmRzJDIgPSBlZGdlR3VhcmRzWzFdKSAhPT0gbnVsbCAmJiBfZWRnZUd1YXJkcyQyICE9PSB2b2lkIDAgPyBfZWRnZUd1YXJkcyQyIDogJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNyZWF0ZUZvY3VzR3VhcmQoKSk7XG4gICAgICAgICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudCsrO1xuICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgIGlmICgkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQgPT09IDEpIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXJhZGl4LWZvY3VzLWd1YXJkXScpLmZvckVhY2goKG5vZGUpPT5ub2RlLnJlbW92ZSgpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNvdW50LS07XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xufVxuZnVuY3Rpb24gJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNyZWF0ZUZvY3VzR3VhcmQoKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1yYWRpeC1mb2N1cy1ndWFyZCcsICcnKTtcbiAgICBlbGVtZW50LnRhYkluZGV4ID0gMDtcbiAgICBlbGVtZW50LnN0eWxlLmNzc1RleHQgPSAnb3V0bGluZTogbm9uZTsgb3BhY2l0eTogMDsgcG9zaXRpb246IGZpeGVkOyBwb2ludGVyLWV2ZW50czogbm9uZSc7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG59XG5jb25zdCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRhYzViNTgwNDNiNzk0NDliO1xuXG5cblxuXG5leHBvcnQgeyQzZGIzOGI3ZDFmYjNmZTZhJGV4cG9ydCRhYzViNTgwNDNiNzk0NDliIGFzIEZvY3VzR3VhcmRzLCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YyBhcyB1c2VGb2N1c0d1YXJkc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHMsXHJcbiAgICBfX2Fzc2lnbixcclxuICAgIF9fcmVzdCxcclxuICAgIF9fZGVjb3JhdGUsXHJcbiAgICBfX3BhcmFtLFxyXG4gICAgX19tZXRhZGF0YSxcclxuICAgIF9fYXdhaXRlcixcclxuICAgIF9fZ2VuZXJhdG9yLFxyXG4gICAgX19jcmVhdGVCaW5kaW5nLFxyXG4gICAgX19leHBvcnRTdGFyLFxyXG4gICAgX192YWx1ZXMsXHJcbiAgICBfX3JlYWQsXHJcbiAgICBfX3NwcmVhZCxcclxuICAgIF9fc3ByZWFkQXJyYXlzLFxyXG4gICAgX19zcHJlYWRBcnJheSxcclxuICAgIF9fYXdhaXQsXHJcbiAgICBfX2FzeW5jR2VuZXJhdG9yLFxyXG4gICAgX19hc3luY0RlbGVnYXRvcixcclxuICAgIF9fYXN5bmNWYWx1ZXMsXHJcbiAgICBfX21ha2VUZW1wbGF0ZU9iamVjdCxcclxuICAgIF9faW1wb3J0U3RhcixcclxuICAgIF9faW1wb3J0RGVmYXVsdCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxyXG59O1xyXG4iLCJleHBvcnQgdmFyIHplcm9SaWdodENsYXNzTmFtZSA9ICdyaWdodC1zY3JvbGwtYmFyLXBvc2l0aW9uJztcbmV4cG9ydCB2YXIgZnVsbFdpZHRoQ2xhc3NOYW1lID0gJ3dpZHRoLWJlZm9yZS1zY3JvbGwtYmFyJztcbmV4cG9ydCB2YXIgbm9TY3JvbGxiYXJzQ2xhc3NOYW1lID0gJ3dpdGgtc2Nyb2xsLWJhcnMtaGlkZGVuJztcbi8qKlxuICogTmFtZSBvZiBhIENTUyB2YXJpYWJsZSBjb250YWluaW5nIHRoZSBhbW91bnQgb2YgXCJoaWRkZW5cIiBzY3JvbGxiYXJcbiAqICEgbWlnaHQgYmUgdW5kZWZpbmVkICEgdXNlIHdpbGwgZmFsbGJhY2shXG4gKi9cbmV4cG9ydCB2YXIgcmVtb3ZlZEJhclNpemVWYXJpYWJsZSA9ICctLXJlbW92ZWQtYm9keS1zY3JvbGwtYmFyLXNpemUnO1xuIiwiaW1wb3J0IHsgYXNzaWduUmVmIH0gZnJvbSAnLi9hc3NpZ25SZWYnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2tSZWYgfSBmcm9tICcuL3VzZVJlZic7XG4vKipcbiAqIE1lcmdlcyB0d28gb3IgbW9yZSByZWZzIHRvZ2V0aGVyIHByb3ZpZGluZyBhIHNpbmdsZSBpbnRlcmZhY2UgdG8gc2V0IHRoZWlyIHZhbHVlXG4gKiBAcGFyYW0ge1JlZk9iamVjdHxSZWZ9IHJlZnNcbiAqIEByZXR1cm5zIHtNdXRhYmxlUmVmT2JqZWN0fSAtIGEgbmV3IHJlZiwgd2hpY2ggdHJhbnNsYXRlcyBhbGwgY2hhbmdlcyB0byB7cmVmc31cbiAqXG4gKiBAc2VlIHtAbGluayBtZXJnZVJlZnN9IGEgdmVyc2lvbiB3aXRob3V0IGJ1aXQtaW4gbWVtb2l6YXRpb25cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3RoZUthc2hleS91c2UtY2FsbGJhY2stcmVmI3VzZW1lcmdlcmVmc1xuICogQGV4YW1wbGVcbiAqIGNvbnN0IENvbXBvbmVudCA9IFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcbiAqICAgY29uc3Qgb3duUmVmID0gdXNlUmVmKCk7XG4gKiAgIGNvbnN0IGRvbVJlZiA9IHVzZU1lcmdlUmVmcyhbcmVmLCBvd25SZWZdKTsgLy8g8J+RiCBtZXJnZSB0b2dldGhlclxuICogICByZXR1cm4gPGRpdiByZWY9e2RvbVJlZn0+Li4uPC9kaXY+XG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNZXJnZVJlZnMocmVmcywgZGVmYXVsdFZhbHVlKSB7XG4gICAgcmV0dXJuIHVzZUNhbGxiYWNrUmVmKGRlZmF1bHRWYWx1ZSB8fCBudWxsLCBmdW5jdGlvbiAobmV3VmFsdWUpIHsgcmV0dXJuIHJlZnMuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7IHJldHVybiBhc3NpZ25SZWYocmVmLCBuZXdWYWx1ZSk7IH0pOyB9KTtcbn1cbiIsImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBjcmVhdGVzIGEgTXV0YWJsZVJlZiB3aXRoIHJlZiBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSBpbml0aWFsVmFsdWUgLSBpbml0aWFsIHJlZiB2YWx1ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgLSBhIGNhbGxiYWNrIHRvIHJ1biB3aGVuIHZhbHVlIGNoYW5nZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmVmID0gdXNlQ2FsbGJhY2tSZWYoMCwgKG5ld1ZhbHVlLCBvbGRWYWx1ZSkgPT4gY29uc29sZS5sb2cob2xkVmFsdWUsICctPicsIG5ld1ZhbHVlKTtcbiAqIHJlZi5jdXJyZW50ID0gMTtcbiAqIC8vIHByaW50cyAwIC0+IDFcbiAqXG4gKiBAc2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9ob29rcy1yZWZlcmVuY2UuaHRtbCN1c2VyZWZcbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3RoZUthc2hleS91c2UtY2FsbGJhY2stcmVmI3VzZWNhbGxiYWNrcmVmLS0tdG8tcmVwbGFjZS1yZWFjdHVzZXJlZlxuICogQHJldHVybnMge011dGFibGVSZWZPYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDYWxsYmFja1JlZihpbml0aWFsVmFsdWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHJlZiA9IHVzZVN0YXRlKGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7XG4gICAgICAgIC8vIHZhbHVlXG4gICAgICAgIHZhbHVlOiBpbml0aWFsVmFsdWUsXG4gICAgICAgIC8vIGxhc3QgY2FsbGJhY2tcbiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrLFxuICAgICAgICAvLyBcIm1lbW9pemVkXCIgcHVibGljIGludGVyZmFjZVxuICAgICAgICBmYWNhZGU6IHtcbiAgICAgICAgICAgIGdldCBjdXJyZW50KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWYudmFsdWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IGN1cnJlbnQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGFzdCA9IHJlZi52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAobGFzdCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJlZi5jYWxsYmFjayh2YWx1ZSwgbGFzdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9KTsgfSlbMF07XG4gICAgLy8gdXBkYXRlIGNhbGxiYWNrXG4gICAgcmVmLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgcmV0dXJuIHJlZi5mYWNhZGU7XG59XG4iLCIvKipcbiAqIEFzc2lnbnMgYSB2YWx1ZSBmb3IgYSBnaXZlbiByZWYsIG5vIG1hdHRlciBvZiB0aGUgcmVmIGZvcm1hdFxuICogQHBhcmFtIHtSZWZPYmplY3R9IHJlZiAtIGEgY2FsbGJhY2sgZnVuY3Rpb24gb3IgcmVmIG9iamVjdFxuICogQHBhcmFtIHZhbHVlIC0gYSBuZXcgdmFsdWVcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiNhc3NpZ25yZWZcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZWZPYmplY3QgPSB1c2VSZWYoKTtcbiAqIGNvbnN0IHJlZkZuID0gKHJlZikgPT4gey4uLi59XG4gKlxuICogYXNzaWduUmVmKHJlZk9iamVjdCwgXCJyZWZWYWx1ZVwiKTtcbiAqIGFzc2lnblJlZihyZWZGbiwgXCJyZWZWYWx1ZVwiKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnblJlZihyZWYsIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVmKHZhbHVlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAocmVmKSB7XG4gICAgICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiByZWY7XG59XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuZnVuY3Rpb24gSXRvSShhKSB7XG4gICAgcmV0dXJuIGE7XG59XG5mdW5jdGlvbiBpbm5lckNyZWF0ZU1lZGl1bShkZWZhdWx0cywgbWlkZGxld2FyZSkge1xuICAgIGlmIChtaWRkbGV3YXJlID09PSB2b2lkIDApIHsgbWlkZGxld2FyZSA9IEl0b0k7IH1cbiAgICB2YXIgYnVmZmVyID0gW107XG4gICAgdmFyIGFzc2lnbmVkID0gZmFsc2U7XG4gICAgdmFyIG1lZGl1bSA9IHtcbiAgICAgICAgcmVhZDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGFzc2lnbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWRlY2FyOiBjb3VsZCBub3QgYHJlYWRgIGZyb20gYW4gYGFzc2lnbmVkYCBtZWRpdW0uIGByZWFkYCBjb3VsZCBiZSB1c2VkIG9ubHkgd2l0aCBgdXNlTWVkaXVtYC4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcltidWZmZXIubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdHM7XG4gICAgICAgIH0sXG4gICAgICAgIHVzZU1lZGl1bTogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBpdGVtID0gbWlkZGxld2FyZShkYXRhLCBhc3NpZ25lZCk7XG4gICAgICAgICAgICBidWZmZXIucHVzaChpdGVtKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gYnVmZmVyLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4geCAhPT0gaXRlbTsgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBhc3NpZ25TeW5jTWVkaXVtOiBmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgICAgIGFzc2lnbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHdoaWxlIChidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNicyA9IGJ1ZmZlcjtcbiAgICAgICAgICAgICAgICBidWZmZXIgPSBbXTtcbiAgICAgICAgICAgICAgICBjYnMuZm9yRWFjaChjYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmZXIgPSB7XG4gICAgICAgICAgICAgICAgcHVzaDogZnVuY3Rpb24gKHgpIHsgcmV0dXJuIGNiKHgpOyB9LFxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKCkgeyByZXR1cm4gYnVmZmVyOyB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgYXNzaWduTWVkaXVtOiBmdW5jdGlvbiAoY2IpIHtcbiAgICAgICAgICAgIGFzc2lnbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBwZW5kaW5nUXVldWUgPSBbXTtcbiAgICAgICAgICAgIGlmIChidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNicyA9IGJ1ZmZlcjtcbiAgICAgICAgICAgICAgICBidWZmZXIgPSBbXTtcbiAgICAgICAgICAgICAgICBjYnMuZm9yRWFjaChjYik7XG4gICAgICAgICAgICAgICAgcGVuZGluZ1F1ZXVlID0gYnVmZmVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGV4ZWN1dGVRdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2JzID0gcGVuZGluZ1F1ZXVlO1xuICAgICAgICAgICAgICAgIHBlbmRpbmdRdWV1ZSA9IFtdO1xuICAgICAgICAgICAgICAgIGNicy5mb3JFYWNoKGNiKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgY3ljbGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGV4ZWN1dGVRdWV1ZSk7IH07XG4gICAgICAgICAgICBjeWNsZSgpO1xuICAgICAgICAgICAgYnVmZmVyID0ge1xuICAgICAgICAgICAgICAgIHB1c2g6IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdRdWV1ZS5wdXNoKHgpO1xuICAgICAgICAgICAgICAgICAgICBjeWNsZSgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbiAoZmlsdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdRdWV1ZSA9IHBlbmRpbmdRdWV1ZS5maWx0ZXIoZmlsdGVyKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBtZWRpdW07XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVkaXVtKGRlZmF1bHRzLCBtaWRkbGV3YXJlKSB7XG4gICAgaWYgKG1pZGRsZXdhcmUgPT09IHZvaWQgMCkgeyBtaWRkbGV3YXJlID0gSXRvSTsgfVxuICAgIHJldHVybiBpbm5lckNyZWF0ZU1lZGl1bShkZWZhdWx0cywgbWlkZGxld2FyZSk7XG59XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNpZGVjYXJNZWRpdW0ob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIG1lZGl1bSA9IGlubmVyQ3JlYXRlTWVkaXVtKG51bGwpO1xuICAgIG1lZGl1bS5vcHRpb25zID0gX19hc3NpZ24oeyBhc3luYzogdHJ1ZSwgc3NyOiBmYWxzZSB9LCBvcHRpb25zKTtcbiAgICByZXR1cm4gbWVkaXVtO1xufVxuIiwiaW1wb3J0IHsgX19hc3NpZ24sIF9fcmVzdCB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xudmFyIFNpZGVDYXIgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgc2lkZUNhciA9IF9hLnNpZGVDYXIsIHJlc3QgPSBfX3Jlc3QoX2EsIFtcInNpZGVDYXJcIl0pO1xuICAgIGlmICghc2lkZUNhcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NpZGVjYXI6IHBsZWFzZSBwcm92aWRlIGBzaWRlQ2FyYCBwcm9wZXJ0eSB0byBpbXBvcnQgdGhlIHJpZ2h0IGNhcicpO1xuICAgIH1cbiAgICB2YXIgVGFyZ2V0ID0gc2lkZUNhci5yZWFkKCk7XG4gICAgaWYgKCFUYXJnZXQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWRlY2FyIG1lZGl1bSBub3QgZm91bmQnKTtcbiAgICB9XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVGFyZ2V0LCBfX2Fzc2lnbih7fSwgcmVzdCkpO1xufTtcblNpZGVDYXIuaXNTaWRlQ2FyRXhwb3J0ID0gdHJ1ZTtcbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRTaWRlY2FyKG1lZGl1bSwgZXhwb3J0ZWQpIHtcbiAgICBtZWRpdW0udXNlTWVkaXVtKGV4cG9ydGVkKTtcbiAgICByZXR1cm4gU2lkZUNhcjtcbn1cbiIsImltcG9ydCB7IGNyZWF0ZVNpZGVjYXJNZWRpdW0gfSBmcm9tICd1c2Utc2lkZWNhcic7XG5leHBvcnQgdmFyIGVmZmVjdENhciA9IGNyZWF0ZVNpZGVjYXJNZWRpdW0oKTtcbiIsImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGZ1bGxXaWR0aENsYXNzTmFtZSwgemVyb1JpZ2h0Q2xhc3NOYW1lIH0gZnJvbSAncmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvY29uc3RhbnRzJztcbmltcG9ydCB7IHVzZU1lcmdlUmVmcyB9IGZyb20gJ3VzZS1jYWxsYmFjay1yZWYnO1xuaW1wb3J0IHsgZWZmZWN0Q2FyIH0gZnJvbSAnLi9tZWRpdW0nO1xudmFyIG5vdGhpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuO1xufTtcbi8qKlxuICogUmVtb3ZlcyBzY3JvbGxiYXIgZnJvbSB0aGUgcGFnZSBhbmQgY29udGFpbiB0aGUgc2Nyb2xsIHdpdGhpbiB0aGUgTG9ja1xuICovXG52YXIgUmVtb3ZlU2Nyb2xsID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHBhcmVudFJlZikge1xuICAgIHZhciByZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgdmFyIF9hID0gUmVhY3QudXNlU3RhdGUoe1xuICAgICAgICBvblNjcm9sbENhcHR1cmU6IG5vdGhpbmcsXG4gICAgICAgIG9uV2hlZWxDYXB0dXJlOiBub3RoaW5nLFxuICAgICAgICBvblRvdWNoTW92ZUNhcHR1cmU6IG5vdGhpbmcsXG4gICAgfSksIGNhbGxiYWNrcyA9IF9hWzBdLCBzZXRDYWxsYmFja3MgPSBfYVsxXTtcbiAgICB2YXIgZm9yd2FyZFByb3BzID0gcHJvcHMuZm9yd2FyZFByb3BzLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHJlbW92ZVNjcm9sbEJhciA9IHByb3BzLnJlbW92ZVNjcm9sbEJhciwgZW5hYmxlZCA9IHByb3BzLmVuYWJsZWQsIHNoYXJkcyA9IHByb3BzLnNoYXJkcywgc2lkZUNhciA9IHByb3BzLnNpZGVDYXIsIG5vSXNvbGF0aW9uID0gcHJvcHMubm9Jc29sYXRpb24sIGluZXJ0ID0gcHJvcHMuaW5lcnQsIGFsbG93UGluY2hab29tID0gcHJvcHMuYWxsb3dQaW5jaFpvb20sIF9iID0gcHJvcHMuYXMsIENvbnRhaW5lciA9IF9iID09PSB2b2lkIDAgPyAnZGl2JyA6IF9iLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJmb3J3YXJkUHJvcHNcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcInJlbW92ZVNjcm9sbEJhclwiLCBcImVuYWJsZWRcIiwgXCJzaGFyZHNcIiwgXCJzaWRlQ2FyXCIsIFwibm9Jc29sYXRpb25cIiwgXCJpbmVydFwiLCBcImFsbG93UGluY2hab29tXCIsIFwiYXNcIl0pO1xuICAgIHZhciBTaWRlQ2FyID0gc2lkZUNhcjtcbiAgICB2YXIgY29udGFpbmVyUmVmID0gdXNlTWVyZ2VSZWZzKFtyZWYsIHBhcmVudFJlZl0pO1xuICAgIHZhciBjb250YWluZXJQcm9wcyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN0KSwgY2FsbGJhY2tzKTtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIGVuYWJsZWQgJiYgKFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2lkZUNhciwgeyBzaWRlQ2FyOiBlZmZlY3RDYXIsIHJlbW92ZVNjcm9sbEJhcjogcmVtb3ZlU2Nyb2xsQmFyLCBzaGFyZHM6IHNoYXJkcywgbm9Jc29sYXRpb246IG5vSXNvbGF0aW9uLCBpbmVydDogaW5lcnQsIHNldENhbGxiYWNrczogc2V0Q2FsbGJhY2tzLCBhbGxvd1BpbmNoWm9vbTogISFhbGxvd1BpbmNoWm9vbSwgbG9ja1JlZjogcmVmIH0pKSxcbiAgICAgICAgZm9yd2FyZFByb3BzID8gKFJlYWN0LmNsb25lRWxlbWVudChSZWFjdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKSwgX19hc3NpZ24oX19hc3NpZ24oe30sIGNvbnRhaW5lclByb3BzKSwgeyByZWY6IGNvbnRhaW5lclJlZiB9KSkpIDogKFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29udGFpbmVyLCBfX2Fzc2lnbih7fSwgY29udGFpbmVyUHJvcHMsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIHJlZjogY29udGFpbmVyUmVmIH0pLCBjaGlsZHJlbikpKSk7XG59KTtcblJlbW92ZVNjcm9sbC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICByZW1vdmVTY3JvbGxCYXI6IHRydWUsXG4gICAgaW5lcnQ6IGZhbHNlLFxufTtcblJlbW92ZVNjcm9sbC5jbGFzc05hbWVzID0ge1xuICAgIGZ1bGxXaWR0aDogZnVsbFdpZHRoQ2xhc3NOYW1lLFxuICAgIHplcm9SaWdodDogemVyb1JpZ2h0Q2xhc3NOYW1lLFxufTtcbmV4cG9ydCB7IFJlbW92ZVNjcm9sbCB9O1xuIiwiaW1wb3J0IHsgZ2V0Tm9uY2UgfSBmcm9tICdnZXQtbm9uY2UnO1xuZnVuY3Rpb24gbWFrZVN0eWxlVGFnKCkge1xuICAgIGlmICghZG9jdW1lbnQpXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIHZhciB0YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIHRhZy50eXBlID0gJ3RleHQvY3NzJztcbiAgICB2YXIgbm9uY2UgPSBnZXROb25jZSgpO1xuICAgIGlmIChub25jZSkge1xuICAgICAgICB0YWcuc2V0QXR0cmlidXRlKCdub25jZScsIG5vbmNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhZztcbn1cbmZ1bmN0aW9uIGluamVjdFN0eWxlcyh0YWcsIGNzcykge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAodGFnLnN0eWxlU2hlZXQpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0YWcuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGluc2VydFN0eWxlVGFnKHRhZykge1xuICAgIHZhciBoZWFkID0gZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICAgIGhlYWQuYXBwZW5kQ2hpbGQodGFnKTtcbn1cbmV4cG9ydCB2YXIgc3R5bGVzaGVldFNpbmdsZXRvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY291bnRlciA9IDA7XG4gICAgdmFyIHN0eWxlc2hlZXQgPSBudWxsO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFkZDogZnVuY3Rpb24gKHN0eWxlKSB7XG4gICAgICAgICAgICBpZiAoY291bnRlciA9PSAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKChzdHlsZXNoZWV0ID0gbWFrZVN0eWxlVGFnKCkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGluamVjdFN0eWxlcyhzdHlsZXNoZWV0LCBzdHlsZSk7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydFN0eWxlVGFnKHN0eWxlc2hlZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvdW50ZXIrKztcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjb3VudGVyLS07XG4gICAgICAgICAgICBpZiAoIWNvdW50ZXIgJiYgc3R5bGVzaGVldCkge1xuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQucGFyZW50Tm9kZSAmJiBzdHlsZXNoZWV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVzaGVldCk7XG4gICAgICAgICAgICAgICAgc3R5bGVzaGVldCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgfTtcbn07XG4iLCJ2YXIgY3VycmVudE5vbmNlO1xuZXhwb3J0IHZhciBzZXROb25jZSA9IGZ1bmN0aW9uIChub25jZSkge1xuICAgIGN1cnJlbnROb25jZSA9IG5vbmNlO1xufTtcbmV4cG9ydCB2YXIgZ2V0Tm9uY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGN1cnJlbnROb25jZSkge1xuICAgICAgICByZXR1cm4gY3VycmVudE5vbmNlO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gX193ZWJwYWNrX25vbmNlX187XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59O1xuIiwiaW1wb3J0IHsgc3R5bGVIb29rU2luZ2xldG9uIH0gZnJvbSAnLi9ob29rJztcbi8qKlxuICogY3JlYXRlIGEgQ29tcG9uZW50IHRvIGFkZCBzdHlsZXMgb24gZGVtYW5kXG4gKiAtIHN0eWxlcyBhcmUgYWRkZWQgd2hlbiBmaXJzdCBpbnN0YW5jZSBpcyBtb3VudGVkXG4gKiAtIHN0eWxlcyBhcmUgcmVtb3ZlZCB3aGVuIHRoZSBsYXN0IGluc3RhbmNlIGlzIHVubW91bnRlZFxuICogLSBjaGFuZ2luZyBzdHlsZXMgaW4gcnVudGltZSBkb2VzIG5vdGhpbmcgdW5sZXNzIGR5bmFtaWMgaXMgc2V0LiBCdXQgd2l0aCBtdWx0aXBsZSBjb21wb25lbnRzIHRoYXQgY2FuIGxlYWQgdG8gdGhlIHVuZGVmaW5lZCBiZWhhdmlvclxuICovXG5leHBvcnQgdmFyIHN0eWxlU2luZ2xldG9uID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB1c2VTdHlsZSA9IHN0eWxlSG9va1NpbmdsZXRvbigpO1xuICAgIHZhciBTaGVldCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgc3R5bGVzID0gX2Euc3R5bGVzLCBkeW5hbWljID0gX2EuZHluYW1pYztcbiAgICAgICAgdXNlU3R5bGUoc3R5bGVzLCBkeW5hbWljKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gU2hlZXQ7XG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc3R5bGVzaGVldFNpbmdsZXRvbiB9IGZyb20gJy4vc2luZ2xldG9uJztcbi8qKlxuICogY3JlYXRlcyBhIGhvb2sgdG8gY29udHJvbCBzdHlsZSBzaW5nbGV0b25cbiAqIEBzZWUge0BsaW5rIHN0eWxlU2luZ2xldG9ufSBmb3IgYSBzYWZlciBjb21wb25lbnQgdmVyc2lvblxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgdXNlU3R5bGUgPSBzdHlsZUhvb2tTaW5nbGV0b24oKTtcbiAqIC8vL1xuICogdXNlU3R5bGUoJ2JvZHkgeyBvdmVyZmxvdzogaGlkZGVufScpO1xuICovXG5leHBvcnQgdmFyIHN0eWxlSG9va1NpbmdsZXRvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hlZXQgPSBzdHlsZXNoZWV0U2luZ2xldG9uKCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChzdHlsZXMsIGlzRHluYW1pYykge1xuICAgICAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hlZXQuYWRkKHN0eWxlcyk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHNoZWV0LnJlbW92ZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwgW3N0eWxlcyAmJiBpc0R5bmFtaWNdKTtcbiAgICB9O1xufTtcbiIsImV4cG9ydCB2YXIgemVyb0dhcCA9IHtcbiAgICBsZWZ0OiAwLFxuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBnYXA6IDAsXG59O1xudmFyIHBhcnNlID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHBhcnNlSW50KHggfHwgJycsIDEwKSB8fCAwOyB9O1xudmFyIGdldE9mZnNldCA9IGZ1bmN0aW9uIChnYXBNb2RlKSB7XG4gICAgdmFyIGNzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSk7XG4gICAgdmFyIGxlZnQgPSBjc1tnYXBNb2RlID09PSAncGFkZGluZycgPyAncGFkZGluZ0xlZnQnIDogJ21hcmdpbkxlZnQnXTtcbiAgICB2YXIgdG9wID0gY3NbZ2FwTW9kZSA9PT0gJ3BhZGRpbmcnID8gJ3BhZGRpbmdUb3AnIDogJ21hcmdpblRvcCddO1xuICAgIHZhciByaWdodCA9IGNzW2dhcE1vZGUgPT09ICdwYWRkaW5nJyA/ICdwYWRkaW5nUmlnaHQnIDogJ21hcmdpblJpZ2h0J107XG4gICAgcmV0dXJuIFtwYXJzZShsZWZ0KSwgcGFyc2UodG9wKSwgcGFyc2UocmlnaHQpXTtcbn07XG5leHBvcnQgdmFyIGdldEdhcFdpZHRoID0gZnVuY3Rpb24gKGdhcE1vZGUpIHtcbiAgICBpZiAoZ2FwTW9kZSA9PT0gdm9pZCAwKSB7IGdhcE1vZGUgPSAnbWFyZ2luJzsgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gemVyb0dhcDtcbiAgICB9XG4gICAgdmFyIG9mZnNldHMgPSBnZXRPZmZzZXQoZ2FwTW9kZSk7XG4gICAgdmFyIGRvY3VtZW50V2lkdGggPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgdmFyIHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbGVmdDogb2Zmc2V0c1swXSxcbiAgICAgICAgdG9wOiBvZmZzZXRzWzFdLFxuICAgICAgICByaWdodDogb2Zmc2V0c1syXSxcbiAgICAgICAgZ2FwOiBNYXRoLm1heCgwLCB3aW5kb3dXaWR0aCAtIGRvY3VtZW50V2lkdGggKyBvZmZzZXRzWzJdIC0gb2Zmc2V0c1swXSksXG4gICAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzdHlsZVNpbmdsZXRvbiB9IGZyb20gJ3JlYWN0LXN0eWxlLXNpbmdsZXRvbic7XG5pbXBvcnQgeyBmdWxsV2lkdGhDbGFzc05hbWUsIHplcm9SaWdodENsYXNzTmFtZSwgbm9TY3JvbGxiYXJzQ2xhc3NOYW1lLCByZW1vdmVkQmFyU2l6ZVZhcmlhYmxlIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0R2FwV2lkdGggfSBmcm9tICcuL3V0aWxzJztcbnZhciBTdHlsZSA9IHN0eWxlU2luZ2xldG9uKCk7XG4vLyBpbXBvcnRhbnQgdGlwIC0gb25jZSB3ZSBtZWFzdXJlIHNjcm9sbEJhciB3aWR0aCBhbmQgcmVtb3ZlIHRoZW1cbi8vIHdlIGNvdWxkIG5vdCByZXBlYXQgdGhpcyBvcGVyYXRpb25cbi8vIHRodXMgd2UgYXJlIHVzaW5nIHN0eWxlLXNpbmdsZXRvbiAtIG9ubHkgdGhlIGZpcnN0IFwieWV0IGNvcnJlY3RcIiBzdHlsZSB3aWxsIGJlIGFwcGxpZWQuXG52YXIgZ2V0U3R5bGVzID0gZnVuY3Rpb24gKF9hLCBhbGxvd1JlbGF0aXZlLCBnYXBNb2RlLCBpbXBvcnRhbnQpIHtcbiAgICB2YXIgbGVmdCA9IF9hLmxlZnQsIHRvcCA9IF9hLnRvcCwgcmlnaHQgPSBfYS5yaWdodCwgZ2FwID0gX2EuZ2FwO1xuICAgIGlmIChnYXBNb2RlID09PSB2b2lkIDApIHsgZ2FwTW9kZSA9ICdtYXJnaW4nOyB9XG4gICAgcmV0dXJuIFwiXFxuICAuXCIuY29uY2F0KG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSwgXCIge1xcbiAgIG92ZXJmbG93OiBoaWRkZW4gXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgIHBhZGRpbmctcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gIH1cXG4gIGJvZHkge1xcbiAgICBvdmVyZmxvdzogaGlkZGVuIFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gICAgb3ZlcnNjcm9sbC1iZWhhdmlvcjogY29udGFpbjtcXG4gICAgXCIpLmNvbmNhdChbXG4gICAgICAgIGFsbG93UmVsYXRpdmUgJiYgXCJwb3NpdGlvbjogcmVsYXRpdmUgXCIuY29uY2F0KGltcG9ydGFudCwgXCI7XCIpLFxuICAgICAgICBnYXBNb2RlID09PSAnbWFyZ2luJyAmJlxuICAgICAgICAgICAgXCJcXG4gICAgcGFkZGluZy1sZWZ0OiBcIi5jb25jYXQobGVmdCwgXCJweDtcXG4gICAgcGFkZGluZy10b3A6IFwiKS5jb25jYXQodG9wLCBcInB4O1xcbiAgICBwYWRkaW5nLXJpZ2h0OiBcIikuY29uY2F0KHJpZ2h0LCBcInB4O1xcbiAgICBtYXJnaW4tbGVmdDowO1xcbiAgICBtYXJnaW4tdG9wOjA7XFxuICAgIG1hcmdpbi1yaWdodDogXCIpLmNvbmNhdChnYXAsIFwicHggXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgICBcIiksXG4gICAgICAgIGdhcE1vZGUgPT09ICdwYWRkaW5nJyAmJiBcInBhZGRpbmctcmlnaHQ6IFwiLmNvbmNhdChnYXAsIFwicHggXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1wiKSxcbiAgICBdXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLmpvaW4oJycpLCBcIlxcbiAgfVxcbiAgXFxuICAuXCIpLmNvbmNhdCh6ZXJvUmlnaHRDbGFzc05hbWUsIFwiIHtcXG4gICAgcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gIH1cXG4gIFxcbiAgLlwiKS5jb25jYXQoZnVsbFdpZHRoQ2xhc3NOYW1lLCBcIiB7XFxuICAgIG1hcmdpbi1yaWdodDogXCIpLmNvbmNhdChnYXAsIFwicHggXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgfVxcbiAgXFxuICAuXCIpLmNvbmNhdCh6ZXJvUmlnaHRDbGFzc05hbWUsIFwiIC5cIikuY29uY2F0KHplcm9SaWdodENsYXNzTmFtZSwgXCIge1xcbiAgICByaWdodDogMCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBcXG4gIC5cIikuY29uY2F0KGZ1bGxXaWR0aENsYXNzTmFtZSwgXCIgLlwiKS5jb25jYXQoZnVsbFdpZHRoQ2xhc3NOYW1lLCBcIiB7XFxuICAgIG1hcmdpbi1yaWdodDogMCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBcXG4gIGJvZHkge1xcbiAgICBcIikuY29uY2F0KHJlbW92ZWRCYXJTaXplVmFyaWFibGUsIFwiOiBcIikuY29uY2F0KGdhcCwgXCJweDtcXG4gIH1cXG5cIik7XG59O1xuLyoqXG4gKiBSZW1vdmVzIHBhZ2Ugc2Nyb2xsYmFyIGFuZCBibG9ja3MgcGFnZSBzY3JvbGwgd2hlbiBtb3VudGVkXG4gKi9cbmV4cG9ydCB2YXIgUmVtb3ZlU2Nyb2xsQmFyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG5vUmVsYXRpdmUgPSBwcm9wcy5ub1JlbGF0aXZlLCBub0ltcG9ydGFudCA9IHByb3BzLm5vSW1wb3J0YW50LCBfYSA9IHByb3BzLmdhcE1vZGUsIGdhcE1vZGUgPSBfYSA9PT0gdm9pZCAwID8gJ21hcmdpbicgOiBfYTtcbiAgICAvKlxuICAgICBnYXAgd2lsbCBiZSBtZWFzdXJlZCBvbiBldmVyeSBjb21wb25lbnQgbW91bnRcbiAgICAgaG93ZXZlciBpdCB3aWxsIGJlIHVzZWQgb25seSBieSB0aGUgXCJmaXJzdFwiIGludm9jYXRpb25cbiAgICAgZHVlIHRvIHNpbmdsZXRvbiBuYXR1cmUgb2YgPFN0eWxlXG4gICAgICovXG4gICAgdmFyIGdhcCA9IFJlYWN0LnVzZU1lbW8oZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0R2FwV2lkdGgoZ2FwTW9kZSk7IH0sIFtnYXBNb2RlXSk7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGUsIHsgc3R5bGVzOiBnZXRTdHlsZXMoZ2FwLCAhbm9SZWxhdGl2ZSwgZ2FwTW9kZSwgIW5vSW1wb3J0YW50ID8gJyFpbXBvcnRhbnQnIDogJycpIH0pO1xufTtcbiIsInZhciBwYXNzaXZlU3VwcG9ydGVkID0gZmFsc2U7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3Bhc3NpdmUnLCB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBwYXNzaXZlU3VwcG9ydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0Jywgb3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Rlc3QnLCBvcHRpb25zLCBvcHRpb25zKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBwYXNzaXZlU3VwcG9ydGVkID0gZmFsc2U7XG4gICAgfVxufVxuZXhwb3J0IHZhciBub25QYXNzaXZlID0gcGFzc2l2ZVN1cHBvcnRlZCA/IHsgcGFzc2l2ZTogZmFsc2UgfSA6IGZhbHNlO1xuIiwidmFyIGFsd2F5c0NvbnRhaW5zU2Nyb2xsID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAvLyB0ZXh0YXJlYSB3aWxsIGFsd2F5cyBfY29udGFpbl8gc2Nyb2xsIGluc2lkZSBzZWxmLiBJdCBvbmx5IGNhbiBiZSBoaWRkZW5cbiAgICByZXR1cm4gbm9kZS50YWdOYW1lID09PSAnVEVYVEFSRUEnO1xufTtcbnZhciBlbGVtZW50Q2FuQmVTY3JvbGxlZCA9IGZ1bmN0aW9uIChub2RlLCBvdmVyZmxvdykge1xuICAgIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICByZXR1cm4gKFxuICAgIC8vIG5vdC1ub3Qtc2Nyb2xsYWJsZVxuICAgIHN0eWxlc1tvdmVyZmxvd10gIT09ICdoaWRkZW4nICYmXG4gICAgICAgIC8vIGNvbnRhaW5zIHNjcm9sbCBpbnNpZGUgc2VsZlxuICAgICAgICAhKHN0eWxlcy5vdmVyZmxvd1kgPT09IHN0eWxlcy5vdmVyZmxvd1ggJiYgIWFsd2F5c0NvbnRhaW5zU2Nyb2xsKG5vZGUpICYmIHN0eWxlc1tvdmVyZmxvd10gPT09ICd2aXNpYmxlJykpO1xufTtcbnZhciBlbGVtZW50Q291bGRCZVZTY3JvbGxlZCA9IGZ1bmN0aW9uIChub2RlKSB7IHJldHVybiBlbGVtZW50Q2FuQmVTY3JvbGxlZChub2RlLCAnb3ZlcmZsb3dZJyk7IH07XG52YXIgZWxlbWVudENvdWxkQmVIU2Nyb2xsZWQgPSBmdW5jdGlvbiAobm9kZSkgeyByZXR1cm4gZWxlbWVudENhbkJlU2Nyb2xsZWQobm9kZSwgJ292ZXJmbG93WCcpOyB9O1xuZXhwb3J0IHZhciBsb2NhdGlvbkNvdWxkQmVTY3JvbGxlZCA9IGZ1bmN0aW9uIChheGlzLCBub2RlKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBub2RlO1xuICAgIGRvIHtcbiAgICAgICAgLy8gU2tpcCBvdmVyIHNoYWRvdyByb290XG4gICAgICAgIGlmICh0eXBlb2YgU2hhZG93Um9vdCAhPT0gJ3VuZGVmaW5lZCcgJiYgY3VycmVudCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lmhvc3Q7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGlzU2Nyb2xsYWJsZSA9IGVsZW1lbnRDb3VsZEJlU2Nyb2xsZWQoYXhpcywgY3VycmVudCk7XG4gICAgICAgIGlmIChpc1Njcm9sbGFibGUpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IGdldFNjcm9sbFZhcmlhYmxlcyhheGlzLCBjdXJyZW50KSwgcyA9IF9hWzFdLCBkID0gX2FbMl07XG4gICAgICAgICAgICBpZiAocyA+IGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnROb2RlO1xuICAgIH0gd2hpbGUgKGN1cnJlbnQgJiYgY3VycmVudCAhPT0gZG9jdW1lbnQuYm9keSk7XG4gICAgcmV0dXJuIGZhbHNlO1xufTtcbnZhciBnZXRWU2Nyb2xsVmFyaWFibGVzID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNjcm9sbFRvcCA9IF9hLnNjcm9sbFRvcCwgc2Nyb2xsSGVpZ2h0ID0gX2Euc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQgPSBfYS5jbGllbnRIZWlnaHQ7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2Nyb2xsVG9wLFxuICAgICAgICBzY3JvbGxIZWlnaHQsXG4gICAgICAgIGNsaWVudEhlaWdodCxcbiAgICBdO1xufTtcbnZhciBnZXRIU2Nyb2xsVmFyaWFibGVzID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNjcm9sbExlZnQgPSBfYS5zY3JvbGxMZWZ0LCBzY3JvbGxXaWR0aCA9IF9hLnNjcm9sbFdpZHRoLCBjbGllbnRXaWR0aCA9IF9hLmNsaWVudFdpZHRoO1xuICAgIHJldHVybiBbXG4gICAgICAgIHNjcm9sbExlZnQsXG4gICAgICAgIHNjcm9sbFdpZHRoLFxuICAgICAgICBjbGllbnRXaWR0aCxcbiAgICBdO1xufTtcbnZhciBlbGVtZW50Q291bGRCZVNjcm9sbGVkID0gZnVuY3Rpb24gKGF4aXMsIG5vZGUpIHtcbiAgICByZXR1cm4gYXhpcyA9PT0gJ3YnID8gZWxlbWVudENvdWxkQmVWU2Nyb2xsZWQobm9kZSkgOiBlbGVtZW50Q291bGRCZUhTY3JvbGxlZChub2RlKTtcbn07XG52YXIgZ2V0U2Nyb2xsVmFyaWFibGVzID0gZnVuY3Rpb24gKGF4aXMsIG5vZGUpIHtcbiAgICByZXR1cm4gYXhpcyA9PT0gJ3YnID8gZ2V0VlNjcm9sbFZhcmlhYmxlcyhub2RlKSA6IGdldEhTY3JvbGxWYXJpYWJsZXMobm9kZSk7XG59O1xudmFyIGdldERpcmVjdGlvbkZhY3RvciA9IGZ1bmN0aW9uIChheGlzLCBkaXJlY3Rpb24pIHtcbiAgICAvKipcbiAgICAgKiBJZiB0aGUgZWxlbWVudCdzIGRpcmVjdGlvbiBpcyBydGwgKHJpZ2h0LXRvLWxlZnQpLCB0aGVuIHNjcm9sbExlZnQgaXMgMCB3aGVuIHRoZSBzY3JvbGxiYXIgaXMgYXQgaXRzIHJpZ2h0bW9zdCBwb3NpdGlvbixcbiAgICAgKiBhbmQgdGhlbiBpbmNyZWFzaW5nbHkgbmVnYXRpdmUgYXMgeW91IHNjcm9sbCB0b3dhcmRzIHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQuXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9zY3JvbGxMZWZ0XG4gICAgICovXG4gICAgcmV0dXJuIGF4aXMgPT09ICdoJyAmJiBkaXJlY3Rpb24gPT09ICdydGwnID8gLTEgOiAxO1xufTtcbmV4cG9ydCB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKGF4aXMsIGVuZFRhcmdldCwgZXZlbnQsIHNvdXJjZURlbHRhLCBub092ZXJzY3JvbGwpIHtcbiAgICB2YXIgZGlyZWN0aW9uRmFjdG9yID0gZ2V0RGlyZWN0aW9uRmFjdG9yKGF4aXMsIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVuZFRhcmdldCkuZGlyZWN0aW9uKTtcbiAgICB2YXIgZGVsdGEgPSBkaXJlY3Rpb25GYWN0b3IgKiBzb3VyY2VEZWx0YTtcbiAgICAvLyBmaW5kIHNjcm9sbGFibGUgdGFyZ2V0XG4gICAgdmFyIHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICB2YXIgdGFyZ2V0SW5Mb2NrID0gZW5kVGFyZ2V0LmNvbnRhaW5zKHRhcmdldCk7XG4gICAgdmFyIHNob3VsZENhbmNlbFNjcm9sbCA9IGZhbHNlO1xuICAgIHZhciBpc0RlbHRhUG9zaXRpdmUgPSBkZWx0YSA+IDA7XG4gICAgdmFyIGF2YWlsYWJsZVNjcm9sbCA9IDA7XG4gICAgdmFyIGF2YWlsYWJsZVNjcm9sbFRvcCA9IDA7XG4gICAgZG8ge1xuICAgICAgICB2YXIgX2EgPSBnZXRTY3JvbGxWYXJpYWJsZXMoYXhpcywgdGFyZ2V0KSwgcG9zaXRpb24gPSBfYVswXSwgc2Nyb2xsXzEgPSBfYVsxXSwgY2FwYWNpdHkgPSBfYVsyXTtcbiAgICAgICAgdmFyIGVsZW1lbnRTY3JvbGwgPSBzY3JvbGxfMSAtIGNhcGFjaXR5IC0gZGlyZWN0aW9uRmFjdG9yICogcG9zaXRpb247XG4gICAgICAgIGlmIChwb3NpdGlvbiB8fCBlbGVtZW50U2Nyb2xsKSB7XG4gICAgICAgICAgICBpZiAoZWxlbWVudENvdWxkQmVTY3JvbGxlZChheGlzLCB0YXJnZXQpKSB7XG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlU2Nyb2xsICs9IGVsZW1lbnRTY3JvbGw7XG4gICAgICAgICAgICAgICAgYXZhaWxhYmxlU2Nyb2xsVG9wICs9IHBvc2l0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlO1xuICAgIH0gd2hpbGUgKFxuICAgIC8vIHBvcnRhbGVkIGNvbnRlbnRcbiAgICAoIXRhcmdldEluTG9jayAmJiB0YXJnZXQgIT09IGRvY3VtZW50LmJvZHkpIHx8XG4gICAgICAgIC8vIHNlbGYgY29udGVudFxuICAgICAgICAodGFyZ2V0SW5Mb2NrICYmIChlbmRUYXJnZXQuY29udGFpbnModGFyZ2V0KSB8fCBlbmRUYXJnZXQgPT09IHRhcmdldCkpKTtcbiAgICBpZiAoaXNEZWx0YVBvc2l0aXZlICYmICgobm9PdmVyc2Nyb2xsICYmIGF2YWlsYWJsZVNjcm9sbCA9PT0gMCkgfHwgKCFub092ZXJzY3JvbGwgJiYgZGVsdGEgPiBhdmFpbGFibGVTY3JvbGwpKSkge1xuICAgICAgICBzaG91bGRDYW5jZWxTY3JvbGwgPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIGlmICghaXNEZWx0YVBvc2l0aXZlICYmXG4gICAgICAgICgobm9PdmVyc2Nyb2xsICYmIGF2YWlsYWJsZVNjcm9sbFRvcCA9PT0gMCkgfHwgKCFub092ZXJzY3JvbGwgJiYgLWRlbHRhID4gYXZhaWxhYmxlU2Nyb2xsVG9wKSkpIHtcbiAgICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHNob3VsZENhbmNlbFNjcm9sbDtcbn07XG4iLCJpbXBvcnQgeyBfX3NwcmVhZEFycmF5IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZW1vdmVTY3JvbGxCYXIgfSBmcm9tICdyZWFjdC1yZW1vdmUtc2Nyb2xsLWJhcic7XG5pbXBvcnQgeyBzdHlsZVNpbmdsZXRvbiB9IGZyb20gJ3JlYWN0LXN0eWxlLXNpbmdsZXRvbic7XG5pbXBvcnQgeyBub25QYXNzaXZlIH0gZnJvbSAnLi9hZ2dyZXNpdmVDYXB0dXJlJztcbmltcG9ydCB7IGhhbmRsZVNjcm9sbCwgbG9jYXRpb25Db3VsZEJlU2Nyb2xsZWQgfSBmcm9tICcuL2hhbmRsZVNjcm9sbCc7XG5leHBvcnQgdmFyIGdldFRvdWNoWFkgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2NoYW5nZWRUb3VjaGVzJyBpbiBldmVudCA/IFtldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYLCBldmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZXSA6IFswLCAwXTtcbn07XG5leHBvcnQgdmFyIGdldERlbHRhWFkgPSBmdW5jdGlvbiAoZXZlbnQpIHsgcmV0dXJuIFtldmVudC5kZWx0YVgsIGV2ZW50LmRlbHRhWV07IH07XG52YXIgZXh0cmFjdFJlZiA9IGZ1bmN0aW9uIChyZWYpIHtcbiAgICByZXR1cm4gcmVmICYmICdjdXJyZW50JyBpbiByZWYgPyByZWYuY3VycmVudCA6IHJlZjtcbn07XG52YXIgZGVsdGFDb21wYXJlID0gZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIHhbMF0gPT09IHlbMF0gJiYgeFsxXSA9PT0geVsxXTsgfTtcbnZhciBnZW5lcmF0ZVN0eWxlID0gZnVuY3Rpb24gKGlkKSB7IHJldHVybiBcIlxcbiAgLmJsb2NrLWludGVyYWN0aXZpdHktXCIuY29uY2F0KGlkLCBcIiB7cG9pbnRlci1ldmVudHM6IG5vbmU7fVxcbiAgLmFsbG93LWludGVyYWN0aXZpdHktXCIpLmNvbmNhdChpZCwgXCIge3BvaW50ZXItZXZlbnRzOiBhbGw7fVxcblwiKTsgfTtcbnZhciBpZENvdW50ZXIgPSAwO1xudmFyIGxvY2tTdGFjayA9IFtdO1xuZXhwb3J0IGZ1bmN0aW9uIFJlbW92ZVNjcm9sbFNpZGVDYXIocHJvcHMpIHtcbiAgICB2YXIgc2hvdWxkUHJldmVudFF1ZXVlID0gUmVhY3QudXNlUmVmKFtdKTtcbiAgICB2YXIgdG91Y2hTdGFydFJlZiA9IFJlYWN0LnVzZVJlZihbMCwgMF0pO1xuICAgIHZhciBhY3RpdmVBeGlzID0gUmVhY3QudXNlUmVmKCk7XG4gICAgdmFyIGlkID0gUmVhY3QudXNlU3RhdGUoaWRDb3VudGVyKyspWzBdO1xuICAgIHZhciBTdHlsZSA9IFJlYWN0LnVzZVN0YXRlKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0eWxlU2luZ2xldG9uKCk7IH0pWzBdO1xuICAgIHZhciBsYXN0UHJvcHMgPSBSZWFjdC51c2VSZWYocHJvcHMpO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxhc3RQcm9wcy5jdXJyZW50ID0gcHJvcHM7XG4gICAgfSwgW3Byb3BzXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHByb3BzLmluZXJ0KSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJibG9jay1pbnRlcmFjdGl2aXR5LVwiLmNvbmNhdChpZCkpO1xuICAgICAgICAgICAgdmFyIGFsbG93XzEgPSBfX3NwcmVhZEFycmF5KFtwcm9wcy5sb2NrUmVmLmN1cnJlbnRdLCAocHJvcHMuc2hhcmRzIHx8IFtdKS5tYXAoZXh0cmFjdFJlZiksIHRydWUpLmZpbHRlcihCb29sZWFuKTtcbiAgICAgICAgICAgIGFsbG93XzEuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmNsYXNzTGlzdC5hZGQoXCJhbGxvdy1pbnRlcmFjdGl2aXR5LVwiLmNvbmNhdChpZCkpOyB9KTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiYmxvY2staW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTtcbiAgICAgICAgICAgICAgICBhbGxvd18xLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbC5jbGFzc0xpc3QucmVtb3ZlKFwiYWxsb3ctaW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTsgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICB9LCBbcHJvcHMuaW5lcnQsIHByb3BzLmxvY2tSZWYuY3VycmVudCwgcHJvcHMuc2hhcmRzXSk7XG4gICAgdmFyIHNob3VsZENhbmNlbEV2ZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50LCBwYXJlbnQpIHtcbiAgICAgICAgaWYgKCd0b3VjaGVzJyBpbiBldmVudCAmJiBldmVudC50b3VjaGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgcmV0dXJuICFsYXN0UHJvcHMuY3VycmVudC5hbGxvd1BpbmNoWm9vbTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdG91Y2ggPSBnZXRUb3VjaFhZKGV2ZW50KTtcbiAgICAgICAgdmFyIHRvdWNoU3RhcnQgPSB0b3VjaFN0YXJ0UmVmLmN1cnJlbnQ7XG4gICAgICAgIHZhciBkZWx0YVggPSAnZGVsdGFYJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWCA6IHRvdWNoU3RhcnRbMF0gLSB0b3VjaFswXTtcbiAgICAgICAgdmFyIGRlbHRhWSA9ICdkZWx0YVknIGluIGV2ZW50ID8gZXZlbnQuZGVsdGFZIDogdG91Y2hTdGFydFsxXSAtIHRvdWNoWzFdO1xuICAgICAgICB2YXIgY3VycmVudEF4aXM7XG4gICAgICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIHZhciBtb3ZlRGlyZWN0aW9uID0gTWF0aC5hYnMoZGVsdGFYKSA+IE1hdGguYWJzKGRlbHRhWSkgPyAnaCcgOiAndic7XG4gICAgICAgIC8vIGFsbG93IGhvcml6b250YWwgdG91Y2ggbW92ZSBvbiBSYW5nZSBpbnB1dHMuIFRoZXkgd2lsbCBub3QgY2F1c2UgYW55IHNjcm9sbFxuICAgICAgICBpZiAoJ3RvdWNoZXMnIGluIGV2ZW50ICYmIG1vdmVEaXJlY3Rpb24gPT09ICdoJyAmJiB0YXJnZXQudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW5CZVNjcm9sbGVkSW5NYWluRGlyZWN0aW9uID0gbG9jYXRpb25Db3VsZEJlU2Nyb2xsZWQobW92ZURpcmVjdGlvbiwgdGFyZ2V0KTtcbiAgICAgICAgaWYgKCFjYW5CZVNjcm9sbGVkSW5NYWluRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbikge1xuICAgICAgICAgICAgY3VycmVudEF4aXMgPSBtb3ZlRGlyZWN0aW9uO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY3VycmVudEF4aXMgPSBtb3ZlRGlyZWN0aW9uID09PSAndicgPyAnaCcgOiAndic7XG4gICAgICAgICAgICBjYW5CZVNjcm9sbGVkSW5NYWluRGlyZWN0aW9uID0gbG9jYXRpb25Db3VsZEJlU2Nyb2xsZWQobW92ZURpcmVjdGlvbiwgdGFyZ2V0KTtcbiAgICAgICAgICAgIC8vIG90aGVyIGF4aXMgbWlnaHQgYmUgbm90IHNjcm9sbGFibGVcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFjdGl2ZUF4aXMuY3VycmVudCAmJiAnY2hhbmdlZFRvdWNoZXMnIGluIGV2ZW50ICYmIChkZWx0YVggfHwgZGVsdGFZKSkge1xuICAgICAgICAgICAgYWN0aXZlQXhpcy5jdXJyZW50ID0gY3VycmVudEF4aXM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJyZW50QXhpcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNhbmNlbGluZ0F4aXMgPSBhY3RpdmVBeGlzLmN1cnJlbnQgfHwgY3VycmVudEF4aXM7XG4gICAgICAgIHJldHVybiBoYW5kbGVTY3JvbGwoY2FuY2VsaW5nQXhpcywgcGFyZW50LCBldmVudCwgY2FuY2VsaW5nQXhpcyA9PT0gJ2gnID8gZGVsdGFYIDogZGVsdGFZLCB0cnVlKTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIHNob3VsZFByZXZlbnQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoX2V2ZW50KSB7XG4gICAgICAgIHZhciBldmVudCA9IF9ldmVudDtcbiAgICAgICAgaWYgKCFsb2NrU3RhY2subGVuZ3RoIHx8IGxvY2tTdGFja1tsb2NrU3RhY2subGVuZ3RoIC0gMV0gIT09IFN0eWxlKSB7XG4gICAgICAgICAgICAvLyBub3QgdGhlIGxhc3QgYWN0aXZlXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRlbHRhID0gJ2RlbHRhWScgaW4gZXZlbnQgPyBnZXREZWx0YVhZKGV2ZW50KSA6IGdldFRvdWNoWFkoZXZlbnQpO1xuICAgICAgICB2YXIgc291cmNlRXZlbnQgPSBzaG91bGRQcmV2ZW50UXVldWUuY3VycmVudC5maWx0ZXIoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUubmFtZSA9PT0gZXZlbnQudHlwZSAmJiBlLnRhcmdldCA9PT0gZXZlbnQudGFyZ2V0ICYmIGRlbHRhQ29tcGFyZShlLmRlbHRhLCBkZWx0YSk7IH0pWzBdO1xuICAgICAgICAvLyBzZWxmIGV2ZW50LCBhbmQgc2hvdWxkIGJlIGNhbmNlbGVkXG4gICAgICAgIGlmIChzb3VyY2VFdmVudCAmJiBzb3VyY2VFdmVudC5zaG91bGQpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBvdXRzaWRlIG9yIHNoYXJkIGV2ZW50XG4gICAgICAgIGlmICghc291cmNlRXZlbnQpIHtcbiAgICAgICAgICAgIHZhciBzaGFyZE5vZGVzID0gKGxhc3RQcm9wcy5jdXJyZW50LnNoYXJkcyB8fCBbXSlcbiAgICAgICAgICAgICAgICAubWFwKGV4dHJhY3RSZWYpXG4gICAgICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHsgcmV0dXJuIG5vZGUuY29udGFpbnMoZXZlbnQudGFyZ2V0KTsgfSk7XG4gICAgICAgICAgICB2YXIgc2hvdWxkU3RvcCA9IHNoYXJkTm9kZXMubGVuZ3RoID4gMCA/IHNob3VsZENhbmNlbEV2ZW50KGV2ZW50LCBzaGFyZE5vZGVzWzBdKSA6ICFsYXN0UHJvcHMuY3VycmVudC5ub0lzb2xhdGlvbjtcbiAgICAgICAgICAgIGlmIChzaG91bGRTdG9wKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmNhbmNlbGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgdmFyIHNob3VsZENhbmNlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChuYW1lLCBkZWx0YSwgdGFyZ2V0LCBzaG91bGQpIHtcbiAgICAgICAgdmFyIGV2ZW50ID0geyBuYW1lOiBuYW1lLCBkZWx0YTogZGVsdGEsIHRhcmdldDogdGFyZ2V0LCBzaG91bGQ6IHNob3VsZCB9O1xuICAgICAgICBzaG91bGRQcmV2ZW50UXVldWUuY3VycmVudC5wdXNoKGV2ZW50KTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBzaG91bGRQcmV2ZW50UXVldWUuY3VycmVudCA9IHNob3VsZFByZXZlbnRRdWV1ZS5jdXJyZW50LmZpbHRlcihmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSAhPT0gZXZlbnQ7IH0pO1xuICAgICAgICB9LCAxKTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIHNjcm9sbFRvdWNoU3RhcnQgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgdG91Y2hTdGFydFJlZi5jdXJyZW50ID0gZ2V0VG91Y2hYWShldmVudCk7XG4gICAgICAgIGFjdGl2ZUF4aXMuY3VycmVudCA9IHVuZGVmaW5lZDtcbiAgICB9LCBbXSk7XG4gICAgdmFyIHNjcm9sbFdoZWVsID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHNob3VsZENhbmNlbChldmVudC50eXBlLCBnZXREZWx0YVhZKGV2ZW50KSwgZXZlbnQudGFyZ2V0LCBzaG91bGRDYW5jZWxFdmVudChldmVudCwgcHJvcHMubG9ja1JlZi5jdXJyZW50KSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBzY3JvbGxUb3VjaE1vdmUgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgc2hvdWxkQ2FuY2VsKGV2ZW50LnR5cGUsIGdldFRvdWNoWFkoZXZlbnQpLCBldmVudC50YXJnZXQsIHNob3VsZENhbmNlbEV2ZW50KGV2ZW50LCBwcm9wcy5sb2NrUmVmLmN1cnJlbnQpKTtcbiAgICB9LCBbXSk7XG4gICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbG9ja1N0YWNrLnB1c2goU3R5bGUpO1xuICAgICAgICBwcm9wcy5zZXRDYWxsYmFja3Moe1xuICAgICAgICAgICAgb25TY3JvbGxDYXB0dXJlOiBzY3JvbGxXaGVlbCxcbiAgICAgICAgICAgIG9uV2hlZWxDYXB0dXJlOiBzY3JvbGxXaGVlbCxcbiAgICAgICAgICAgIG9uVG91Y2hNb3ZlQ2FwdHVyZTogc2Nyb2xsVG91Y2hNb3ZlLFxuICAgICAgICB9KTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCBzaG91bGRQcmV2ZW50LCBub25QYXNzaXZlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBzY3JvbGxUb3VjaFN0YXJ0LCBub25QYXNzaXZlKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGxvY2tTdGFjayA9IGxvY2tTdGFjay5maWx0ZXIoZnVuY3Rpb24gKGluc3QpIHsgcmV0dXJuIGluc3QgIT09IFN0eWxlOyB9KTtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBzaG91bGRQcmV2ZW50LCBub25QYXNzaXZlKTtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCBzY3JvbGxUb3VjaFN0YXJ0LCBub25QYXNzaXZlKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG4gICAgdmFyIHJlbW92ZVNjcm9sbEJhciA9IHByb3BzLnJlbW92ZVNjcm9sbEJhciwgaW5lcnQgPSBwcm9wcy5pbmVydDtcbiAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsXG4gICAgICAgIGluZXJ0ID8gUmVhY3QuY3JlYXRlRWxlbWVudChTdHlsZSwgeyBzdHlsZXM6IGdlbmVyYXRlU3R5bGUoaWQpIH0pIDogbnVsbCxcbiAgICAgICAgcmVtb3ZlU2Nyb2xsQmFyID8gUmVhY3QuY3JlYXRlRWxlbWVudChSZW1vdmVTY3JvbGxCYXIsIHsgZ2FwTW9kZTogXCJtYXJnaW5cIiB9KSA6IG51bGwpKTtcbn1cbiIsImltcG9ydCB7IGV4cG9ydFNpZGVjYXIgfSBmcm9tICd1c2Utc2lkZWNhcic7XG5pbXBvcnQgeyBSZW1vdmVTY3JvbGxTaWRlQ2FyIH0gZnJvbSAnLi9TaWRlRWZmZWN0JztcbmltcG9ydCB7IGVmZmVjdENhciB9IGZyb20gJy4vbWVkaXVtJztcbmV4cG9ydCBkZWZhdWx0IGV4cG9ydFNpZGVjYXIoZWZmZWN0Q2FyLCBSZW1vdmVTY3JvbGxTaWRlQ2FyKTtcbiIsImltcG9ydCB7IF9fYXNzaWduIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZW1vdmVTY3JvbGwgfSBmcm9tICcuL1VJJztcbmltcG9ydCBTaWRlQ2FyIGZyb20gJy4vc2lkZWNhcic7XG52YXIgUmVhY3RSZW1vdmVTY3JvbGwgPSBSZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7IHJldHVybiAoUmVhY3QuY3JlYXRlRWxlbWVudChSZW1vdmVTY3JvbGwsIF9fYXNzaWduKHt9LCBwcm9wcywgeyByZWY6IHJlZiwgc2lkZUNhcjogU2lkZUNhciB9KSkpOyB9KTtcblJlYWN0UmVtb3ZlU2Nyb2xsLmNsYXNzTmFtZXMgPSBSZW1vdmVTY3JvbGwuY2xhc3NOYW1lcztcbmV4cG9ydCBkZWZhdWx0IFJlYWN0UmVtb3ZlU2Nyb2xsO1xuIiwidmFyIGdldERlZmF1bHRQYXJlbnQgPSBmdW5jdGlvbiAob3JpZ2luYWxUYXJnZXQpIHtcbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIHNhbXBsZVRhcmdldCA9IEFycmF5LmlzQXJyYXkob3JpZ2luYWxUYXJnZXQpID8gb3JpZ2luYWxUYXJnZXRbMF0gOiBvcmlnaW5hbFRhcmdldDtcbiAgICByZXR1cm4gc2FtcGxlVGFyZ2V0Lm93bmVyRG9jdW1lbnQuYm9keTtcbn07XG52YXIgY291bnRlck1hcCA9IG5ldyBXZWFrTWFwKCk7XG52YXIgdW5jb250cm9sbGVkTm9kZXMgPSBuZXcgV2Vha01hcCgpO1xudmFyIG1hcmtlck1hcCA9IHt9O1xudmFyIGxvY2tDb3VudCA9IDA7XG52YXIgdW53cmFwSG9zdCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUgJiYgKG5vZGUuaG9zdCB8fCB1bndyYXBIb3N0KG5vZGUucGFyZW50Tm9kZSkpO1xufTtcbnZhciBjb3JyZWN0VGFyZ2V0cyA9IGZ1bmN0aW9uIChwYXJlbnQsIHRhcmdldHMpIHtcbiAgICByZXR1cm4gdGFyZ2V0c1xuICAgICAgICAubWFwKGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgaWYgKHBhcmVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBjb3JyZWN0ZWRUYXJnZXQgPSB1bndyYXBIb3N0KHRhcmdldCk7XG4gICAgICAgIGlmIChjb3JyZWN0ZWRUYXJnZXQgJiYgcGFyZW50LmNvbnRhaW5zKGNvcnJlY3RlZFRhcmdldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBjb3JyZWN0ZWRUYXJnZXQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcignYXJpYS1oaWRkZW4nLCB0YXJnZXQsICdpbiBub3QgY29udGFpbmVkIGluc2lkZScsIHBhcmVudCwgJy4gRG9pbmcgbm90aGluZycpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9KVxuICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh4KSB7IHJldHVybiBCb29sZWFuKHgpOyB9KTtcbn07XG4vKipcbiAqIE1hcmtzIGV2ZXJ5dGhpbmcgZXhjZXB0IGdpdmVuIG5vZGUob3Igbm9kZXMpIGFzIGFyaWEtaGlkZGVuXG4gKiBAcGFyYW0ge0VsZW1lbnQgfCBFbGVtZW50W119IG9yaWdpbmFsVGFyZ2V0IC0gZWxlbWVudHMgdG8ga2VlcCBvbiB0aGUgcGFnZVxuICogQHBhcmFtIFtwYXJlbnROb2RlXSAtIHRvcCBlbGVtZW50LCBkZWZhdWx0cyB0byBkb2N1bWVudC5ib2R5XG4gKiBAcGFyYW0ge1N0cmluZ30gW21hcmtlck5hbWVdIC0gYSBzcGVjaWFsIGF0dHJpYnV0ZSB0byBtYXJrIGV2ZXJ5IG5vZGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbY29udHJvbEF0dHJpYnV0ZV0gLSBodG1sIEF0dHJpYnV0ZSB0byBjb250cm9sXG4gKiBAcmV0dXJuIHtVbmRvfSB1bmRvIGNvbW1hbmRcbiAqL1xudmFyIGFwcGx5QXR0cmlidXRlVG9PdGhlcnMgPSBmdW5jdGlvbiAob3JpZ2luYWxUYXJnZXQsIHBhcmVudE5vZGUsIG1hcmtlck5hbWUsIGNvbnRyb2xBdHRyaWJ1dGUpIHtcbiAgICB2YXIgdGFyZ2V0cyA9IGNvcnJlY3RUYXJnZXRzKHBhcmVudE5vZGUsIEFycmF5LmlzQXJyYXkob3JpZ2luYWxUYXJnZXQpID8gb3JpZ2luYWxUYXJnZXQgOiBbb3JpZ2luYWxUYXJnZXRdKTtcbiAgICBpZiAoIW1hcmtlck1hcFttYXJrZXJOYW1lXSkge1xuICAgICAgICBtYXJrZXJNYXBbbWFya2VyTmFtZV0gPSBuZXcgV2Vha01hcCgpO1xuICAgIH1cbiAgICB2YXIgbWFya2VyQ291bnRlciA9IG1hcmtlck1hcFttYXJrZXJOYW1lXTtcbiAgICB2YXIgaGlkZGVuTm9kZXMgPSBbXTtcbiAgICB2YXIgZWxlbWVudHNUb0tlZXAgPSBuZXcgU2V0KCk7XG4gICAgdmFyIGVsZW1lbnRzVG9TdG9wID0gbmV3IFNldCh0YXJnZXRzKTtcbiAgICB2YXIga2VlcCA9IGZ1bmN0aW9uIChlbCkge1xuICAgICAgICBpZiAoIWVsIHx8IGVsZW1lbnRzVG9LZWVwLmhhcyhlbCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50c1RvS2VlcC5hZGQoZWwpO1xuICAgICAgICBrZWVwKGVsLnBhcmVudE5vZGUpO1xuICAgIH07XG4gICAgdGFyZ2V0cy5mb3JFYWNoKGtlZXApO1xuICAgIHZhciBkZWVwID0gZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICBpZiAoIXBhcmVudCB8fCBlbGVtZW50c1RvU3RvcC5oYXMocGFyZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwocGFyZW50LmNoaWxkcmVuLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRzVG9LZWVwLmhhcyhub2RlKSkge1xuICAgICAgICAgICAgICAgIGRlZXAobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgYXR0ciA9IG5vZGUuZ2V0QXR0cmlidXRlKGNvbnRyb2xBdHRyaWJ1dGUpO1xuICAgICAgICAgICAgICAgIHZhciBhbHJlYWR5SGlkZGVuID0gYXR0ciAhPT0gbnVsbCAmJiBhdHRyICE9PSAnZmFsc2UnO1xuICAgICAgICAgICAgICAgIHZhciBjb3VudGVyVmFsdWUgPSAoY291bnRlck1hcC5nZXQobm9kZSkgfHwgMCkgKyAxO1xuICAgICAgICAgICAgICAgIHZhciBtYXJrZXJWYWx1ZSA9IChtYXJrZXJDb3VudGVyLmdldChub2RlKSB8fCAwKSArIDE7XG4gICAgICAgICAgICAgICAgY291bnRlck1hcC5zZXQobm9kZSwgY291bnRlclZhbHVlKTtcbiAgICAgICAgICAgICAgICBtYXJrZXJDb3VudGVyLnNldChub2RlLCBtYXJrZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgaGlkZGVuTm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoY291bnRlclZhbHVlID09PSAxICYmIGFscmVhZHlIaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgdW5jb250cm9sbGVkTm9kZXMuc2V0KG5vZGUsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobWFya2VyVmFsdWUgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobWFya2VyTmFtZSwgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFhbHJlYWR5SGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGNvbnRyb2xBdHRyaWJ1dGUsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGRlZXAocGFyZW50Tm9kZSk7XG4gICAgZWxlbWVudHNUb0tlZXAuY2xlYXIoKTtcbiAgICBsb2NrQ291bnQrKztcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICBoaWRkZW5Ob2Rlcy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgICAgICB2YXIgY291bnRlclZhbHVlID0gY291bnRlck1hcC5nZXQobm9kZSkgLSAxO1xuICAgICAgICAgICAgdmFyIG1hcmtlclZhbHVlID0gbWFya2VyQ291bnRlci5nZXQobm9kZSkgLSAxO1xuICAgICAgICAgICAgY291bnRlck1hcC5zZXQobm9kZSwgY291bnRlclZhbHVlKTtcbiAgICAgICAgICAgIG1hcmtlckNvdW50ZXIuc2V0KG5vZGUsIG1hcmtlclZhbHVlKTtcbiAgICAgICAgICAgIGlmICghY291bnRlclZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1bmNvbnRyb2xsZWROb2Rlcy5oYXMobm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoY29udHJvbEF0dHJpYnV0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVuY29udHJvbGxlZE5vZGVzLmRlbGV0ZShub2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbWFya2VyVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShtYXJrZXJOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGxvY2tDb3VudC0tO1xuICAgICAgICBpZiAoIWxvY2tDb3VudCkge1xuICAgICAgICAgICAgLy8gY2xlYXJcbiAgICAgICAgICAgIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICAgICAgY291bnRlck1hcCA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICAgICAgICB1bmNvbnRyb2xsZWROb2RlcyA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICAgICAgICBtYXJrZXJNYXAgPSB7fTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuLyoqXG4gKiBNYXJrcyBldmVyeXRoaW5nIGV4Y2VwdCBnaXZlbiBub2RlKG9yIG5vZGVzKSBhcyBhcmlhLWhpZGRlblxuICogQHBhcmFtIHtFbGVtZW50IHwgRWxlbWVudFtdfSBvcmlnaW5hbFRhcmdldCAtIGVsZW1lbnRzIHRvIGtlZXAgb24gdGhlIHBhZ2VcbiAqIEBwYXJhbSBbcGFyZW50Tm9kZV0gLSB0b3AgZWxlbWVudCwgZGVmYXVsdHMgdG8gZG9jdW1lbnQuYm9keVxuICogQHBhcmFtIHtTdHJpbmd9IFttYXJrZXJOYW1lXSAtIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayBldmVyeSBub2RlXG4gKiBAcmV0dXJuIHtVbmRvfSB1bmRvIGNvbW1hbmRcbiAqL1xuZXhwb3J0IHZhciBoaWRlT3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKSB7XG4gICAgaWYgKG1hcmtlck5hbWUgPT09IHZvaWQgMCkgeyBtYXJrZXJOYW1lID0gJ2RhdGEtYXJpYS1oaWRkZW4nOyB9XG4gICAgdmFyIHRhcmdldHMgPSBBcnJheS5mcm9tKEFycmF5LmlzQXJyYXkob3JpZ2luYWxUYXJnZXQpID8gb3JpZ2luYWxUYXJnZXQgOiBbb3JpZ2luYWxUYXJnZXRdKTtcbiAgICB2YXIgYWN0aXZlUGFyZW50Tm9kZSA9IHBhcmVudE5vZGUgfHwgZ2V0RGVmYXVsdFBhcmVudChvcmlnaW5hbFRhcmdldCk7XG4gICAgaWYgKCFhY3RpdmVQYXJlbnROb2RlKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsOyB9O1xuICAgIH1cbiAgICAvLyB3ZSBzaG91bGQgbm90IGhpZGUgYXJpYUxpdmUgZWxlbWVudHMgLSBodHRwczovL2dpdGh1Yi5jb20vdGhlS2FzaGV5L2FyaWEtaGlkZGVuL2lzc3Vlcy8xMFxuICAgIHRhcmdldHMucHVzaC5hcHBseSh0YXJnZXRzLCBBcnJheS5mcm9tKGFjdGl2ZVBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbCgnW2FyaWEtbGl2ZV0nKSkpO1xuICAgIHJldHVybiBhcHBseUF0dHJpYnV0ZVRvT3RoZXJzKHRhcmdldHMsIGFjdGl2ZVBhcmVudE5vZGUsIG1hcmtlck5hbWUsICdhcmlhLWhpZGRlbicpO1xufTtcbi8qKlxuICogTWFya3MgZXZlcnl0aGluZyBleGNlcHQgZ2l2ZW4gbm9kZShvciBub2RlcykgYXMgaW5lcnRcbiAqIEBwYXJhbSB7RWxlbWVudCB8IEVsZW1lbnRbXX0gb3JpZ2luYWxUYXJnZXQgLSBlbGVtZW50cyB0byBrZWVwIG9uIHRoZSBwYWdlXG4gKiBAcGFyYW0gW3BhcmVudE5vZGVdIC0gdG9wIGVsZW1lbnQsIGRlZmF1bHRzIHRvIGRvY3VtZW50LmJvZHlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbbWFya2VyTmFtZV0gLSBhIHNwZWNpYWwgYXR0cmlidXRlIHRvIG1hcmsgZXZlcnkgbm9kZVxuICogQHJldHVybiB7VW5kb30gdW5kbyBjb21tYW5kXG4gKi9cbmV4cG9ydCB2YXIgaW5lcnRPdGhlcnMgPSBmdW5jdGlvbiAob3JpZ2luYWxUYXJnZXQsIHBhcmVudE5vZGUsIG1hcmtlck5hbWUpIHtcbiAgICBpZiAobWFya2VyTmFtZSA9PT0gdm9pZCAwKSB7IG1hcmtlck5hbWUgPSAnZGF0YS1pbmVydC1lZCc7IH1cbiAgICB2YXIgYWN0aXZlUGFyZW50Tm9kZSA9IHBhcmVudE5vZGUgfHwgZ2V0RGVmYXVsdFBhcmVudChvcmlnaW5hbFRhcmdldCk7XG4gICAgaWYgKCFhY3RpdmVQYXJlbnROb2RlKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBudWxsOyB9O1xuICAgIH1cbiAgICByZXR1cm4gYXBwbHlBdHRyaWJ1dGVUb090aGVycyhvcmlnaW5hbFRhcmdldCwgYWN0aXZlUGFyZW50Tm9kZSwgbWFya2VyTmFtZSwgJ2luZXJ0Jyk7XG59O1xuLyoqXG4gKiBAcmV0dXJucyBpZiBjdXJyZW50IGJyb3dzZXIgc3VwcG9ydHMgaW5lcnRcbiAqL1xuZXhwb3J0IHZhciBzdXBwb3J0c0luZXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0eXBlb2YgSFRNTEVsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmIEhUTUxFbGVtZW50LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnaW5lcnQnKTtcbn07XG4vKipcbiAqIEF1dG9tYXRpYyBmdW5jdGlvbiB0byBcInN1cHByZXNzXCIgRE9NIGVsZW1lbnRzIC0gX2hpZGVfIG9yIF9pbmVydF8gaW4gdGhlIGJlc3QgcG9zc2libGUgd2F5XG4gKiBAcGFyYW0ge0VsZW1lbnQgfCBFbGVtZW50W119IG9yaWdpbmFsVGFyZ2V0IC0gZWxlbWVudHMgdG8ga2VlcCBvbiB0aGUgcGFnZVxuICogQHBhcmFtIFtwYXJlbnROb2RlXSAtIHRvcCBlbGVtZW50LCBkZWZhdWx0cyB0byBkb2N1bWVudC5ib2R5XG4gKiBAcGFyYW0ge1N0cmluZ30gW21hcmtlck5hbWVdIC0gYSBzcGVjaWFsIGF0dHJpYnV0ZSB0byBtYXJrIGV2ZXJ5IG5vZGVcbiAqIEByZXR1cm4ge1VuZG99IHVuZG8gY29tbWFuZFxuICovXG5leHBvcnQgdmFyIHN1cHByZXNzT3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKSB7XG4gICAgaWYgKG1hcmtlck5hbWUgPT09IHZvaWQgMCkgeyBtYXJrZXJOYW1lID0gJ2RhdGEtc3VwcHJlc3NlZCc7IH1cbiAgICByZXR1cm4gKHN1cHBvcnRzSW5lcnQoKSA/IGluZXJ0T3RoZXJzIDogaGlkZU90aGVycykob3JpZ2luYWxUYXJnZXQsIHBhcmVudE5vZGUsIG1hcmtlck5hbWUpO1xufTtcbiIsImltcG9ydCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7dXNlUmVmIGFzICQ2N1VIbSR1c2VSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDY3VUhtJGNyZWF0ZUVsZW1lbnQsIHVzZUNhbGxiYWNrIGFzICQ2N1VIbSR1c2VDYWxsYmFjaywgZm9yd2FyZFJlZiBhcyAkNjdVSG0kZm9yd2FyZFJlZiwgQ2hpbGRyZW4gYXMgJDY3VUhtJENoaWxkcmVuLCB1c2VFZmZlY3QgYXMgJDY3VUhtJHVzZUVmZmVjdCwgRnJhZ21lbnQgYXMgJDY3VUhtJEZyYWdtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDY3VUhtJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ2N1VIbSRjcmVhdGVDb250ZXh0U2NvcGUsIGNyZWF0ZUNvbnRleHQgYXMgJDY3VUhtJGNyZWF0ZUNvbnRleHR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VJZCBhcyAkNjdVSG0kdXNlSWR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWRcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDY3VUhtJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7RGlzbWlzc2FibGVMYXllciBhcyAkNjdVSG0kRGlzbWlzc2FibGVMYXllcn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaXNtaXNzYWJsZS1sYXllclwiO1xuaW1wb3J0IHtGb2N1c1Njb3BlIGFzICQ2N1VIbSRGb2N1c1Njb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWZvY3VzLXNjb3BlXCI7XG5pbXBvcnQge1BvcnRhbCBhcyAkNjdVSG0kUG9ydGFsfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcnRhbFwiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkNjdVSG0kUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ2N1VIbSRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUZvY3VzR3VhcmRzIGFzICQ2N1VIbSR1c2VGb2N1c0d1YXJkc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1mb2N1cy1ndWFyZHNcIjtcbmltcG9ydCB7UmVtb3ZlU2Nyb2xsIGFzICQ2N1VIbSRSZW1vdmVTY3JvbGx9IGZyb20gXCJyZWFjdC1yZW1vdmUtc2Nyb2xsXCI7XG5pbXBvcnQge2hpZGVPdGhlcnMgYXMgJDY3VUhtJGhpZGVPdGhlcnN9IGZyb20gXCJhcmlhLWhpZGRlblwiO1xuaW1wb3J0IHtTbG90IGFzICQ2N1VIbSRTbG90fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERJQUxPR19OQU1FID0gJ0RpYWxvZyc7XG5jb25zdCBbJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGNyZWF0ZURpYWxvZ0NvbnRleHQsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjYzcwMjc3M2I4ZWEzZTQxXSA9ICQ2N1VIbSRjcmVhdGVDb250ZXh0U2NvcGUoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERJQUxPR19OQU1FKTtcbmNvbnN0IFskNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nUHJvdmlkZXIsICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0XSA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRjcmVhdGVEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRSk7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkM2RkZjJkMTc0Y2UwMTE1MyA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBvcGVuOiBvcGVuUHJvcCAsIGRlZmF1bHRPcGVuOiBkZWZhdWx0T3BlbiAsIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgbW9kYWw6IG1vZGFsID0gdHJ1ZSAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHRyaWdnZXJSZWYgPSAkNjdVSG0kdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSAkNjdVSG0kdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IFtvcGVuID0gZmFsc2UsIHNldE9wZW5dID0gJDY3VUhtJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogb3BlblByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0T3BlbixcbiAgICAgICAgb25DaGFuZ2U6IG9uT3BlbkNoYW5nZVxuICAgIH0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZURpYWxvZyxcbiAgICAgICAgdHJpZ2dlclJlZjogdHJpZ2dlclJlZixcbiAgICAgICAgY29udGVudFJlZjogY29udGVudFJlZixcbiAgICAgICAgY29udGVudElkOiAkNjdVSG0kdXNlSWQoKSxcbiAgICAgICAgdGl0bGVJZDogJDY3VUhtJHVzZUlkKCksXG4gICAgICAgIGRlc2NyaXB0aW9uSWQ6ICQ2N1VIbSR1c2VJZCgpLFxuICAgICAgICBvcGVuOiBvcGVuLFxuICAgICAgICBvbk9wZW5DaGFuZ2U6IHNldE9wZW4sXG4gICAgICAgIG9uT3BlblRvZ2dsZTogJDY3VUhtJHVzZUNhbGxiYWNrKCgpPT5zZXRPcGVuKChwcmV2T3Blbik9PiFwcmV2T3BlblxuICAgICAgICAgICAgKVxuICAgICAgICAsIFtcbiAgICAgICAgICAgIHNldE9wZW5cbiAgICAgICAgXSksXG4gICAgICAgIG1vZGFsOiBtb2RhbFxuICAgIH0sIGNoaWxkcmVuKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDNkZGYyZDE3NGNlMDExNTMsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERJQUxPR19OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ1RyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRSSUdHRVJfTkFNRSA9ICdEaWFsb2dUcmlnZ2VyJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4ID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkVFJJR0dFUl9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCBjb21wb3NlZFRyaWdnZXJSZWYgPSAkNjdVSG0kdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC50cmlnZ2VyUmVmKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJpbWl0aXZlLmJ1dHRvbiwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgXCJhcmlhLWhhc3BvcHVwXCI6IFwiZGlhbG9nXCIsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBjb250ZXh0Lm9wZW4sXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRnZXRTdGF0ZShjb250ZXh0Lm9wZW4pXG4gICAgfSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRUcmlnZ2VyUmVmLFxuICAgICAgICBvbkNsaWNrOiAkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgY29udGV4dC5vbk9wZW5Ub2dnbGUpXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDJlMWUxMTIyY2YwY2JhODgsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FID0gJ0RpYWxvZ1BvcnRhbCc7XG5jb25zdCBbJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBvcnRhbFByb3ZpZGVyLCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlUG9ydGFsQ29udGV4dF0gPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkY3JlYXRlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkUE9SVEFMX05BTUUsIHtcbiAgICBmb3JjZU1vdW50OiB1bmRlZmluZWRcbn0pO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGRhZDdjOTU1NDJiYWNjZTAgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgZm9yY2VNb3VudDogZm9yY2VNb3VudCAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIGNvbnRhaW5lcjogY29udGFpbmVyICB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRSwgX19zY29wZURpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBvcnRhbFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlRGlhbG9nLFxuICAgICAgICBmb3JjZU1vdW50OiBmb3JjZU1vdW50XG4gICAgfSwgJDY3VUhtJENoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkKT0+LyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJlc2VuY2UsIHtcbiAgICAgICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFBvcnRhbCwge1xuICAgICAgICAgICAgYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyXG4gICAgICAgIH0sIGNoaWxkKSlcbiAgICApKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGRhZDdjOTU1NDJiYWNjZTAsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ092ZXJsYXlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRSA9ICdEaWFsb2dPdmVybGF5JztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZDFkMDZjNzliZTE5ZTE3ID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBwb3J0YWxDb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVBvcnRhbENvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRSwgcHJvcHMuX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgeyBmb3JjZU1vdW50OiBmb3JjZU1vdW50ID0gcG9ydGFsQ29udGV4dC5mb3JjZU1vdW50ICwgLi4ub3ZlcmxheVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRSwgcHJvcHMuX19zY29wZURpYWxvZyk7XG4gICAgcmV0dXJuIGNvbnRleHQubW9kYWwgPyAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmVzZW5jZSwge1xuICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGNvbnRleHQub3BlblxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ092ZXJsYXlJbXBsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIG92ZXJsYXlQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSkgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJkMWQwNmM3OWJlMTllMTcsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRVxufSk7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nT3ZlcmxheUltcGwgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZURpYWxvZzogX19zY29wZURpYWxvZyAsIC4uLm92ZXJsYXlQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybigvKiNfX1BVUkVfXyovIC8vIE1ha2Ugc3VyZSBgQ29udGVudGAgaXMgc2Nyb2xsYWJsZSBldmVuIHdoZW4gaXQgZG9lc24ndCBsaXZlIGluc2lkZSBgUmVtb3ZlU2Nyb2xsYFxuICAgIC8vIGllLiB3aGVuIGBPdmVybGF5YCBhbmQgYENvbnRlbnRgIGFyZSBzaWJsaW5nc1xuICAgICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRSZW1vdmVTY3JvbGwsIHtcbiAgICAgICAgYXM6ICQ2N1VIbSRTbG90LFxuICAgICAgICBhbGxvd1BpbmNoWm9vbTogdHJ1ZSxcbiAgICAgICAgc2hhcmRzOiBbXG4gICAgICAgICAgICBjb250ZXh0LmNvbnRlbnRSZWZcbiAgICAgICAgXVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByaW1pdGl2ZS5kaXYsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUoY29udGV4dC5vcGVuKVxuICAgIH0sIG92ZXJsYXlQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZiAvLyBXZSByZS1lbmFibGUgcG9pbnRlci1ldmVudHMgcHJldmVudGVkIGJ5IGBEaWFsb2cuQ29udGVudGAgdG8gYWxsb3cgc2Nyb2xsaW5nIHRoZSBvdmVybGF5LlxuICAgICAgICAsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnYXV0bycsXG4gICAgICAgICAgICAuLi5vdmVybGF5UHJvcHMuc3R5bGVcbiAgICAgICAgfVxuICAgIH0pKSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUgPSAnRGlhbG9nQ29udGVudCc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYjZkOTU2NWRlMWUwNjhjZiA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgcG9ydGFsQ29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VQb3J0YWxDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmVzZW5jZSwge1xuICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGNvbnRleHQub3BlblxuICAgIH0sIGNvbnRleHQubW9kYWwgPyAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50TW9kYWwsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpIDogLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE5vbk1vZGFsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYjZkOTU2NWRlMWUwNjhjZiwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRNb2RhbCA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSAkNjdVSG0kdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2N1VIbSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZXh0LmNvbnRlbnRSZWYsIGNvbnRlbnRSZWYpOyAvLyBhcmlhLWhpZGUgZXZlcnl0aGluZyBleGNlcHQgdGhlIGNvbnRlbnQgKGJldHRlciBzdXBwb3J0ZWQgZXF1aXZhbGVudCB0byBzZXR0aW5nIGFyaWEtbW9kYWwpXG4gICAgJDY3VUhtJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBjb250ZW50ID0gY29udGVudFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoY29udGVudCkgcmV0dXJuICQ2N1VIbSRoaWRlT3RoZXJzKGNvbnRlbnQpO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudEltcGwsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMgLy8gd2UgbWFrZSBzdXJlIGZvY3VzIGlzbid0IHRyYXBwZWQgb25jZSBgRGlhbG9nQ29udGVudGAgaGFzIGJlZW4gY2xvc2VkXG4gICAgICAgICxcbiAgICAgICAgdHJhcEZvY3VzOiBjb250ZXh0Lm9wZW4sXG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogdHJ1ZSxcbiAgICAgICAgb25DbG9zZUF1dG9Gb2N1czogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQ2xvc2VBdXRvRm9jdXMsIChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfY29udGV4dCR0cmlnZ2VyUmVmJGM7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgKF9jb250ZXh0JHRyaWdnZXJSZWYkYyA9IGNvbnRleHQudHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY29udGV4dCR0cmlnZ2VyUmVmJGMgPT09IHZvaWQgMCB8fCBfY29udGV4dCR0cmlnZ2VyUmVmJGMuZm9jdXMoKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiAkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Qb2ludGVyRG93bk91dHNpZGUsIChldmVudCk9PntcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRXZlbnQgPSBldmVudC5kZXRhaWwub3JpZ2luYWxFdmVudDtcbiAgICAgICAgICAgIGNvbnN0IGN0cmxMZWZ0Q2xpY2sgPSBvcmlnaW5hbEV2ZW50LmJ1dHRvbiA9PT0gMCAmJiBvcmlnaW5hbEV2ZW50LmN0cmxLZXkgPT09IHRydWU7XG4gICAgICAgICAgICBjb25zdCBpc1JpZ2h0Q2xpY2sgPSBvcmlnaW5hbEV2ZW50LmJ1dHRvbiA9PT0gMiB8fCBjdHJsTGVmdENsaWNrOyAvLyBJZiB0aGUgZXZlbnQgaXMgYSByaWdodC1jbGljaywgd2Ugc2hvdWxkbid0IGNsb3NlIGJlY2F1c2VcbiAgICAgICAgICAgIC8vIGl0IGlzIGVmZmVjdGl2ZWx5IGFzIGlmIHdlIHJpZ2h0LWNsaWNrZWQgdGhlIGBPdmVybGF5YC5cbiAgICAgICAgICAgIGlmIChpc1JpZ2h0Q2xpY2spIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0pIC8vIFdoZW4gZm9jdXMgaXMgdHJhcHBlZCwgYSBgZm9jdXNvdXRgIGV2ZW50IG1heSBzdGlsbCBoYXBwZW4uXG4gICAgICAgICxcbiAgICAgICAgb25Gb2N1c091dHNpZGU6ICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkZvY3VzT3V0c2lkZSwgKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICApXG4gICAgfSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50Tm9uTW9kYWwgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZiA9ICQ2N1VIbSR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhc1BvaW50ZXJEb3duT3V0c2lkZVJlZiA9ICQ2N1VIbSR1c2VSZWYoZmFsc2UpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50SW1wbCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgdHJhcEZvY3VzOiBmYWxzZSxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiBmYWxzZSxcbiAgICAgICAgb25DbG9zZUF1dG9Gb2N1czogKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9wcm9wcyRvbkNsb3NlQXV0b0ZvYztcbiAgICAgICAgICAgIChfcHJvcHMkb25DbG9zZUF1dG9Gb2MgPSBwcm9wcy5vbkNsb3NlQXV0b0ZvY3VzKSA9PT0gbnVsbCB8fCBfcHJvcHMkb25DbG9zZUF1dG9Gb2MgPT09IHZvaWQgMCB8fCBfcHJvcHMkb25DbG9zZUF1dG9Gb2MuY2FsbChwcm9wcywgZXZlbnQpO1xuICAgICAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jb250ZXh0JHRyaWdnZXJSZWYkYzI7XG4gICAgICAgICAgICAgICAgaWYgKCFoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50KSAoX2NvbnRleHQkdHJpZ2dlclJlZiRjMiA9IGNvbnRleHQudHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY29udGV4dCR0cmlnZ2VyUmVmJGMyID09PSB2b2lkIDAgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMi5mb2N1cygpOyAvLyBBbHdheXMgcHJldmVudCBhdXRvIGZvY3VzIGJlY2F1c2Ugd2UgZWl0aGVyIGZvY3VzIG1hbnVhbGx5IG9yIHdhbnQgdXNlciBhZ2VudCBmb2N1c1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBoYXNQb2ludGVyRG93bk91dHNpZGVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBvbkludGVyYWN0T3V0c2lkZTogKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9wcm9wcyRvbkludGVyYWN0T3V0cywgX2NvbnRleHQkdHJpZ2dlclJlZiRjMztcbiAgICAgICAgICAgIChfcHJvcHMkb25JbnRlcmFjdE91dHMgPSBwcm9wcy5vbkludGVyYWN0T3V0c2lkZSkgPT09IG51bGwgfHwgX3Byb3BzJG9uSW50ZXJhY3RPdXRzID09PSB2b2lkIDAgfHwgX3Byb3BzJG9uSW50ZXJhY3RPdXRzLmNhbGwocHJvcHMsIGV2ZW50KTtcbiAgICAgICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIGhhc0ludGVyYWN0ZWRPdXRzaWRlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlID09PSAncG9pbnRlcmRvd24nKSBoYXNQb2ludGVyRG93bk91dHNpZGVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB9IC8vIFByZXZlbnQgZGlzbWlzc2luZyB3aGVuIGNsaWNraW5nIHRoZSB0cmlnZ2VyLlxuICAgICAgICAgICAgLy8gQXMgdGhlIHRyaWdnZXIgaXMgYWxyZWFkeSBzZXR1cCB0byBjbG9zZSwgd2l0aG91dCBkb2luZyBzbyB3b3VsZFxuICAgICAgICAgICAgLy8gY2F1c2UgaXQgdG8gY2xvc2UgYW5kIGltbWVkaWF0ZWx5IG9wZW4uXG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXRJc1RyaWdnZXIgPSAoX2NvbnRleHQkdHJpZ2dlclJlZiRjMyA9IGNvbnRleHQudHJpZ2dlclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY29udGV4dCR0cmlnZ2VyUmVmJGMzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGV4dCR0cmlnZ2VyUmVmJGMzLmNvbnRhaW5zKHRhcmdldCk7XG4gICAgICAgICAgICBpZiAodGFyZ2V0SXNUcmlnZ2VyKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAvLyBPbiBTYWZhcmkgaWYgdGhlIHRyaWdnZXIgaXMgaW5zaWRlIGEgY29udGFpbmVyIHdpdGggdGFiSW5kZXg9ezB9LCB3aGVuIGNsaWNrZWRcbiAgICAgICAgICAgIC8vIHdlIHdpbGwgZ2V0IHRoZSBwb2ludGVyIGRvd24gb3V0c2lkZSBldmVudCBvbiB0aGUgdHJpZ2dlciwgYnV0IHRoZW4gYSBzdWJzZXF1ZW50XG4gICAgICAgICAgICAvLyBmb2N1cyBvdXRzaWRlIGV2ZW50IG9uIHRoZSBjb250YWluZXIsIHdlIGlnbm9yZSBhbnkgZm9jdXMgb3V0c2lkZSBldmVudCB3aGVuIHdlJ3ZlXG4gICAgICAgICAgICAvLyBhbHJlYWR5IGhhZCBhIHBvaW50ZXIgZG93biBvdXRzaWRlIGV2ZW50LlxuICAgICAgICAgICAgaWYgKGV2ZW50LmRldGFpbC5vcmlnaW5hbEV2ZW50LnR5cGUgPT09ICdmb2N1c2luJyAmJiBoYXNQb2ludGVyRG93bk91dHNpZGVSZWYuY3VycmVudCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH0pKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudEltcGwgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZURpYWxvZzogX19zY29wZURpYWxvZyAsIHRyYXBGb2N1czogdHJhcEZvY3VzICwgb25PcGVuQXV0b0ZvY3VzOiBvbk9wZW5BdXRvRm9jdXMgLCBvbkNsb3NlQXV0b0ZvY3VzOiBvbkNsb3NlQXV0b0ZvY3VzICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgY29udGVudFJlZiA9ICQ2N1VIbSR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDY3VUhtJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRlbnRSZWYpOyAvLyBNYWtlIHN1cmUgdGhlIHdob2xlIHRyZWUgaGFzIGZvY3VzIGd1YXJkcyBhcyBvdXIgYERpYWxvZ2Agd2lsbCBiZVxuICAgIC8vIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIERPTSAoYmVhY3VzZSBvZiB0aGUgYFBvcnRhbGApXG4gICAgJDY3VUhtJHVzZUZvY3VzR3VhcmRzKCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJEZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRGb2N1c1Njb3BlLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGxvb3A6IHRydWUsXG4gICAgICAgIHRyYXBwZWQ6IHRyYXBGb2N1cyxcbiAgICAgICAgb25Nb3VudEF1dG9Gb2N1czogb25PcGVuQXV0b0ZvY3VzLFxuICAgICAgICBvblVubW91bnRBdXRvRm9jdXM6IG9uQ2xvc2VBdXRvRm9jdXNcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSREaXNtaXNzYWJsZUxheWVyLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICByb2xlOiBcImRpYWxvZ1wiLFxuICAgICAgICBpZDogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiBjb250ZXh0LmRlc2NyaXB0aW9uSWQsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGNvbnRleHQudGl0bGVJZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRnZXRTdGF0ZShjb250ZXh0Lm9wZW4pXG4gICAgfSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkRpc21pc3M6ICgpPT5jb250ZXh0Lm9uT3BlbkNoYW5nZShmYWxzZSlcbiAgICB9KSkpLCBmYWxzZSk7XG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ1RpdGxlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FID0gJ0RpYWxvZ1RpdGxlJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQxNmY3NjM4ZTRhMzRiOTA5ID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi50aXRsZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUuaDIsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGlkOiBjb250ZXh0LnRpdGxlSWRcbiAgICB9LCB0aXRsZVByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDE2Zjc2MzhlNGEzNGI5MDksIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nRGVzY3JpcHRpb25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERFU0NSSVBUSU9OX05BTUUgPSAnRGlhbG9nRGVzY3JpcHRpb24nO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDk0ZTk0YzJlYzJjOTU0ZDUgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZURpYWxvZzogX19zY29wZURpYWxvZyAsIC4uLmRlc2NyaXB0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fTkFNRSwgX19zY29wZURpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByaW1pdGl2ZS5wLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBpZDogY29udGV4dC5kZXNjcmlwdGlvbklkXG4gICAgfSwgZGVzY3JpcHRpb25Qcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRERVNDUklQVElPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ0Nsb3NlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDTE9TRV9OQU1FID0gJ0RpYWxvZ0Nsb3NlJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi5jbG9zZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENMT1NFX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUuYnV0dG9uLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiXG4gICAgfSwgY2xvc2VQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgb25DbGljazogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQ2xpY2ssICgpPT5jb250ZXh0Lm9uT3BlbkNoYW5nZShmYWxzZSlcbiAgICAgICAgKVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDTE9TRV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gZnVuY3Rpb24gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGdldFN0YXRlKG9wZW4pIHtcbiAgICByZXR1cm4gb3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnO1xufVxuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX1dBUk5JTkdfTkFNRSA9ICdEaWFsb2dUaXRsZVdhcm5pbmcnO1xuY29uc3QgWyQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ2OWI2MmE0OTM5MzkxN2Q2LCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlV2FybmluZ0NvbnRleHRdID0gJDY3VUhtJGNyZWF0ZUNvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX1dBUk5JTkdfTkFNRSwge1xuICAgIGNvbnRlbnROYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLFxuICAgIHRpdGxlTmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX05BTUUsXG4gICAgZG9jc1NsdWc6ICdkaWFsb2cnXG59KTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUaXRsZVdhcm5pbmcgPSAoeyB0aXRsZUlkOiB0aXRsZUlkICB9KT0+e1xuICAgIGNvbnN0IHRpdGxlV2FybmluZ0NvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlV2FybmluZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX1dBUk5JTkdfTkFNRSk7XG4gICAgY29uc3QgTUVTU0FHRSA9IGBcXGAke3RpdGxlV2FybmluZ0NvbnRleHQuY29udGVudE5hbWV9XFxgIHJlcXVpcmVzIGEgXFxgJHt0aXRsZVdhcm5pbmdDb250ZXh0LnRpdGxlTmFtZX1cXGAgZm9yIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzaWJsZSBmb3Igc2NyZWVuIHJlYWRlciB1c2Vycy5cblxuSWYgeW91IHdhbnQgdG8gaGlkZSB0aGUgXFxgJHt0aXRsZVdhcm5pbmdDb250ZXh0LnRpdGxlTmFtZX1cXGAsIHlvdSBjYW4gd3JhcCBpdCB3aXRoIG91ciBWaXN1YWxseUhpZGRlbiBjb21wb25lbnQuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9yYWRpeC11aS5jb20vcHJpbWl0aXZlcy9kb2NzL2NvbXBvbmVudHMvJHt0aXRsZVdhcm5pbmdDb250ZXh0LmRvY3NTbHVnfWA7XG4gICAgJDY3VUhtJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAodGl0bGVJZCkge1xuICAgICAgICAgICAgY29uc3QgaGFzVGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aXRsZUlkKTtcbiAgICAgICAgICAgIGlmICghaGFzVGl0bGUpIHRocm93IG5ldyBFcnJvcihNRVNTQUdFKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgTUVTU0FHRSxcbiAgICAgICAgdGl0bGVJZFxuICAgIF0pO1xuICAgIHJldHVybiBudWxsO1xufTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRERVNDUklQVElPTl9XQVJOSU5HX05BTUUgPSAnRGlhbG9nRGVzY3JpcHRpb25XYXJuaW5nJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREZXNjcmlwdGlvbldhcm5pbmcgPSAoeyBjb250ZW50UmVmOiBjb250ZW50UmVmICwgZGVzY3JpcHRpb25JZDogZGVzY3JpcHRpb25JZCAgfSk9PntcbiAgICBjb25zdCBkZXNjcmlwdGlvbldhcm5pbmdDb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRERVNDUklQVElPTl9XQVJOSU5HX05BTUUpO1xuICAgIGNvbnN0IE1FU1NBR0UgPSBgV2FybmluZzogTWlzc2luZyBcXGBEZXNjcmlwdGlvblxcYCBvciBcXGBhcmlhLWRlc2NyaWJlZGJ5PXt1bmRlZmluZWR9XFxgIGZvciB7JHtkZXNjcmlwdGlvbldhcm5pbmdDb250ZXh0LmNvbnRlbnROYW1lfX0uYDtcbiAgICAkNjdVSG0kdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHZhciBfY29udGVudFJlZiRjdXJyZW50O1xuICAgICAgICBjb25zdCBkZXNjcmliZWRCeUlkID0gKF9jb250ZW50UmVmJGN1cnJlbnQgPSBjb250ZW50UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jb250ZW50UmVmJGN1cnJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZW50UmVmJGN1cnJlbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5Jyk7IC8vIGlmIHdlIGhhdmUgYW4gaWQgYW5kIHRoZSB1c2VyIGhhc24ndCBzZXQgYXJpYS1kZXNjcmliZWRieT17dW5kZWZpbmVkfVxuICAgICAgICBpZiAoZGVzY3JpcHRpb25JZCAmJiBkZXNjcmliZWRCeUlkKSB7XG4gICAgICAgICAgICBjb25zdCBoYXNEZXNjcmlwdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRlc2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgaWYgKCFoYXNEZXNjcmlwdGlvbikgY29uc29sZS53YXJuKE1FU1NBR0UpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBNRVNTQUdFLFxuICAgICAgICBjb250ZW50UmVmLFxuICAgICAgICBkZXNjcmlwdGlvbklkXG4gICAgXSk7XG4gICAgcmV0dXJuIG51bGw7XG59O1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkM2RkZjJkMTc0Y2UwMTE1MztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0ID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDJlMWUxMTIyY2YwY2JhODg7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGM2ZmRiODM3YjA3MGI0ZmYgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmQxZDA2Yzc5YmUxOWUxNztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2Y7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQxNmY3NjM4ZTRhMzRiOTA5O1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkOTRlOTRjMmVjMmM5NTRkNTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmMzljMmQxNjVjZDg2MWZlID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGZiYTJmYjdjZDc4MWI3YWM7XG5cblxuXG5cbmV4cG9ydCB7JDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGNjNzAyNzczYjhlYTNlNDEgYXMgY3JlYXRlRGlhbG9nU2NvcGUsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQzZGRmMmQxNzRjZTAxMTUzIGFzIERpYWxvZywgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDJlMWUxMTIyY2YwY2JhODggYXMgRGlhbG9nVHJpZ2dlciwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGRhZDdjOTU1NDJiYWNjZTAgYXMgRGlhbG9nUG9ydGFsLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmQxZDA2Yzc5YmUxOWUxNyBhcyBEaWFsb2dPdmVybGF5LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYjZkOTU2NWRlMWUwNjhjZiBhcyBEaWFsb2dDb250ZW50LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOSBhcyBEaWFsb2dUaXRsZSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDk0ZTk0YzJlYzJjOTU0ZDUgYXMgRGlhbG9nRGVzY3JpcHRpb24sICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjIGFzIERpYWxvZ0Nsb3NlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCBhcyBUcmlnZ2VyLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyBhcyBQb3J0YWwsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjNmZkYjgzN2IwNzBiNGZmIGFzIE92ZXJsYXksICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmOTkyMzMyODFlZmQwOGEwIGFzIFRpdGxlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMzkzZWRjNzk4YzQ3Mzc5ZCBhcyBEZXNjcmlwdGlvbiwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGYzOWMyZDE2NWNkODYxZmUgYXMgQ2xvc2UsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ2OWI2MmE0OTM5MzkxN2Q2IGFzIFdhcm5pbmdQcm92aWRlcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2NyZWF0ZUVsZW1lbnQgYXMgJDRrNEQwJGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgYXMgJDRrNEQwJGZvcndhcmRSZWYsIHVzZVJlZiBhcyAkNGs0RDAkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDRrNEQwJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkNGs0RDAkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ0azREMCR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZURpYWxvZ1Njb3BlIGFzICQ0azREMCRjcmVhdGVEaWFsb2dTY29wZSwgUm9vdCBhcyAkNGs0RDAkUm9vdCwgVHJpZ2dlciBhcyAkNGs0RDAkVHJpZ2dlciwgUG9ydGFsIGFzICQ0azREMCRQb3J0YWwsIE92ZXJsYXkgYXMgJDRrNEQwJE92ZXJsYXksIFdhcm5pbmdQcm92aWRlciBhcyAkNGs0RDAkV2FybmluZ1Byb3ZpZGVyLCBDb250ZW50IGFzICQ0azREMCRDb250ZW50LCBUaXRsZSBhcyAkNGs0RDAkVGl0bGUsIERlc2NyaXB0aW9uIGFzICQ0azREMCREZXNjcmlwdGlvbiwgQ2xvc2UgYXMgJDRrNEQwJENsb3NlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpYWxvZ1wiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3R0YWJsZSBhcyAkNGs0RDAkU2xvdHRhYmxlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRST09UX05BTUUgPSAnQWxlcnREaWFsb2cnO1xuY29uc3QgWyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRjcmVhdGVBbGVydERpYWxvZ0NvbnRleHQsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiODg5MTg4MDc1MWMyYzViXSA9ICQ0azREMCRjcmVhdGVDb250ZXh0U2NvcGUoJDkwNWY0YWU5MThhYWIxYWEkdmFyJFJPT1RfTkFNRSwgW1xuICAgICQ0azREMCRjcmVhdGVEaWFsb2dTY29wZVxuXSk7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUgPSAkNGs0RDAkY3JlYXRlRGlhbG9nU2NvcGUoKTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRkZTQ2NmRkODMxN2IwYjc1ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5hbGVydERpYWxvZ1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRSb290LCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCBhbGVydERpYWxvZ1Byb3BzLCB7XG4gICAgICAgIG1vZGFsOiB0cnVlXG4gICAgfSkpO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZGU0NjZkZDgzMTdiMGI3NSwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkUk9PVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nVHJpZ2dlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVFJJR0dFUl9OQU1FID0gJ0FsZXJ0RGlhbG9nVHJpZ2dlcic7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNmVkZDdhNjIzZWYwZjQwYiA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLnRyaWdnZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkVHJpZ2dlciwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDZlZGQ3YTYyM2VmMGY0MGIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ1BvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkUE9SVEFMX05BTUUgPSAnQWxlcnREaWFsb2dQb3J0YWwnO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmMgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLnBvcnRhbFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRQb3J0YWwsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIHBvcnRhbFByb3BzKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2NjBmMmJmZGI5ODY3MDZjLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ092ZXJsYXlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJE9WRVJMQVlfTkFNRSA9ICdBbGVydERpYWxvZ092ZXJsYXknO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGE3MDdhNDg5NWNlMjMyNTYgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5vdmVybGF5UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJE92ZXJsYXksICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIG92ZXJsYXlQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRPVkVSTEFZX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUUgPSAnQWxlcnREaWFsb2dDb250ZW50JztcbmNvbnN0IFskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQWxlcnREaWFsb2dDb250ZW50UHJvdmlkZXIsICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VBbGVydERpYWxvZ0NvbnRlbnRDb250ZXh0XSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRjcmVhdGVBbGVydERpYWxvZ0NvbnRleHQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRSk7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZCA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDRrNEQwJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNGs0RDAkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGVudFJlZik7XG4gICAgY29uc3QgY2FuY2VsUmVmID0gJDRrNEQwJHVzZVJlZihudWxsKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkV2FybmluZ1Byb3ZpZGVyLCB7XG4gICAgICAgIGNvbnRlbnROYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FLFxuICAgICAgICB0aXRsZU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUSVRMRV9OQU1FLFxuICAgICAgICBkb2NzU2x1ZzogXCJhbGVydC1kaWFsb2dcIlxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFsZXJ0RGlhbG9nQ29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlQWxlcnREaWFsb2csXG4gICAgICAgIGNhbmNlbFJlZjogY2FuY2VsUmVmXG4gICAgfSwgLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkQ29udGVudCwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJhbGVydGRpYWxvZ1wiXG4gICAgfSwgZGlhbG9nU2NvcGUsIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25PcGVuQXV0b0ZvY3VzOiAkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnMoY29udGVudFByb3BzLm9uT3BlbkF1dG9Gb2N1cywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9jYW5jZWxSZWYkY3VycmVudDtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAoX2NhbmNlbFJlZiRjdXJyZW50ID0gY2FuY2VsUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jYW5jZWxSZWYkY3VycmVudCA9PT0gdm9pZCAwIHx8IF9jYW5jZWxSZWYkY3VycmVudC5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJEb3duT3V0c2lkZTogKGV2ZW50KT0+ZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAsXG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlOiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJFNsb3R0YWJsZSwgbnVsbCwgY2hpbGRyZW4pLCBmYWxzZSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ5NGU2YWY0NWYwYWY0ZWZkLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dUaXRsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVElUTEVfTkFNRSA9ICdBbGVydERpYWxvZ1RpdGxlJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi50aXRsZVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRUaXRsZSwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgdGl0bGVQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFRJVExFX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dEZXNjcmlwdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkREVTQ1JJUFRJT05fTkFNRSA9ICdBbGVydERpYWxvZ0Rlc2NyaXB0aW9uJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhMjNiNTVjZGU1NWFkOWE1ID0gLyojX19QVVJFX18qLyAkNGs0RDAkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgLi4uZGVzY3JpcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkRGVzY3JpcHRpb24sICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGRlc2NyaXB0aW9uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTIzYjU1Y2RlNTVhZDlhNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkREVTQ1JJUFRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ0FjdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQUNUSU9OX05BTUUgPSAnQWxlcnREaWFsb2dBY3Rpb24nO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI0NTRmODE4YzU4ZWU4NWQgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5hY3Rpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkQ2xvc2UsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGFjdGlvblByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI0NTRmODE4YzU4ZWU4NWQsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFDVElPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nQ2FuY2VsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDQU5DRUxfTkFNRSA9ICdBbGVydERpYWxvZ0NhbmNlbCc7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMmY2N2E5MjM1NzFhYWVhMCA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLmNhbmNlbFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IGNhbmNlbFJlZjogY2FuY2VsUmVmICB9ID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZUFsZXJ0RGlhbG9nQ29udGVudENvbnRleHQoJDkwNWY0YWU5MThhYWIxYWEkdmFyJENBTkNFTF9OQU1FLCBfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgY29uc3QgcmVmID0gJDRrNEQwJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNhbmNlbFJlZik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJENsb3NlLCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCBjYW5jZWxQcm9wcywge1xuICAgICAgICByZWY6IHJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyZjY3YTkyMzU3MWFhZWEwLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDQU5DRUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciREZXNjcmlwdGlvbldhcm5pbmcgPSAoeyBjb250ZW50UmVmOiBjb250ZW50UmVmICB9KT0+e1xuICAgIGNvbnN0IE1FU1NBR0UgPSBgXFxgJHskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FfVxcYCByZXF1aXJlcyBhIGRlc2NyaXB0aW9uIGZvciB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2libGUgZm9yIHNjcmVlbiByZWFkZXIgdXNlcnMuXG5cbllvdSBjYW4gYWRkIGEgZGVzY3JpcHRpb24gdG8gdGhlIFxcYCR7JDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRX1cXGAgYnkgcGFzc2luZyBhIFxcYCR7JDkwNWY0YWU5MThhYWIxYWEkdmFyJERFU0NSSVBUSU9OX05BTUV9XFxgIGNvbXBvbmVudCBhcyBhIGNoaWxkLCB3aGljaCBhbHNvIGJlbmVmaXRzIHNpZ2h0ZWQgdXNlcnMgYnkgYWRkaW5nIHZpc2libGUgY29udGV4dCB0byB0aGUgZGlhbG9nLlxuXG5BbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB5b3VyIG93biBjb21wb25lbnQgYXMgYSBkZXNjcmlwdGlvbiBieSBhc3NpZ25pbmcgaXQgYW4gXFxgaWRcXGAgYW5kIHBhc3NpbmcgdGhlIHNhbWUgdmFsdWUgdG8gdGhlIFxcYGFyaWEtZGVzY3JpYmVkYnlcXGAgcHJvcCBpbiBcXGAkeyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUV9XFxgLiBJZiB0aGUgZGVzY3JpcHRpb24gaXMgY29uZnVzaW5nIG9yIGR1cGxpY2F0aXZlIGZvciBzaWdodGVkIHVzZXJzLCB5b3UgY2FuIHVzZSB0aGUgXFxgQHJhZGl4LXVpL3JlYWN0LXZpc3VhbGx5LWhpZGRlblxcYCBwcmltaXRpdmUgYXMgYSB3cmFwcGVyIGFyb3VuZCB5b3VyIGRlc2NyaXB0aW9uIGNvbXBvbmVudC5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL3JhZGl4LXVpLmNvbS9wcmltaXRpdmVzL2RvY3MvY29tcG9uZW50cy9hbGVydC1kaWFsb2dgO1xuICAgICQ0azREMCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgdmFyIF9jb250ZW50UmVmJGN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoKF9jb250ZW50UmVmJGN1cnJlbnQgPSBjb250ZW50UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jb250ZW50UmVmJGN1cnJlbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZW50UmVmJGN1cnJlbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JykpO1xuICAgICAgICBpZiAoIWhhc0Rlc2NyaXB0aW9uKSBjb25zb2xlLndhcm4oTUVTU0FHRSk7XG4gICAgfSwgW1xuICAgICAgICBNRVNTQUdFLFxuICAgICAgICBjb250ZW50UmVmXG4gICAgXSk7XG4gICAgcmV0dXJuIG51bGw7XG59O1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZGU0NjZkZDgzMTdiMGI3NTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0ID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDZlZGQ3YTYyM2VmMGY0MGI7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2NjBmMmJmZGI5ODY3MDZjO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGM2ZmRiODM3YjA3MGI0ZmYgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTcwN2E0ODk1Y2UyMzI1NjtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDk0ZTZhZjQ1ZjBhZjRlZmQ7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZTE5Y2Q1ZjkzNzZmOGNlZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiNDU0ZjgxOGM1OGVlODVkO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDg0OGM5YjdlYWQwZGY5NjcgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMmY2N2E5MjM1NzFhYWVhMDtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRmOTkyMzMyODFlZmQwOGEwID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGEyM2I1NWNkZTU1YWQ5YTU7XG5cblxuXG5cbmV4cG9ydCB7JDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI4ODkxODgwNzUxYzJjNWIgYXMgY3JlYXRlQWxlcnREaWFsb2dTY29wZSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGRlNDY2ZGQ4MzE3YjBiNzUgYXMgQWxlcnREaWFsb2csICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2ZWRkN2E2MjNlZjBmNDBiIGFzIEFsZXJ0RGlhbG9nVHJpZ2dlciwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmMgYXMgQWxlcnREaWFsb2dQb3J0YWwsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2IGFzIEFsZXJ0RGlhbG9nT3ZlcmxheSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDk0ZTZhZjQ1ZjBhZjRlZmQgYXMgQWxlcnREaWFsb2dDb250ZW50LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYjQ1NGY4MThjNThlZTg1ZCBhcyBBbGVydERpYWxvZ0FjdGlvbiwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDJmNjdhOTIzNTcxYWFlYTAgYXMgQWxlcnREaWFsb2dDYW5jZWwsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjcgYXMgQWxlcnREaWFsb2dUaXRsZSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGEyM2I1NWNkZTU1YWQ5YTUgYXMgQWxlcnREaWFsb2dEZXNjcmlwdGlvbiwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiBhcyBPdmVybGF5LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZTE5Y2Q1ZjkzNzZmOGNlZSBhcyBBY3Rpb24sICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ4NDhjOWI3ZWFkMGRmOTY3IGFzIENhbmNlbCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAgYXMgVGl0bGUsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkIGFzIERlc2NyaXB0aW9ufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsIi8qIVxuXHRDb3B5cmlnaHQgKGMpIDIwMTggSmVkIFdhdHNvbi5cblx0TGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcblx0aHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblx0dmFyIG5hdGl2ZUNvZGVTdHJpbmcgPSAnW25hdGl2ZSBjb2RlXSc7XG5cblx0ZnVuY3Rpb24gY2xhc3NOYW1lcygpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0aWYgKGFyZy5sZW5ndGgpIHtcblx0XHRcdFx0XHR2YXIgaW5uZXIgPSBjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZyk7XG5cdFx0XHRcdFx0aWYgKGlubmVyKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goaW5uZXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRpZiAoYXJnLnRvU3RyaW5nICE9PSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nICYmICFhcmcudG9TdHJpbmcudG9TdHJpbmcoKS5pbmNsdWRlcygnW25hdGl2ZSBjb2RlXScpKSB7XG5cdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZy50b1N0cmluZygpKTtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2goa2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDgyXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDgyKVwiPlxuPHBhdGggZD1cIk0xMiAxMy4wNTM4TDYuOTI2ODkgMTguMTI2OUM2Ljc4ODQ0IDE4LjI2NTQgNi42MTQ0IDE4LjMzNjIgNi40MDQ3OSAxOC4zMzk0QzYuMTk1MTkgMTguMzQyNiA2LjAxNzk1IDE4LjI3MTggNS44NzMwOSAxOC4xMjY5QzUuNzI4MiAxNy45ODIgNS42NTU3NiAxNy44MDY0IDUuNjU1NzYgMTcuNkM1LjY1NTc2IDE3LjM5MzYgNS43MjgyIDE3LjIxOCA1Ljg3MzA5IDE3LjA3MzFMMTAuOTQ2MiAxMkw1Ljg3MzA5IDYuOTI2ODlDNS43MzQ2MiA2Ljc4ODQ0IDUuNjYzNzkgNi42MTQ0IDUuNjYwNTkgNi40MDQ3OUM1LjY1NzM3IDYuMTk1MTkgNS43MjgyIDYuMDE3OTUgNS44NzMwOSA1Ljg3MzA5QzYuMDE3OTUgNS43MjgyIDYuMTkzNTkgNS42NTU3NiA2LjM5OTk5IDUuNjU1NzZDNi42MDYzOSA1LjY1NTc2IDYuNzgyMDIgNS43MjgyIDYuOTI2ODkgNS44NzMwOUwxMiAxMC45NDYyTDE3LjA3MzEgNS44NzMwOUMxNy4yMTE1IDUuNzM0NjIgMTcuMzg1NiA1LjY2Mzc5IDE3LjU5NTIgNS42NjA1OUMxNy44MDQ4IDUuNjU3MzcgMTcuOTgyIDUuNzI4MiAxOC4xMjY5IDUuODczMDlDMTguMjcxOCA2LjAxNzk1IDE4LjM0NDIgNi4xOTM1OSAxOC4zNDQyIDYuMzk5OTlDMTguMzQ0MiA2LjYwNjM5IDE4LjI3MTggNi43ODIwMiAxOC4xMjY5IDYuOTI2ODlMMTMuMDUzOCAxMkwxOC4xMjY5IDE3LjA3MzFDMTguMjY1NCAxNy4yMTE1IDE4LjMzNjIgMTcuMzg1NiAxOC4zMzk0IDE3LjU5NTJDMTguMzQyNiAxNy44MDQ4IDE4LjI3MTggMTcuOTgyIDE4LjEyNjkgMTguMTI2OUMxNy45ODIgMTguMjcxOCAxNy44MDY0IDE4LjM0NDIgMTcuNiAxOC4zNDQyQzE3LjM5MzYgMTguMzQ0MiAxNy4yMTggMTguMjcxOCAxNy4wNzMxIDE4LjEyNjlMMTIgMTMuMDUzOFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIixudWxsLG51bGwsbnVsbCwiaW1wb3J0IHt1c2VSZWYgYXMgJDhMdnZLJHVzZVJlZiwgdXNlTWVtbyBhcyAkOEx2dkskdXNlTWVtb30gZnJvbSBcInJlYWN0XCI7XG5cblxuZnVuY3Rpb24gJDAxMGMyOTEzZGJkMmZlM2QkZXhwb3J0JDVjYWUzNjFhZDgyZGNlOGIodmFsdWUpIHtcbiAgICBjb25zdCByZWYgPSAkOEx2dkskdXNlUmVmKHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBwcmV2aW91czogdmFsdWVcbiAgICB9KTsgLy8gV2UgY29tcGFyZSB2YWx1ZXMgYmVmb3JlIG1ha2luZyBhbiB1cGRhdGUgdG8gZW5zdXJlIHRoYXRcbiAgICAvLyBhIGNoYW5nZSBoYXMgYmVlbiBtYWRlLiBUaGlzIGVuc3VyZXMgdGhlIHByZXZpb3VzIHZhbHVlIGlzXG4gICAgLy8gcGVyc2lzdGVkIGNvcnJlY3RseSBiZXR3ZWVuIHJlbmRlcnMuXG4gICAgcmV0dXJuICQ4THZ2SyR1c2VNZW1vKCgpPT57XG4gICAgICAgIGlmIChyZWYuY3VycmVudC52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJlZi5jdXJyZW50LnByZXZpb3VzID0gcmVmLmN1cnJlbnQudmFsdWU7XG4gICAgICAgICAgICByZWYuY3VycmVudC52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWYuY3VycmVudC5wcmV2aW91cztcbiAgICB9LCBbXG4gICAgICAgIHZhbHVlXG4gICAgXSk7XG59XG5cblxuXG5cbmV4cG9ydCB7JDAxMGMyOTEzZGJkMmZlM2QkZXhwb3J0JDVjYWUzNjFhZDgyZGNlOGIgYXMgdXNlUHJldmlvdXN9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VTdGF0ZSBhcyAkOWd5R1IkdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJDlneUdSJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuXG5cblxuZnVuY3Rpb24gJGRiNmMzNDg1MTUwYjhlNjYkZXhwb3J0JDFhYjdhZTcxNDY5OGM0YjgoZWxlbWVudCkge1xuICAgIGNvbnN0IFtzaXplLCBzZXRTaXplXSA9ICQ5Z3lHUiR1c2VTdGF0ZSh1bmRlZmluZWQpO1xuICAgICQ5Z3lHUiR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIC8vIHByb3ZpZGUgc2l6ZSBhcyBlYXJseSBhcyBwb3NzaWJsZVxuICAgICAgICAgICAgc2V0U2l6ZSh7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBlbGVtZW50Lm9mZnNldEhlaWdodFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcyk9PntcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZW50cmllcykpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2Ugb25seSBvYnNlcnZlIHRoZSBvbmUgZWxlbWVudCwgd2UgZG9uJ3QgbmVlZCB0byBsb29wIG92ZXIgdGhlXG4gICAgICAgICAgICAgICAgLy8gYXJyYXlcbiAgICAgICAgICAgICAgICBpZiAoIWVudHJpZXMubGVuZ3RoKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3QgZW50cnkgPSBlbnRyaWVzWzBdO1xuICAgICAgICAgICAgICAgIGxldCB3aWR0aDtcbiAgICAgICAgICAgICAgICBsZXQgaGVpZ2h0O1xuICAgICAgICAgICAgICAgIGlmICgnYm9yZGVyQm94U2l6ZScgaW4gZW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9yZGVyU2l6ZUVudHJ5ID0gZW50cnlbJ2JvcmRlckJveFNpemUnXTsgLy8gaXJvbiBvdXQgZGlmZmVyZW5jZXMgYmV0d2VlbiBicm93c2Vyc1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib3JkZXJTaXplID0gQXJyYXkuaXNBcnJheShib3JkZXJTaXplRW50cnkpID8gYm9yZGVyU2l6ZUVudHJ5WzBdIDogYm9yZGVyU2l6ZUVudHJ5O1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGJvcmRlclNpemVbJ2lubGluZVNpemUnXTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gYm9yZGVyU2l6ZVsnYmxvY2tTaXplJ107XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGJyb3dzZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBgYm9yZGVyQm94U2l6ZWBcbiAgICAgICAgICAgICAgICAgICAgLy8gd2UgY2FsY3VsYXRlIGl0IG91cnNlbHZlcyB0byBnZXQgdGhlIGNvcnJlY3QgYm9yZGVyIGJveC5cbiAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0U2l6ZSh7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgYm94OiAnYm9yZGVyLWJveCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuICgpPT5yZXNpemVPYnNlcnZlci51bm9ic2VydmUoZWxlbWVudClcbiAgICAgICAgICAgIDtcbiAgICAgICAgfSBlbHNlIC8vIFdlIG9ubHkgd2FudCB0byByZXNldCB0byBgdW5kZWZpbmVkYCB3aGVuIHRoZSBlbGVtZW50IGJlY29tZXMgYG51bGxgLFxuICAgICAgICAvLyBub3QgaWYgaXQgY2hhbmdlcyB0byBhbm90aGVyIGVsZW1lbnQuXG4gICAgICAgIHNldFNpemUodW5kZWZpbmVkKTtcbiAgICB9LCBbXG4gICAgICAgIGVsZW1lbnRcbiAgICBdKTtcbiAgICByZXR1cm4gc2l6ZTtcbn1cblxuXG5cblxuZXhwb3J0IHskZGI2YzM0ODUxNTBiOGU2NiRleHBvcnQkMWFiN2FlNzE0Njk4YzRiOCBhcyB1c2VTaXplfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkMWJwdlMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkMWJwdlMkZm9yd2FyZFJlZiwgdXNlU3RhdGUgYXMgJDFicHZTJHVzZVN0YXRlLCB1c2VSZWYgYXMgJDFicHZTJHVzZVJlZiwgdXNlRWZmZWN0IGFzICQxYnB2UyR1c2VFZmZlY3QsIGNyZWF0ZUVsZW1lbnQgYXMgJDFicHZTJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDFicHZTJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQxYnB2UyRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkMWJwdlMkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICQxYnB2UyR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge3VzZVByZXZpb3VzIGFzICQxYnB2UyR1c2VQcmV2aW91c30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtcHJldmlvdXNcIjtcbmltcG9ydCB7dXNlU2l6ZSBhcyAkMWJwdlMkdXNlU2l6ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2Utc2l6ZVwiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkMWJwdlMkUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQxYnB2UyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ2hlY2tib3hcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGU2OThhNzJlOTMyNDAzNDYkdmFyJENIRUNLQk9YX05BTUUgPSAnQ2hlY2tib3gnO1xuY29uc3QgWyRlNjk4YTcyZTkzMjQwMzQ2JHZhciRjcmVhdGVDaGVja2JveENvbnRleHQsICRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCRiNTY2YzRmZjU0ODhlYTAxXSA9ICQxYnB2UyRjcmVhdGVDb250ZXh0U2NvcGUoJGU2OThhNzJlOTMyNDAzNDYkdmFyJENIRUNLQk9YX05BTUUpO1xuY29uc3QgWyRlNjk4YTcyZTkzMjQwMzQ2JHZhciRDaGVja2JveFByb3ZpZGVyLCAkZTY5OGE3MmU5MzI0MDM0NiR2YXIkdXNlQ2hlY2tib3hDb250ZXh0XSA9ICRlNjk4YTcyZTkzMjQwMzQ2JHZhciRjcmVhdGVDaGVja2JveENvbnRleHQoJGU2OThhNzJlOTMyNDAzNDYkdmFyJENIRUNLQk9YX05BTUUpO1xuY29uc3QgJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JDQ4NTEzZjZiOWY4Y2U2MmQgPSAvKiNfX1BVUkVfXyovICQxYnB2UyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUNoZWNrYm94OiBfX3Njb3BlQ2hlY2tib3ggLCBuYW1lOiBuYW1lICwgY2hlY2tlZDogY2hlY2tlZFByb3AgLCBkZWZhdWx0Q2hlY2tlZDogZGVmYXVsdENoZWNrZWQgLCByZXF1aXJlZDogcmVxdWlyZWQgLCBkaXNhYmxlZDogZGlzYWJsZWQgLCB2YWx1ZTogdmFsdWUgPSAnb24nICwgb25DaGVja2VkQ2hhbmdlOiBvbkNoZWNrZWRDaGFuZ2UgLCAuLi5jaGVja2JveFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBbYnV0dG9uLCBzZXRCdXR0b25dID0gJDFicHZTJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQxYnB2UyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldEJ1dHRvbihub2RlKVxuICAgICk7XG4gICAgY29uc3QgaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYgPSAkMWJwdlMkdXNlUmVmKGZhbHNlKTsgLy8gV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBieSBkZWZhdWx0IHNvIHRoYXQgZXZlbnRzIGJ1YmJsZSB0byBmb3JtcyB3aXRob3V0IEpTIChTU1IpXG4gICAgY29uc3QgaXNGb3JtQ29udHJvbCA9IGJ1dHRvbiA/IEJvb2xlYW4oYnV0dG9uLmNsb3Nlc3QoJ2Zvcm0nKSkgOiB0cnVlO1xuICAgIGNvbnN0IFtjaGVja2VkID0gZmFsc2UsIHNldENoZWNrZWRdID0gJDFicHZTJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogY2hlY2tlZFByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0Q2hlY2tlZCxcbiAgICAgICAgb25DaGFuZ2U6IG9uQ2hlY2tlZENoYW5nZVxuICAgIH0pO1xuICAgIGNvbnN0IGluaXRpYWxDaGVja2VkU3RhdGVSZWYgPSAkMWJwdlMkdXNlUmVmKGNoZWNrZWQpO1xuICAgICQxYnB2UyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgZm9ybSA9IGJ1dHRvbiA9PT0gbnVsbCB8fCBidXR0b24gPT09IHZvaWQgMCA/IHZvaWQgMCA6IGJ1dHRvbi5mb3JtO1xuICAgICAgICBpZiAoZm9ybSkge1xuICAgICAgICAgICAgY29uc3QgcmVzZXQgPSAoKT0+c2V0Q2hlY2tlZChpbml0aWFsQ2hlY2tlZFN0YXRlUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBmb3JtLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2V0JywgcmVzZXQpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT5mb3JtLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2V0JywgcmVzZXQpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGJ1dHRvbixcbiAgICAgICAgc2V0Q2hlY2tlZFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxYnB2UyRjcmVhdGVFbGVtZW50KCRlNjk4YTcyZTkzMjQwMzQ2JHZhciRDaGVja2JveFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlQ2hlY2tib3gsXG4gICAgICAgIHN0YXRlOiBjaGVja2VkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICB9LCAvKiNfX1BVUkVfXyovICQxYnB2UyRjcmVhdGVFbGVtZW50KCQxYnB2UyRQcmltaXRpdmUuYnV0dG9uLCAkMWJwdlMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICByb2xlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIFwiYXJpYS1jaGVja2VkXCI6ICRlNjk4YTcyZTkzMjQwMzQ2JHZhciRpc0luZGV0ZXJtaW5hdGUoY2hlY2tlZCkgPyAnbWl4ZWQnIDogY2hlY2tlZCxcbiAgICAgICAgXCJhcmlhLXJlcXVpcmVkXCI6IHJlcXVpcmVkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogJGU2OThhNzJlOTMyNDAzNDYkdmFyJGdldFN0YXRlKGNoZWNrZWQpLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICB9LCBjaGVja2JveFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbktleURvd246ICQxYnB2UyRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbktleURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIEFjY29yZGluZyB0byBXQUkgQVJJQSwgQ2hlY2tib3hlcyBkb24ndCBhY3RpdmF0ZSBvbiBlbnRlciBrZXlwcmVzc1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uQ2xpY2s6ICQxYnB2UyRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBzZXRDaGVja2VkKChwcmV2Q2hlY2tlZCk9PiRlNjk4YTcyZTkzMjQwMzQ2JHZhciRpc0luZGV0ZXJtaW5hdGUocHJldkNoZWNrZWQpID8gdHJ1ZSA6ICFwcmV2Q2hlY2tlZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChpc0Zvcm1Db250cm9sKSB7XG4gICAgICAgICAgICAgICAgaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYuY3VycmVudCA9IGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7IC8vIGlmIGNoZWNrYm94IGlzIGluIGEgZm9ybSwgc3RvcCBwcm9wYWdhdGlvbiBmcm9tIHRoZSBidXR0b24gc28gdGhhdCB3ZSBvbmx5IHByb3BhZ2F0ZVxuICAgICAgICAgICAgICAgIC8vIG9uZSBjbGljayBldmVudCAoZnJvbSB0aGUgaW5wdXQpLiBXZSBwcm9wYWdhdGUgY2hhbmdlcyBmcm9tIGFuIGlucHV0IHNvIHRoYXQgbmF0aXZlXG4gICAgICAgICAgICAgICAgLy8gZm9ybSB2YWxpZGF0aW9uIHdvcmtzIGFuZCBmb3JtIGV2ZW50cyByZWZsZWN0IGNoZWNrYm94IHVwZGF0ZXMuXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZi5jdXJyZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KSksIGlzRm9ybUNvbnRyb2wgJiYgLyojX19QVVJFX18qLyAkMWJwdlMkY3JlYXRlRWxlbWVudCgkZTY5OGE3MmU5MzI0MDM0NiR2YXIkQnViYmxlSW5wdXQsIHtcbiAgICAgICAgY29udHJvbDogYnV0dG9uLFxuICAgICAgICBidWJibGVzOiAhaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYuY3VycmVudCxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBjaGVja2VkOiBjaGVja2VkLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWQsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCAvLyBXZSB0cmFuc2Zvcm0gYmVjYXVzZSB0aGUgaW5wdXQgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJ1dCB3ZSBoYXZlXG4gICAgICAgICxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTEwMCUpJ1xuICAgICAgICB9XG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JDQ4NTEzZjZiOWY4Y2U2MmQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGU2OThhNzJlOTMyNDAzNDYkdmFyJENIRUNLQk9YX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQ2hlY2tib3hJbmRpY2F0b3JcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGU2OThhNzJlOTMyNDAzNDYkdmFyJElORElDQVRPUl9OQU1FID0gJ0NoZWNrYm94SW5kaWNhdG9yJztcbmNvbnN0ICRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCQ1OWFhZDczOGY1MWQxYzA1ID0gLyojX19QVVJFX18qLyAkMWJwdlMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVDaGVja2JveDogX19zY29wZUNoZWNrYm94ICwgZm9yY2VNb3VudDogZm9yY2VNb3VudCAsIC4uLmluZGljYXRvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGU2OThhNzJlOTMyNDAzNDYkdmFyJHVzZUNoZWNrYm94Q29udGV4dCgkZTY5OGE3MmU5MzI0MDM0NiR2YXIkSU5ESUNBVE9SX05BTUUsIF9fc2NvcGVDaGVja2JveCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDFicHZTJGNyZWF0ZUVsZW1lbnQoJDFicHZTJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgJGU2OThhNzJlOTMyNDAzNDYkdmFyJGlzSW5kZXRlcm1pbmF0ZShjb250ZXh0LnN0YXRlKSB8fCBjb250ZXh0LnN0YXRlID09PSB0cnVlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMWJwdlMkY3JlYXRlRWxlbWVudCgkMWJwdlMkUHJpbWl0aXZlLnNwYW4sICQxYnB2UyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkZTY5OGE3MmU5MzI0MDM0NiR2YXIkZ2V0U3RhdGUoY29udGV4dC5zdGF0ZSksXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBjb250ZXh0LmRpc2FibGVkID8gJycgOiB1bmRlZmluZWRcbiAgICB9LCBpbmRpY2F0b3JQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JDU5YWFkNzM4ZjUxZDFjMDUsIHtcbiAgICBkaXNwbGF5TmFtZTogJGU2OThhNzJlOTMyNDAzNDYkdmFyJElORElDQVRPUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8gY29uc3QgJGU2OThhNzJlOTMyNDAzNDYkdmFyJEJ1YmJsZUlucHV0ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgY29udHJvbDogY29udHJvbCAsIGNoZWNrZWQ6IGNoZWNrZWQgLCBidWJibGVzOiBidWJibGVzID0gdHJ1ZSAsIC4uLmlucHV0UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHJlZiA9ICQxYnB2UyR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJldkNoZWNrZWQgPSAkMWJwdlMkdXNlUHJldmlvdXMoY2hlY2tlZCk7XG4gICAgY29uc3QgY29udHJvbFNpemUgPSAkMWJwdlMkdXNlU2l6ZShjb250cm9sKTsgLy8gQnViYmxlIGNoZWNrZWQgY2hhbmdlIHRvIHBhcmVudHMgKGUuZyBmb3JtIGNoYW5nZSBldmVudClcbiAgICAkMWJwdlMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGlucHV0UHJvdG8gPSB3aW5kb3cuSFRNTElucHV0RWxlbWVudC5wcm90b3R5cGU7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGlucHV0UHJvdG8sICdjaGVja2VkJyk7XG4gICAgICAgIGNvbnN0IHNldENoZWNrZWQgPSBkZXNjcmlwdG9yLnNldDtcbiAgICAgICAgaWYgKHByZXZDaGVja2VkICE9PSBjaGVja2VkICYmIHNldENoZWNrZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdjbGljaycsIHtcbiAgICAgICAgICAgICAgICBidWJibGVzOiBidWJibGVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlucHV0LmluZGV0ZXJtaW5hdGUgPSAkZTY5OGE3MmU5MzI0MDM0NiR2YXIkaXNJbmRldGVybWluYXRlKGNoZWNrZWQpO1xuICAgICAgICAgICAgc2V0Q2hlY2tlZC5jYWxsKGlucHV0LCAkZTY5OGE3MmU5MzI0MDM0NiR2YXIkaXNJbmRldGVybWluYXRlKGNoZWNrZWQpID8gZmFsc2UgOiBjaGVja2VkKTtcbiAgICAgICAgICAgIGlucHV0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBwcmV2Q2hlY2tlZCxcbiAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgYnViYmxlc1xuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxYnB2UyRjcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwgJDFicHZTJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgIGRlZmF1bHRDaGVja2VkOiAkZTY5OGE3MmU5MzI0MDM0NiR2YXIkaXNJbmRldGVybWluYXRlKGNoZWNrZWQpID8gZmFsc2UgOiBjaGVja2VkXG4gICAgfSwgaW5wdXRQcm9wcywge1xuICAgICAgICB0YWJJbmRleDogLTEsXG4gICAgICAgIHJlZjogcmVmLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4ucHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAuLi5jb250cm9sU2l6ZSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgIG1hcmdpbjogMFxuICAgICAgICB9XG4gICAgfSkpO1xufTtcbmZ1bmN0aW9uICRlNjk4YTcyZTkzMjQwMzQ2JHZhciRpc0luZGV0ZXJtaW5hdGUoY2hlY2tlZCkge1xuICAgIHJldHVybiBjaGVja2VkID09PSAnaW5kZXRlcm1pbmF0ZSc7XG59XG5mdW5jdGlvbiAkZTY5OGE3MmU5MzI0MDM0NiR2YXIkZ2V0U3RhdGUoY2hlY2tlZCkge1xuICAgIHJldHVybiAkZTY5OGE3MmU5MzI0MDM0NiR2YXIkaXNJbmRldGVybWluYXRlKGNoZWNrZWQpID8gJ2luZGV0ZXJtaW5hdGUnIDogY2hlY2tlZCA/ICdjaGVja2VkJyA6ICd1bmNoZWNrZWQnO1xufVxuY29uc3QgJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkZTY5OGE3MmU5MzI0MDM0NiRleHBvcnQkNDg1MTNmNmI5ZjhjZTYyZDtcbmNvbnN0ICRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCRhZGI1ODQ3MzdkNzEyYjcwID0gJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JDU5YWFkNzM4ZjUxZDFjMDU7XG5cblxuXG5cbmV4cG9ydCB7JGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JGI1NjZjNGZmNTQ4OGVhMDEgYXMgY3JlYXRlQ2hlY2tib3hTY29wZSwgJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JDQ4NTEzZjZiOWY4Y2U2MmQgYXMgQ2hlY2tib3gsICRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCQ1OWFhZDczOGY1MWQxYzA1IGFzIENoZWNrYm94SW5kaWNhdG9yLCAkZTY5OGE3MmU5MzI0MDM0NiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkZTY5OGE3MmU5MzI0MDM0NiRleHBvcnQkYWRiNTg0NzM3ZDcxMmI3MCBhcyBJbmRpY2F0b3J9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA4NVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA4NSlcIj5cbjxwYXRoIGQ9XCJNMTEuOTk5NyAxOC43NUMxMS43ODcxIDE4Ljc1IDExLjYwOSAxOC42NzgxIDExLjQ2NTQgMTguNTM0NEMxMS4zMjE4IDE4LjM5MDYgMTEuMjUgMTguMjEyNSAxMS4yNSAxOFYxMi43NUg1Ljk5OTk3QzUuNzg3NDcgMTIuNzUgNS42MDkzNiAxMi42NzggNS40NjU2MyAxMi41MzQyQzUuMzIxODggMTIuMzkwNCA1LjI1IDEyLjIxMjIgNS4yNSAxMS45OTk3QzUuMjUgMTEuNzg3MSA1LjMyMTg4IDExLjYwOSA1LjQ2NTYzIDExLjQ2NTRDNS42MDkzNiAxMS4zMjE4IDUuNzg3NDcgMTEuMjUgNS45OTk5NyAxMS4yNUgxMS4yNVY1Ljk5OTk3QzExLjI1IDUuNzg3NDcgMTEuMzIxOSA1LjYwOTM1IDExLjQ2NTcgNS40NjU2QzExLjYwOTUgNS4zMjE4NyAxMS43ODc3IDUuMjUgMTIuMDAwMyA1LjI1QzEyLjIxMjkgNS4yNSAxMi4zOTEgNS4zMjE4NyAxMi41MzQ2IDUuNDY1NkMxMi42NzgyIDUuNjA5MzUgMTIuNzQ5OSA1Ljc4NzQ3IDEyLjc0OTkgNS45OTk5N1YxMS4yNUgxOEMxOC4yMTI1IDExLjI1IDE4LjM5MDYgMTEuMzIxOSAxOC41MzQ0IDExLjQ2NTdDMTguNjc4MSAxMS42MDk1IDE4Ljc1IDExLjc4NzcgMTguNzUgMTIuMDAwM0MxOC43NSAxMi4yMTI5IDE4LjY3ODEgMTIuMzkxIDE4LjUzNDQgMTIuNTM0NkMxOC4zOTA2IDEyLjY3ODIgMTguMjEyNSAxMi43NSAxOCAxMi43NUgxMi43NDk5VjE4QzEyLjc0OTkgMTguMjEyNSAxMi42NzggMTguMzkwNiAxMi41MzQyIDE4LjUzNDRDMTIuMzkwNCAxOC42NzgxIDEyLjIxMjIgMTguNzUgMTEuOTk5NyAxOC43NVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIk0xMiAxNC42NzdhLjkzLjkzIDAgMCAxLS4zNC0uMDY2Ljg0Ljg0IDAgMCAxLS4yOTMtLjE5TDYuODczIDkuOTI3YS43MTcuNzE3IDAgMCAxLS4yMTctLjUyN2MwLS4yMDYuMDcyLS4zODIuMjE3LS41MjdhLjcxNy43MTcgMCAwIDEgLjUyNy0uMjE3Yy4yMDYgMCAuMzgyLjA3Mi41MjcuMjE3TDEyIDEyLjk0Nmw0LjA3My00LjA3M2EuNzE3LjcxNyAwIDAgMSAuNTI3LS4yMTdjLjIwNiAwIC4zODIuMDcyLjUyNy4yMTcuMTQ1LjE0NS4yMTcuMzIuMjE3LjUyN2EuNzE3LjcxNyAwIDAgMS0uMjE3LjUyN2wtNC40OTQgNC40OTRhLjgzLjgzIDAgMCAxLS42MzMuMjU2WlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48ZyBpZD1cImljb246IGFycm93LWxlZnQgKHJlZ3VsYXIpIFtGQV1cIiBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzc2Nl8yNTkwKVwiPlxuPHBhdGggaWQ9XCJwYXRoXCIgZD1cIk05LjIwNzQxIDE2LjU2OTZMOS45MDM0NyAxNS44NzM1QzEwLjA2ODIgMTUuNzA4OCAxMC4wNjgyIDE1LjQ0MTYgOS45MDM0NyAxNS4yNzY5TDQuNDQ5NjggOS44MjMxMkgxNi40NTMxQzE2LjY4NjEgOS44MjMxMiAxNi44NzUgOS42MzQyMyAxNi44NzUgOS40MDEyNVY4LjQxNjg3QzE2Ljg3NSA4LjE4Mzg5IDE2LjY4NjEgNy45OTUgMTYuNDUzMSA3Ljk5NUg0LjQ0OTY4TDkuOTAzNDcgMi41NDEyMkMxMC4wNjgyIDIuMzc2NDcgMTAuMDY4MiAyLjEwOTM2IDkuOTAzNDcgMS45NDQ1OEw5LjIwNzQxIDEuMjQ4NTZDOS4wNDI2NyAxLjA4MzgxIDguNzc1NTUgMS4wODM4MSA4LjYxMDc3IDEuMjQ4NTZMMS4yNDg1NiA4LjYxMDc2QzEuMDgzODEgOC43NzU1IDEuMDgzODEgOS4wNDI2MiAxLjI0ODU2IDkuMjA3NEw4LjYxMDc3IDE2LjU2OTZDOC43NzU1MSAxNi43MzQzIDkuMDQyNjMgMTYuNzM0MyA5LjIwNzQxIDE2LjU2OTZaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48ZGVmcz5cbjxjbGlwUGF0aCBpZD1cImNsaXAwXzc2Nl8yNTkwXCI+XG48cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiBmaWxsPVwid2hpdGVcIi8+XG48L2NsaXBQYXRoPlxuPC9kZWZzPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfMjAyXzkwOTRcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF8yMDJfOTA5NClcIj5cbjxwYXRoIGQ9XCJNMTIuMDAxNiAyMS41QzEwLjY4NzcgMjEuNSA5LjQ1MjY4IDIxLjI1MDYgOC4yOTY1NSAyMC43NTJDNy4xNDA0IDIwLjI1MzMgNi4xMzQ3MiAxOS41NzY1IDUuMjc5NSAxOC43MjE3QzQuNDI0MjcgMTcuODY2OSAzLjc0NzIxIDE2Ljg2MTYgMy4yNDgzMyAxNS43MDZDMi43NDk0NCAxNC41NTA0IDIuNSAxMy4zMTU2IDIuNSAxMi4wMDE3QzIuNSAxMC42ODc3IDIuNzQ5MzMgOS40NTI2OCAzLjI0OCA4LjI5NjU1QzMuNzQ2NjcgNy4xNDA0IDQuNDIzNDIgNi4xMzQ3MiA1LjI3ODI1IDUuMjc5NUM2LjEzMzEgNC40MjQyNyA3LjEzODM0IDMuNzQ3MjEgOC4yOTM5OCAzLjI0ODMzQzkuNDQ5NTkgMi43NDk0NCAxMC42ODQ0IDIuNSAxMS45OTgzIDIuNUMxMy4zMTIyIDIuNSAxNC41NDczIDIuNzQ5MzMgMTUuNzAzNCAzLjI0OEMxNi44NTk2IDMuNzQ2NjcgMTcuODY1MiA0LjQyMzQyIDE4LjcyMDUgNS4yNzgyNUMxOS41NzU3IDYuMTMzMSAyMC4yNTI3IDcuMTM4MzQgMjAuNzUxNiA4LjI5Mzk4QzIxLjI1MDUgOS40NDk1OSAyMS41IDEwLjY4NDQgMjEuNSAxMS45OTgzQzIxLjUgMTMuMzEyMiAyMS4yNTA2IDE0LjU0NzMgMjAuNzUyIDE1LjcwMzRDMjAuMjUzMyAxNi44NTk2IDE5LjU3NjUgMTcuODY1MiAxOC43MjE3IDE4LjcyMDVDMTcuODY2OSAxOS41NzU3IDE2Ljg2MTYgMjAuMjUyNyAxNS43MDYgMjAuNzUxNkMxNC41NTA0IDIxLjI1MDUgMTMuMzE1NiAyMS41IDEyLjAwMTYgMjEuNVpNMTIgMjBDMTQuMjMzMyAyMCAxNi4xMjUgMTkuMjI1IDE3LjY3NSAxNy42NzVDMTkuMjI1IDE2LjEyNSAyMCAxNC4yMzMzIDIwIDEyQzIwIDExLjA2MTggMTkuODM5NyAxMC4xNTgzIDE5LjUxOTIgOS4yODk1OEMxOS4xOTg3IDguNDIwODYgMTguNzQxIDcuNjI2ODggMTguMTQ2MSA2LjkwNzY1TDYuOTA3NjUgMTguMTQ2MUM3LjYyNjg4IDE4Ljc0NzQgOC40MjA4NiAxOS4yMDY3IDkuMjg5NTggMTkuNTI0QzEwLjE1ODMgMTkuODQxMyAxMS4wNjE4IDIwIDEyIDIwWk01Ljg1MzgzIDE3LjA5MjNMMTcuMDkyMyA1Ljg1MzgyQzE2LjM3OTUgNS4yNDYxNCAxNS41ODc3IDQuNzg1MjQgMTQuNzE2OSA0LjQ3MTEzQzEzLjg0NjEgNC4xNTcwMyAxMi45NDA0IDMuOTk5OTcgMTIgMy45OTk5N0M5Ljc2NjY0IDMuOTk5OTcgNy44NzQ5OCA0Ljc3NDk4IDYuMzI0OTggNi4zMjQ5OEM0Ljc3NDk4IDcuODc0OTggMy45OTk5OCA5Ljc2NjY0IDMuOTk5OTggMTJDMy45OTk5OCAxMi45MzgyIDQuMTU4NjMgMTMuODQxNyA0LjQ3NTk1IDE0LjcxMDRDNC43OTMyNSAxNS41NzkxIDUuMjUyNTQgMTYuMzczMSA1Ljg1MzgzIDE3LjA5MjNaXCIgZmlsbD1cIiM0MjQ1NEJcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNzBcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNzApXCI+XG48cGF0aCBkPVwiTTMgMTQuNUMyLjg2NjY3IDE0LjUgMi43NSAxNC40NSAyLjY1IDE0LjM1QzIuNTUgMTQuMjUgMi41IDE0LjEzMzMgMi41IDE0QzIuNSAxMy44NjY3IDIuNTUgMTMuNzUgMi42NSAxMy42NUMyLjc1IDEzLjU1IDIuODY2NjcgMTMuNSAzIDEzLjVDMy4xMzMzMyAxMy41IDMuMjUgMTMuNTUgMy4zNSAxMy42NUMzLjQ1IDEzLjc1IDMuNSAxMy44NjY3IDMuNSAxNEMzLjUgMTQuMTMzMyAzLjQ1IDE0LjI1IDMuMzUgMTQuMzVDMy4yNSAxNC40NSAzLjEzMzMzIDE0LjUgMyAxNC41Wk0zIDEwLjVDMi44NjY2NyAxMC41IDIuNzUgMTAuNDUgMi42NSAxMC4zNUMyLjU1IDEwLjI1IDIuNSAxMC4xMzMzIDIuNSAxMEMyLjUgOS44NjY2NyAyLjU1IDkuNzUgMi42NSA5LjY1QzIuNzUgOS41NSAyLjg2NjY3IDkuNSAzIDkuNUMzLjEzMzMzIDkuNSAzLjI1IDkuNTUgMy4zNSA5LjY1QzMuNDUgOS43NSAzLjUgOS44NjY2NyAzLjUgMTBDMy41IDEwLjEzMzMgMy40NSAxMC4yNSAzLjM1IDEwLjM1QzMuMjUgMTAuNDUgMy4xMzMzMyAxMC41IDMgMTAuNVpNNiAxOC45MjMxQzUuNzM4NDcgMTguOTIzMSA1LjUxOTIzIDE4LjgzNDYgNS4zNDIzIDE4LjY1NzdDNS4xNjUzOCAxOC40ODA4IDUuMDc2OTMgMTguMjYxNSA1LjA3NjkzIDE4QzUuMDc2OTMgMTcuNzM4NSA1LjE2NTM4IDE3LjUxOTIgNS4zNDIzIDE3LjM0MjNDNS41MTkyMyAxNy4xNjU0IDUuNzM4NDcgMTcuMDc2OSA2IDE3LjA3NjlDNi4yNjE1MyAxNy4wNzY5IDYuNDgwNzcgMTcuMTY1NCA2LjY1NzcgMTcuMzQyM0M2LjgzNDYyIDE3LjUxOTIgNi45MjMwOCAxNy43Mzg1IDYuOTIzMDggMThDNi45MjMwOCAxOC4yNjE1IDYuODM0NjIgMTguNDgwOCA2LjY1NzcgMTguNjU3N0M2LjQ4MDc3IDE4LjgzNDYgNi4yNjE1MyAxOC45MjMxIDYgMTguOTIzMVpNNiAxNC45MjMxQzUuNzM4NDcgMTQuOTIzMSA1LjUxOTIzIDE0LjgzNDYgNS4zNDIzIDE0LjY1NzdDNS4xNjUzOCAxNC40ODA4IDUuMDc2OTMgMTQuMjYxNSA1LjA3NjkzIDE0QzUuMDc2OTMgMTMuNzM4NSA1LjE2NTM4IDEzLjUxOTIgNS4zNDIzIDEzLjM0MjNDNS41MTkyMyAxMy4xNjU0IDUuNzM4NDcgMTMuMDc2OSA2IDEzLjA3NjlDNi4yNjE1MyAxMy4wNzY5IDYuNDgwNzcgMTMuMTY1NCA2LjY1NzcgMTMuMzQyM0M2LjgzNDYyIDEzLjUxOTIgNi45MjMwOCAxMy43Mzg1IDYuOTIzMDggMTRDNi45MjMwOCAxNC4yNjE1IDYuODM0NjIgMTQuNDgwOCA2LjY1NzcgMTQuNjU3N0M2LjQ4MDc3IDE0LjgzNDYgNi4yNjE1MyAxNC45MjMxIDYgMTQuOTIzMVpNNiAxMC45MjMxQzUuNzM4NDcgMTAuOTIzMSA1LjUxOTIzIDEwLjgzNDYgNS4zNDIzIDEwLjY1NzdDNS4xNjUzOCAxMC40ODA4IDUuMDc2OTMgMTAuMjYxNSA1LjA3NjkzIDEwQzUuMDc2OTMgOS43Mzg0NyA1LjE2NTM4IDkuNTE5MjQgNS4zNDIzIDkuMzQyMzJDNS41MTkyMyA5LjE2NTM5IDUuNzM4NDcgOS4wNzY5MiA2IDkuMDc2OTJDNi4yNjE1MyA5LjA3NjkyIDYuNDgwNzcgOS4xNjUzOSA2LjY1NzcgOS4zNDIzMkM2LjgzNDYyIDkuNTE5MjQgNi45MjMwOCA5LjczODQ3IDYuOTIzMDggMTBDNi45MjMwOCAxMC4yNjE1IDYuODM0NjIgMTAuNDgwOCA2LjY1NzcgMTAuNjU3N0M2LjQ4MDc3IDEwLjgzNDYgNi4yNjE1MyAxMC45MjMxIDYgMTAuOTIzMVpNNiA2LjkyMzA4QzUuNzM4NDcgNi45MjMwOCA1LjUxOTIzIDYuODM0NjEgNS4zNDIzIDYuNjU3NjhDNS4xNjUzOCA2LjQ4MDc2IDUuMDc2OTMgNi4yNjE1MyA1LjA3NjkzIDZDNS4wNzY5MyA1LjczODQ3IDUuMTY1MzggNS41MTkyNCA1LjM0MjMgNS4zNDIzMkM1LjUxOTIzIDUuMTY1MzkgNS43Mzg0NyA1LjA3NjkzIDYgNS4wNzY5M0M2LjI2MTUzIDUuMDc2OTMgNi40ODA3NyA1LjE2NTM5IDYuNjU3NyA1LjM0MjMyQzYuODM0NjIgNS41MTkyNCA2LjkyMzA4IDUuNzM4NDcgNi45MjMwOCA2QzYuOTIzMDggNi4yNjE1MyA2LjgzNDYyIDYuNDgwNzYgNi42NTc3IDYuNjU3NjhDNi40ODA3NyA2LjgzNDYxIDYuMjYxNTMgNi45MjMwOCA2IDYuOTIzMDhaTTEwLjAwMjMgMTUuMzQ2MkM5LjYyODk3IDE1LjM0NjIgOS4zMTA5MSAxNS4yMTU1IDkuMDQ4MDggMTQuOTU0MkM4Ljc4NTI2IDE0LjY5MjkgOC42NTM4NSAxNC4zNzU2IDguNjUzODUgMTQuMDAyM0M4LjY1Mzg1IDEzLjYyOSA4Ljc4NDUxIDEzLjMxMDkgOS4wNDU4MyAxMy4wNDgxQzkuMzA3MTQgMTIuNzg1MyA5LjYyNDQ0IDEyLjY1MzggOS45OTc3MyAxMi42NTM4QzEwLjM3MSAxMi42NTM4IDEwLjY4OTEgMTIuNzg0NSAxMC45NTE5IDEzLjA0NThDMTEuMjE0NyAxMy4zMDcxIDExLjM0NjIgMTMuNjI0NCAxMS4zNDYyIDEzLjk5NzdDMTEuMzQ2MiAxNC4zNzEgMTEuMjE1NSAxNC42ODkxIDEwLjk1NDIgMTQuOTUxOUMxMC42OTI5IDE1LjIxNDcgMTAuMzc1NiAxNS4zNDYyIDEwLjAwMjMgMTUuMzQ2MlpNMTAuMDAyMyAxMS4zNDYyQzkuNjI4OTcgMTEuMzQ2MiA5LjMxMDkxIDExLjIxNTUgOS4wNDgwOCAxMC45NTQyQzguNzg1MjYgMTAuNjkyOSA4LjY1Mzg1IDEwLjM3NTYgOC42NTM4NSAxMC4wMDIzQzguNjUzODUgOS42Mjg5NyA4Ljc4NDUxIDkuMzEwOTEgOS4wNDU4MyA5LjA0ODA4QzkuMzA3MTQgOC43ODUyNiA5LjYyNDQ0IDguNjUzODUgOS45OTc3MyA4LjY1Mzg1QzEwLjM3MSA4LjY1Mzg1IDEwLjY4OTEgOC43ODQ1MSAxMC45NTE5IDkuMDQ1ODNDMTEuMjE0NyA5LjMwNzEzIDExLjM0NjIgOS42MjQ0MiAxMS4zNDYyIDkuOTk3NzNDMTEuMzQ2MiAxMC4zNzEgMTEuMjE1NSAxMC42ODkxIDEwLjk1NDIgMTAuOTUxOUMxMC42OTI5IDExLjIxNDcgMTAuMzc1NiAxMS4zNDYyIDEwLjAwMjMgMTEuMzQ2MlpNMTAgMTguOTIzMUM5LjczODQ3IDE4LjkyMzEgOS41MTkyMyAxOC44MzQ2IDkuMzQyMyAxOC42NTc3QzkuMTY1MzggMTguNDgwOCA5LjA3NjkyIDE4LjI2MTUgOS4wNzY5MiAxOEM5LjA3NjkyIDE3LjczODUgOS4xNjUzOCAxNy41MTkyIDkuMzQyMyAxNy4zNDIzQzkuNTE5MjMgMTcuMTY1NCA5LjczODQ3IDE3LjA3NjkgMTAgMTcuMDc2OUMxMC4yNjE1IDE3LjA3NjkgMTAuNDgwOCAxNy4xNjU0IDEwLjY1NzcgMTcuMzQyM0MxMC44MzQ2IDE3LjUxOTIgMTAuOTIzMSAxNy43Mzg1IDEwLjkyMzEgMThDMTAuOTIzMSAxOC4yNjE1IDEwLjgzNDYgMTguNDgwOCAxMC42NTc3IDE4LjY1NzdDMTAuNDgwOCAxOC44MzQ2IDEwLjI2MTUgMTguOTIzMSAxMCAxOC45MjMxWk0xMCA2LjkyMzA4QzkuNzM4NDcgNi45MjMwOCA5LjUxOTIzIDYuODM0NjEgOS4zNDIzIDYuNjU3NjhDOS4xNjUzOCA2LjQ4MDc2IDkuMDc2OTIgNi4yNjE1MyA5LjA3NjkyIDZDOS4wNzY5MiA1LjczODQ3IDkuMTY1MzggNS41MTkyNCA5LjM0MjMgNS4zNDIzMkM5LjUxOTIzIDUuMTY1MzkgOS43Mzg0NyA1LjA3NjkzIDEwIDUuMDc2OTNDMTAuMjYxNSA1LjA3NjkzIDEwLjQ4MDggNS4xNjUzOSAxMC42NTc3IDUuMzQyMzJDMTAuODM0NiA1LjUxOTI0IDEwLjkyMzEgNS43Mzg0NyAxMC45MjMxIDZDMTAuOTIzMSA2LjI2MTUzIDEwLjgzNDYgNi40ODA3NiAxMC42NTc3IDYuNjU3NjhDMTAuNDgwOCA2LjgzNDYxIDEwLjI2MTUgNi45MjMwOCAxMCA2LjkyMzA4Wk0xMCAyMS41QzkuODY2NjcgMjEuNSA5Ljc1IDIxLjQ1IDkuNjUgMjEuMzVDOS41NSAyMS4yNSA5LjUgMjEuMTMzMyA5LjUgMjFDOS41IDIwLjg2NjcgOS41NSAyMC43NSA5LjY1IDIwLjY1QzkuNzUgMjAuNTUgOS44NjY2NyAyMC41IDEwIDIwLjVDMTAuMTMzMyAyMC41IDEwLjI1IDIwLjU1IDEwLjM1IDIwLjY1QzEwLjQ1IDIwLjc1IDEwLjUgMjAuODY2NyAxMC41IDIxQzEwLjUgMjEuMTMzMyAxMC40NSAyMS4yNSAxMC4zNSAyMS4zNUMxMC4yNSAyMS40NSAxMC4xMzMzIDIxLjUgMTAgMjEuNVpNMTAgMy41QzkuODY2NjcgMy41IDkuNzUgMy40NSA5LjY1IDMuMzVDOS41NSAzLjI1IDkuNSAzLjEzMzMzIDkuNSAzQzkuNSAyLjg2NjY3IDkuNTUgMi43NSA5LjY1IDIuNjVDOS43NSAyLjU1IDkuODY2NjcgMi41IDEwIDIuNUMxMC4xMzMzIDIuNSAxMC4yNSAyLjU1IDEwLjM1IDIuNjVDMTAuNDUgMi43NSAxMC41IDIuODY2NjcgMTAuNSAzQzEwLjUgMy4xMzMzMyAxMC40NSAzLjI1IDEwLjM1IDMuMzVDMTAuMjUgMy40NSAxMC4xMzMzIDMuNSAxMCAzLjVaTTE0LjAwMjMgMTUuMzQ2MkMxMy42MjkgMTUuMzQ2MiAxMy4zMTA5IDE1LjIxNTUgMTMuMDQ4MSAxNC45NTQyQzEyLjc4NTMgMTQuNjkyOSAxMi42NTM4IDE0LjM3NTYgMTIuNjUzOCAxNC4wMDIzQzEyLjY1MzggMTMuNjI5IDEyLjc4NDUgMTMuMzEwOSAxMy4wNDU4IDEzLjA0ODFDMTMuMzA3MSAxMi43ODUzIDEzLjYyNDQgMTIuNjUzOCAxMy45OTc3IDEyLjY1MzhDMTQuMzcxIDEyLjY1MzggMTQuNjg5MSAxMi43ODQ1IDE0Ljk1MTkgMTMuMDQ1OEMxNS4yMTQ3IDEzLjMwNzEgMTUuMzQ2MiAxMy42MjQ0IDE1LjM0NjIgMTMuOTk3N0MxNS4zNDYyIDE0LjM3MSAxNS4yMTU1IDE0LjY4OTEgMTQuOTU0MiAxNC45NTE5QzE0LjY5MjkgMTUuMjE0NyAxNC4zNzU2IDE1LjM0NjIgMTQuMDAyMyAxNS4zNDYyWk0xNC4wMDIzIDExLjM0NjJDMTMuNjI5IDExLjM0NjIgMTMuMzEwOSAxMS4yMTU1IDEzLjA0ODEgMTAuOTU0MkMxMi43ODUzIDEwLjY5MjkgMTIuNjUzOCAxMC4zNzU2IDEyLjY1MzggMTAuMDAyM0MxMi42NTM4IDkuNjI4OTcgMTIuNzg0NSA5LjMxMDkxIDEzLjA0NTggOS4wNDgwOEMxMy4zMDcxIDguNzg1MjYgMTMuNjI0NCA4LjY1Mzg1IDEzLjk5NzcgOC42NTM4NUMxNC4zNzEgOC42NTM4NSAxNC42ODkxIDguNzg0NTEgMTQuOTUxOSA5LjA0NTgzQzE1LjIxNDcgOS4zMDcxMyAxNS4zNDYyIDkuNjI0NDIgMTUuMzQ2MiA5Ljk5NzczQzE1LjM0NjIgMTAuMzcxIDE1LjIxNTUgMTAuNjg5MSAxNC45NTQyIDEwLjk1MTlDMTQuNjkyOSAxMS4yMTQ3IDE0LjM3NTYgMTEuMzQ2MiAxNC4wMDIzIDExLjM0NjJaTTE0IDE4LjkyMzFDMTMuNzM4NSAxOC45MjMxIDEzLjUxOTIgMTguODM0NiAxMy4zNDIzIDE4LjY1NzdDMTMuMTY1NCAxOC40ODA4IDEzLjA3NjkgMTguMjYxNSAxMy4wNzY5IDE4QzEzLjA3NjkgMTcuNzM4NSAxMy4xNjU0IDE3LjUxOTIgMTMuMzQyMyAxNy4zNDIzQzEzLjUxOTIgMTcuMTY1NCAxMy43Mzg1IDE3LjA3NjkgMTQgMTcuMDc2OUMxNC4yNjE1IDE3LjA3NjkgMTQuNDgwOCAxNy4xNjU0IDE0LjY1NzcgMTcuMzQyM0MxNC44MzQ2IDE3LjUxOTIgMTQuOTIzMSAxNy43Mzg1IDE0LjkyMzEgMThDMTQuOTIzMSAxOC4yNjE1IDE0LjgzNDYgMTguNDgwOCAxNC42NTc3IDE4LjY1NzdDMTQuNDgwOCAxOC44MzQ2IDE0LjI2MTUgMTguOTIzMSAxNCAxOC45MjMxWk0xNCA2LjkyMzA4QzEzLjczODUgNi45MjMwOCAxMy41MTkyIDYuODM0NjEgMTMuMzQyMyA2LjY1NzY4QzEzLjE2NTQgNi40ODA3NiAxMy4wNzY5IDYuMjYxNTMgMTMuMDc2OSA2QzEzLjA3NjkgNS43Mzg0NyAxMy4xNjU0IDUuNTE5MjQgMTMuMzQyMyA1LjM0MjMyQzEzLjUxOTIgNS4xNjUzOSAxMy43Mzg1IDUuMDc2OTMgMTQgNS4wNzY5M0MxNC4yNjE1IDUuMDc2OTMgMTQuNDgwOCA1LjE2NTM5IDE0LjY1NzcgNS4zNDIzMkMxNC44MzQ2IDUuNTE5MjQgMTQuOTIzMSA1LjczODQ3IDE0LjkyMzEgNkMxNC45MjMxIDYuMjYxNTMgMTQuODM0NiA2LjQ4MDc2IDE0LjY1NzcgNi42NTc2OEMxNC40ODA4IDYuODM0NjEgMTQuMjYxNSA2LjkyMzA4IDE0IDYuOTIzMDhaTTE0IDIxLjVDMTMuODY2NyAyMS41IDEzLjc1IDIxLjQ1IDEzLjY1IDIxLjM1QzEzLjU1IDIxLjI1IDEzLjUgMjEuMTMzMyAxMy41IDIxQzEzLjUgMjAuODY2NyAxMy41NSAyMC43NSAxMy42NSAyMC42NUMxMy43NSAyMC41NSAxMy44NjY3IDIwLjUgMTQgMjAuNUMxNC4xMzMzIDIwLjUgMTQuMjUgMjAuNTUgMTQuMzUgMjAuNjVDMTQuNDUgMjAuNzUgMTQuNSAyMC44NjY3IDE0LjUgMjFDMTQuNSAyMS4xMzMzIDE0LjQ1IDIxLjI1IDE0LjM1IDIxLjM1QzE0LjI1IDIxLjQ1IDE0LjEzMzMgMjEuNSAxNCAyMS41Wk0xNCAzLjVDMTMuODY2NyAzLjUgMTMuNzUgMy40NSAxMy42NSAzLjM1QzEzLjU1IDMuMjUgMTMuNSAzLjEzMzMzIDEzLjUgM0MxMy41IDIuODY2NjcgMTMuNTUgMi43NSAxMy42NSAyLjY1QzEzLjc1IDIuNTUgMTMuODY2NyAyLjUgMTQgMi41QzE0LjEzMzMgMi41IDE0LjI1IDIuNTUgMTQuMzUgMi42NUMxNC40NSAyLjc1IDE0LjUgMi44NjY2NyAxNC41IDNDMTQuNSAzLjEzMzMzIDE0LjQ1IDMuMjUgMTQuMzUgMy4zNUMxNC4yNSAzLjQ1IDE0LjEzMzMgMy41IDE0IDMuNVpNMTggMTguOTIzMUMxNy43Mzg1IDE4LjkyMzEgMTcuNTE5MiAxOC44MzQ2IDE3LjM0MjMgMTguNjU3N0MxNy4xNjU0IDE4LjQ4MDggMTcuMDc2OSAxOC4yNjE1IDE3LjA3NjkgMThDMTcuMDc2OSAxNy43Mzg1IDE3LjE2NTQgMTcuNTE5MiAxNy4zNDIzIDE3LjM0MjNDMTcuNTE5MiAxNy4xNjU0IDE3LjczODUgMTcuMDc2OSAxOCAxNy4wNzY5QzE4LjI2MTUgMTcuMDc2OSAxOC40ODA4IDE3LjE2NTQgMTguNjU3NyAxNy4zNDIzQzE4LjgzNDYgMTcuNTE5MiAxOC45MjMxIDE3LjczODUgMTguOTIzMSAxOEMxOC45MjMxIDE4LjI2MTUgMTguODM0NiAxOC40ODA4IDE4LjY1NzcgMTguNjU3N0MxOC40ODA4IDE4LjgzNDYgMTguMjYxNSAxOC45MjMxIDE4IDE4LjkyMzFaTTE4IDE0LjkyMzFDMTcuNzM4NSAxNC45MjMxIDE3LjUxOTIgMTQuODM0NiAxNy4zNDIzIDE0LjY1NzdDMTcuMTY1NCAxNC40ODA4IDE3LjA3NjkgMTQuMjYxNSAxNy4wNzY5IDE0QzE3LjA3NjkgMTMuNzM4NSAxNy4xNjU0IDEzLjUxOTIgMTcuMzQyMyAxMy4zNDIzQzE3LjUxOTIgMTMuMTY1NCAxNy43Mzg1IDEzLjA3NjkgMTggMTMuMDc2OUMxOC4yNjE1IDEzLjA3NjkgMTguNDgwOCAxMy4xNjU0IDE4LjY1NzcgMTMuMzQyM0MxOC44MzQ2IDEzLjUxOTIgMTguOTIzMSAxMy43Mzg1IDE4LjkyMzEgMTRDMTguOTIzMSAxNC4yNjE1IDE4LjgzNDYgMTQuNDgwOCAxOC42NTc3IDE0LjY1NzdDMTguNDgwOCAxNC44MzQ2IDE4LjI2MTUgMTQuOTIzMSAxOCAxNC45MjMxWk0xOCAxMC45MjMxQzE3LjczODUgMTAuOTIzMSAxNy41MTkyIDEwLjgzNDYgMTcuMzQyMyAxMC42NTc3QzE3LjE2NTQgMTAuNDgwOCAxNy4wNzY5IDEwLjI2MTUgMTcuMDc2OSAxMEMxNy4wNzY5IDkuNzM4NDcgMTcuMTY1NCA5LjUxOTI0IDE3LjM0MjMgOS4zNDIzMkMxNy41MTkyIDkuMTY1MzkgMTcuNzM4NSA5LjA3NjkyIDE4IDkuMDc2OTJDMTguMjYxNSA5LjA3NjkyIDE4LjQ4MDggOS4xNjUzOSAxOC42NTc3IDkuMzQyMzJDMTguODM0NiA5LjUxOTI0IDE4LjkyMzEgOS43Mzg0NyAxOC45MjMxIDEwQzE4LjkyMzEgMTAuMjYxNSAxOC44MzQ2IDEwLjQ4MDggMTguNjU3NyAxMC42NTc3QzE4LjQ4MDggMTAuODM0NiAxOC4yNjE1IDEwLjkyMzEgMTggMTAuOTIzMVpNMTggNi45MjMwOEMxNy43Mzg1IDYuOTIzMDggMTcuNTE5MiA2LjgzNDYxIDE3LjM0MjMgNi42NTc2OEMxNy4xNjU0IDYuNDgwNzYgMTcuMDc2OSA2LjI2MTUzIDE3LjA3NjkgNkMxNy4wNzY5IDUuNzM4NDcgMTcuMTY1NCA1LjUxOTI0IDE3LjM0MjMgNS4zNDIzMkMxNy41MTkyIDUuMTY1MzkgMTcuNzM4NSA1LjA3NjkzIDE4IDUuMDc2OTNDMTguMjYxNSA1LjA3NjkzIDE4LjQ4MDggNS4xNjUzOSAxOC42NTc3IDUuMzQyMzJDMTguODM0NiA1LjUxOTI0IDE4LjkyMzEgNS43Mzg0NyAxOC45MjMxIDZDMTguOTIzMSA2LjI2MTUzIDE4LjgzNDYgNi40ODA3NiAxOC42NTc3IDYuNjU3NjhDMTguNDgwOCA2LjgzNDYxIDE4LjI2MTUgNi45MjMwOCAxOCA2LjkyMzA4Wk0yMSAxNC41QzIwLjg2NjcgMTQuNSAyMC43NSAxNC40NSAyMC42NSAxNC4zNUMyMC41NSAxNC4yNSAyMC41IDE0LjEzMzMgMjAuNSAxNEMyMC41IDEzLjg2NjcgMjAuNTUgMTMuNzUgMjAuNjUgMTMuNjVDMjAuNzUgMTMuNTUgMjAuODY2NyAxMy41IDIxIDEzLjVDMjEuMTMzMyAxMy41IDIxLjI1IDEzLjU1IDIxLjM1IDEzLjY1QzIxLjQ1IDEzLjc1IDIxLjUgMTMuODY2NyAyMS41IDE0QzIxLjUgMTQuMTMzMyAyMS40NSAxNC4yNSAyMS4zNSAxNC4zNUMyMS4yNSAxNC40NSAyMS4xMzMzIDE0LjUgMjEgMTQuNVpNMjEgMTAuNUMyMC44NjY3IDEwLjUgMjAuNzUgMTAuNDUgMjAuNjUgMTAuMzVDMjAuNTUgMTAuMjUgMjAuNSAxMC4xMzMzIDIwLjUgMTBDMjAuNSA5Ljg2NjY3IDIwLjU1IDkuNzUgMjAuNjUgOS42NUMyMC43NSA5LjU1IDIwLjg2NjcgOS41IDIxIDkuNUMyMS4xMzMzIDkuNSAyMS4yNSA5LjU1IDIxLjM1IDkuNjVDMjEuNDUgOS43NSAyMS41IDkuODY2NjcgMjEuNSAxMEMyMS41IDEwLjEzMzMgMjEuNDUgMTAuMjUgMjEuMzUgMTAuMzVDMjEuMjUgMTAuNDUgMjEuMTMzMyAxMC41IDIxIDEwLjVaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwOTFcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwOTEpXCI+XG48cGF0aCBkPVwiTTEyLjA1IDE5Ljc1QzkuODg3MTkgMTkuNzUgOC4wNDY0OSAxOC45OTc0IDYuNTI3OTEgMTcuNDkyM0M1LjAwOTMzIDE1Ljk4NzEgNC4yNTAwNCAxNC4xNTY0IDQuMjUwMDQgMTJWMTEuMjE5MkwyLjkyNjkxIDEyLjU0MjNDMi43ODg0NiAxMi42ODA3IDIuNjE0NDMgMTIuNzUxNiAyLjQwNDgxIDEyLjc1NDhDMi4xOTUyMSAxMi43NTggMi4wMTc5OCAxMi42ODcxIDEuODczMTEgMTIuNTQyM0MxLjcyODIxIDEyLjM5NzQgMS42NTU3NiAxMi4yMjE4IDEuNjU1NzYgMTIuMDE1M0MxLjY1NTc2IDExLjgwODkgMS43MjgyIDExLjYzMzMgMS44NzMwOSAxMS40ODg1TDQuMzY3MzEgOC45OTQyMkM0LjU0ODA4IDguODEzNDYgNC43NTg5NyA4LjcyMzA4IDQuOTk5OTkgOC43MjMwOEM1LjI0MSA4LjcyMzA4IDUuNDUxODkgOC44MTM0NiA1LjYzMjY2IDguOTk0MjJMOC4xMjY4OSAxMS40ODg1QzguMjY1MzUgMTEuNjI2OSA4LjMzNjE5IDExLjgwMDkgOC4zMzkzOSAxMi4wMTA1QzguMzQyNiAxMi4yMjAyIDguMjcxNzcgMTIuMzk3NCA4LjEyNjg5IDEyLjU0MjNDNy45ODIwMiAxMi42ODcxIDcuODA2MzkgMTIuNzU5NiA3LjU5OTk5IDEyLjc1OTZDNy4zOTM1OSAxMi43NTk2IDcuMjE3OTUgMTIuNjg3MSA3LjA3MzA5IDEyLjU0MjNMNS43NDk5NiAxMS4yMTkyVjEyQzUuNzQ5OTYgMTMuNzM3MiA2LjM2MTUgMTUuMjEzMSA3LjU4NDU5IDE2LjQyNzlDOC44MDc2OSAxNy42NDI2IDEwLjI5NjIgMTguMjUgMTIuMDUgMTguMjVDMTIuMzQyMyAxOC4yNSAxMi42MzM3IDE4LjIzMDEgMTIuOTI0MSAxOC4xOTA0QzEzLjIxNDQgMTguMTUwNiAxMy41MDA3IDE4LjA4MjcgMTMuNzgyNyAxNy45ODY1QzEzLjk5NTUgMTcuOTIyNCAxNC4xOTY1IDE3LjkyOTIgMTQuMzg1NiAxOC4wMDY3QzE0LjU3NDcgMTguMDg0MyAxNC43MTY3IDE4LjIxNiAxNC44MTE1IDE4LjQwMTlDMTQuOTA2NCAxOC41OTgxIDE0LjkxMjUgMTguNzkzMiAxNC44Mjk4IDE4Ljk4NzVDMTQuNzQ3MSAxOS4xODE3IDE0LjU5OTQgMTkuMzEwOSAxNC4zODY1IDE5LjM3NUMxNC4wMDk2IDE5LjUwODMgMTMuNjI0NCAxOS42MDQxIDEzLjIzMDggMTkuNjYyNUMxMi44MzcyIDE5LjcyMDggMTIuNDQzNiAxOS43NSAxMi4wNSAxOS43NVpNMTEuOTUgNS43NDk5NUMxMS42NTc3IDUuNzQ5OTUgMTEuMzY2MyA1Ljc2OTgyIDExLjA3NiA1LjgwOTU3QzEwLjc4NTYgNS44NDkzMiAxMC40OTk0IDUuOTE3MjcgMTAuMjE3MyA2LjAxMzQyQzEwLjAwNDUgNi4wNzc1MiA5LjgwMDk3IDYuMDcwNzkgOS42MDY3NCA1Ljk5MzIzQzkuNDEyNTIgNS45MTU2NiA5LjI2Nzk4IDUuNzgzOTMgOS4xNzMxMSA1LjU5ODA1QzkuMDc4MjMgNS40MTIxNSA5LjA3MDU0IDUuMjIyMDkgOS4xNTAwNCA1LjAyNzg3QzkuMjI5NTIgNC44MzM2NCA5LjM3MDU0IDQuNzA0NDcgOS41NzMwOSA0LjY0MDM3QzkuOTYwMjcgNC41MDcwNCAxMC4zNTIzIDQuNDA4NjQgMTAuNzQ5MSA0LjM0NTE4QzExLjE0NTggNC4yODE3MyAxMS41NDYyIDQuMjUgMTEuOTUgNC4yNUMxNC4xMTI4IDQuMjUgMTUuOTUzNSA1LjAwMjU2IDE3LjQ3MjEgNi41MDc2OEMxOC45OTA3IDguMDEyODEgMTkuNzUgOS44NDM1NyAxOS43NSAxMlYxMi43ODA4TDIxLjA3MzEgMTEuNDU3N0MyMS4yMTE2IDExLjMxOTIgMjEuMzg1NiAxMS4yNDg0IDIxLjU5NTIgMTEuMjQ1MkMyMS44MDQ4IDExLjI0MiAyMS45ODIgMTEuMzEyOCAyMi4xMjY5IDExLjQ1NzdDMjIuMjcxOCAxMS42MDI1IDIyLjM0NDIgMTEuNzc4MiAyMi4zNDQyIDExLjk4NDZDMjIuMzQ0MiAxMi4xOTEgMjIuMjcxOCAxMi4zNjY2IDIyLjEyNjkgMTIuNTExNUwxOS42MzI3IDE1LjAwNTdDMTkuNDUxOSAxNS4xODY1IDE5LjI0MSAxNS4yNzY5IDE5IDE1LjI3NjlDMTguNzU5IDE1LjI3NjkgMTguNTQ4MSAxNS4xODY1IDE4LjM2NzMgMTUuMDA1N0wxNS44NzMxIDEyLjUxMTVDMTUuNzM0NiAxMi4zNzMxIDE1LjY2MzggMTIuMTk5IDE1LjY2MDYgMTEuOTg5NEMxNS42NTc0IDExLjc3OTggMTUuNzI4MiAxMS42MDI1IDE1Ljg3MzEgMTEuNDU3N0MxNi4wMTggMTEuMzEyOCAxNi4xOTM2IDExLjI0MDQgMTYuNCAxMS4yNDA0QzE2LjYwNjQgMTEuMjQwNCAxNi43ODIgMTEuMzEyOCAxNi45MjY5IDExLjQ1NzdMMTguMjUgMTIuNzgwOFYxMkMxOC4yNSAxMC4yNjI4IDE3LjYzODUgOC43ODY4MyAxNi40MTU0IDcuNTcyMDdDMTUuMTkyMyA2LjM1NzMyIDEzLjcwMzkgNS43NDk5NSAxMS45NSA1Ljc0OTk1WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxnIGlkPVwiY2FsZW5kYXJfbW9udGhfZmlsbFwiPlxuPG1hc2sgaWQ9XCJtYXNrMF83MjVfMTEzNjNcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiPlxuPHJlY3QgaWQ9XCJCb3VuZGluZyBib3hcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzcyNV8xMTM2MylcIj5cbjxwYXRoIGlkPVwiY2FsZW5kYXJfbW9udGhcIiBkPVwiTTYuNjY2NjcgMjkuMzMzMkM1LjkzMzMzIDI5LjMzMzIgNS4zMDU1NiAyOS4wNzIxIDQuNzgzMzMgMjguNTQ5OEM0LjI2MTExIDI4LjAyNzYgNCAyNy4zOTk4IDQgMjYuNjY2NVY3Ljk5OTg0QzQgNy4yNjY1IDQuMjYxMTEgNi42Mzg3MyA0Ljc4MzMzIDYuMTE2NUM1LjMwNTU2IDUuNTk0MjggNS45MzMzMyA1LjMzMzE3IDYuNjY2NjcgNS4zMzMxN0g4VjMuOTk5ODRDOCAzLjYyMjA2IDguMTI3NzggMy4zMDUzOSA4LjM4MzMzIDMuMDQ5ODRDOC42Mzg4OSAyLjc5NDI4IDguOTU1NTYgMi42NjY1IDkuMzMzMzMgMi42NjY1QzkuNzExMTEgMi42NjY1IDEwLjAyNzggMi43OTQyOCAxMC4yODMzIDMuMDQ5ODRDMTAuNTM4OSAzLjMwNTM5IDEwLjY2NjcgMy42MjIwNiAxMC42NjY3IDMuOTk5ODRWNS4zMzMxN0gyMS4zMzMzVjMuOTk5ODRDMjEuMzMzMyAzLjYyMjA2IDIxLjQ2MTEgMy4zMDUzOSAyMS43MTY3IDMuMDQ5ODRDMjEuOTcyMiAyLjc5NDI4IDIyLjI4ODkgMi42NjY1IDIyLjY2NjcgMi42NjY1QzIzLjA0NDQgMi42NjY1IDIzLjM2MTEgMi43OTQyOCAyMy42MTY3IDMuMDQ5ODRDMjMuODcyMiAzLjMwNTM5IDI0IDMuNjIyMDYgMjQgMy45OTk4NFY1LjMzMzE3SDI1LjMzMzNDMjYuMDY2NyA1LjMzMzE3IDI2LjY5NDQgNS41OTQyOCAyNy4yMTY3IDYuMTE2NUMyNy43Mzg5IDYuNjM4NzMgMjggNy4yNjY1IDI4IDcuOTk5ODRWMjYuNjY2NUMyOCAyNy4zOTk4IDI3LjczODkgMjguMDI3NiAyNy4yMTY3IDI4LjU0OThDMjYuNjk0NCAyOS4wNzIxIDI2LjA2NjcgMjkuMzMzMiAyNS4zMzMzIDI5LjMzMzJINi42NjY2N1pNNi42NjY2NyAyNi42NjY1SDI1LjMzMzNWMTMuMzMzMkg2LjY2NjY3VjI2LjY2NjVaTTE2IDE4LjY2NjVDMTUuNjIyMiAxOC42NjY1IDE1LjMwNTYgMTguNTM4NyAxNS4wNSAxOC4yODMyQzE0Ljc5NDQgMTguMDI3NiAxNC42NjY3IDE3LjcxMDkgMTQuNjY2NyAxNy4zMzMyQzE0LjY2NjcgMTYuOTU1NCAxNC43OTQ0IDE2LjYzODcgMTUuMDUgMTYuMzgzMkMxNS4zMDU2IDE2LjEyNzYgMTUuNjIyMiAxNS45OTk4IDE2IDE1Ljk5OThDMTYuMzc3OCAxNS45OTk4IDE2LjY5NDQgMTYuMTI3NiAxNi45NSAxNi4zODMyQzE3LjIwNTYgMTYuNjM4NyAxNy4zMzMzIDE2Ljk1NTQgMTcuMzMzMyAxNy4zMzMyQzE3LjMzMzMgMTcuNzEwOSAxNy4yMDU2IDE4LjAyNzYgMTYuOTUgMTguMjgzMkMxNi42OTQ0IDE4LjUzODcgMTYuMzc3OCAxOC42NjY1IDE2IDE4LjY2NjVaTTEwLjY2NjcgMTguNjY2NUMxMC4yODg5IDE4LjY2NjUgOS45NzIyMiAxOC41Mzg3IDkuNzE2NjcgMTguMjgzMkM5LjQ2MTExIDE4LjAyNzYgOS4zMzMzMyAxNy43MTA5IDkuMzMzMzMgMTcuMzMzMkM5LjMzMzMzIDE2Ljk1NTQgOS40NjExMSAxNi42Mzg3IDkuNzE2NjcgMTYuMzgzMkM5Ljk3MjIyIDE2LjEyNzYgMTAuMjg4OSAxNS45OTk4IDEwLjY2NjcgMTUuOTk5OEMxMS4wNDQ0IDE1Ljk5OTggMTEuMzYxMSAxNi4xMjc2IDExLjYxNjcgMTYuMzgzMkMxMS44NzIyIDE2LjYzODcgMTIgMTYuOTU1NCAxMiAxNy4zMzMyQzEyIDE3LjcxMDkgMTEuODcyMiAxOC4wMjc2IDExLjYxNjcgMTguMjgzMkMxMS4zNjExIDE4LjUzODcgMTEuMDQ0NCAxOC42NjY1IDEwLjY2NjcgMTguNjY2NVpNMjEuMzMzMyAxOC42NjY1QzIwLjk1NTYgMTguNjY2NSAyMC42Mzg5IDE4LjUzODcgMjAuMzgzMyAxOC4yODMyQzIwLjEyNzggMTguMDI3NiAyMCAxNy43MTA5IDIwIDE3LjMzMzJDMjAgMTYuOTU1NCAyMC4xMjc4IDE2LjYzODcgMjAuMzgzMyAxNi4zODMyQzIwLjYzODkgMTYuMTI3NiAyMC45NTU2IDE1Ljk5OTggMjEuMzMzMyAxNS45OTk4QzIxLjcxMTEgMTUuOTk5OCAyMi4wMjc4IDE2LjEyNzYgMjIuMjgzMyAxNi4zODMyQzIyLjUzODkgMTYuNjM4NyAyMi42NjY3IDE2Ljk1NTQgMjIuNjY2NyAxNy4zMzMyQzIyLjY2NjcgMTcuNzEwOSAyMi41Mzg5IDE4LjAyNzYgMjIuMjgzMyAxOC4yODMyQzIyLjAyNzggMTguNTM4NyAyMS43MTExIDE4LjY2NjUgMjEuMzMzMyAxOC42NjY1Wk0xNiAyMy45OTk4QzE1LjYyMjIgMjMuOTk5OCAxNS4zMDU2IDIzLjg3MjEgMTUuMDUgMjMuNjE2NUMxNC43OTQ0IDIzLjM2MSAxNC42NjY3IDIzLjA0NDMgMTQuNjY2NyAyMi42NjY1QzE0LjY2NjcgMjIuMjg4NyAxNC43OTQ0IDIxLjk3MjEgMTUuMDUgMjEuNzE2NUMxNS4zMDU2IDIxLjQ2MDkgMTUuNjIyMiAyMS4zMzMyIDE2IDIxLjMzMzJDMTYuMzc3OCAyMS4zMzMyIDE2LjY5NDQgMjEuNDYwOSAxNi45NSAyMS43MTY1QzE3LjIwNTYgMjEuOTcyMSAxNy4zMzMzIDIyLjI4ODcgMTcuMzMzMyAyMi42NjY1QzE3LjMzMzMgMjMuMDQ0MyAxNy4yMDU2IDIzLjM2MSAxNi45NSAyMy42MTY1QzE2LjY5NDQgMjMuODcyMSAxNi4zNzc4IDIzLjk5OTggMTYgMjMuOTk5OFpNMTAuNjY2NyAyMy45OTk4QzEwLjI4ODkgMjMuOTk5OCA5Ljk3MjIyIDIzLjg3MjEgOS43MTY2NyAyMy42MTY1QzkuNDYxMTEgMjMuMzYxIDkuMzMzMzMgMjMuMDQ0MyA5LjMzMzMzIDIyLjY2NjVDOS4zMzMzMyAyMi4yODg3IDkuNDYxMTEgMjEuOTcyMSA5LjcxNjY3IDIxLjcxNjVDOS45NzIyMiAyMS40NjA5IDEwLjI4ODkgMjEuMzMzMiAxMC42NjY3IDIxLjMzMzJDMTEuMDQ0NCAyMS4zMzMyIDExLjM2MTEgMjEuNDYwOSAxMS42MTY3IDIxLjcxNjVDMTEuODcyMiAyMS45NzIxIDEyIDIyLjI4ODcgMTIgMjIuNjY2NUMxMiAyMy4wNDQzIDExLjg3MjIgMjMuMzYxIDExLjYxNjcgMjMuNjE2NUMxMS4zNjExIDIzLjg3MjEgMTEuMDQ0NCAyMy45OTk4IDEwLjY2NjcgMjMuOTk5OFpNMjEuMzMzMyAyMy45OTk4QzIwLjk1NTYgMjMuOTk5OCAyMC42Mzg5IDIzLjg3MjEgMjAuMzgzMyAyMy42MTY1QzIwLjEyNzggMjMuMzYxIDIwIDIzLjA0NDMgMjAgMjIuNjY2NUMyMCAyMi4yODg3IDIwLjEyNzggMjEuOTcyMSAyMC4zODMzIDIxLjcxNjVDMjAuNjM4OSAyMS40NjA5IDIwLjk1NTYgMjEuMzMzMiAyMS4zMzMzIDIxLjMzMzJDMjEuNzExMSAyMS4zMzMyIDIyLjAyNzggMjEuNDYwOSAyMi4yODMzIDIxLjcxNjVDMjIuNTM4OSAyMS45NzIxIDIyLjY2NjcgMjIuMjg4NyAyMi42NjY3IDIyLjY2NjVDMjIuNjY2NyAyMy4wNDQzIDIyLjUzODkgMjMuMzYxIDIyLjI4MzMgMjMuNjE2NUMyMi4wMjc4IDIzLjg3MjEgMjEuNzExMSAyMy45OTk4IDIxLjMzMzMgMjMuOTk5OFpcIiBmaWxsPVwiIzExQjA2RVwiLz5cbjwvZz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gIDxtYXNrIGlkPVwibWFzazBfNTUwNV8xODM0XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbiAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNtYXNrMF81NTA1XzE4MzQpXCI+XG4gICAgPHBhdGggZD1cIk0xMC42IDEzLjRMOC40NSAxMS4yNUM4LjI2NjY3IDExLjA2NjcgOC4wMzMzMyAxMC45NzUgNy43NSAxMC45NzVDNy40NjY2NyAxMC45NzUgNy4yMzMzMyAxMS4wNjY3IDcuMDUgMTEuMjVDNi44NjY2NyAxMS40MzMzIDYuNzc1IDExLjY2NjcgNi43NzUgMTEuOTVDNi43NzUgMTIuMjMzMyA2Ljg2NjY3IDEyLjQ2NjcgNy4wNSAxMi42NUw5LjkgMTUuNUMxMC4xIDE1LjcgMTAuMzMzMyAxNS44IDEwLjYgMTUuOEMxMC44NjY3IDE1LjggMTEuMSAxNS43IDExLjMgMTUuNUwxNi45NSA5Ljg1QzE3LjEzMzMgOS42NjY2NyAxNy4yMjUgOS40MzMzMyAxNy4yMjUgOS4xNUMxNy4yMjUgOC44NjY2NyAxNy4xMzMzIDguNjMzMzMgMTYuOTUgOC40NUMxNi43NjY3IDguMjY2NjcgMTYuNTMzMyA4LjE3NSAxNi4yNSA4LjE3NUMxNS45NjY3IDguMTc1IDE1LjczMzMgOC4yNjY2NyAxNS41NSA4LjQ1TDEwLjYgMTMuNFpNNSAyMUM0LjQ1IDIxIDMuOTc5MTcgMjAuODA0MiAzLjU4NzUgMjAuNDEyNUMzLjE5NTgzIDIwLjAyMDggMyAxOS41NSAzIDE5VjVDMyA0LjQ1IDMuMTk1ODMgMy45NzkxNyAzLjU4NzUgMy41ODc1QzMuOTc5MTcgMy4xOTU4MyA0LjQ1IDMgNSAzSDE5QzE5LjU1IDMgMjAuMDIwOCAzLjE5NTgzIDIwLjQxMjUgMy41ODc1QzIwLjgwNDIgMy45NzkxNyAyMSA0LjQ1IDIxIDVWMTlDMjEgMTkuNTUgMjAuODA0MiAyMC4wMjA4IDIwLjQxMjUgMjAuNDEyNUMyMC4wMjA4IDIwLjgwNDIgMTkuNTUgMjEgMTkgMjFINVpcIiBmaWxsPVwiIzAyQkY2RlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XG4gIDxtYXNrIGlkPVwibWFzazBfNTUwNV8xOTAzXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbiAgICA8cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNtYXNrMF81NTA1XzE5MDMpXCI+XG4gICAgPHBhdGggZD1cIk01IDIxQzQuNDUgMjEgMy45NzkxNyAyMC44MDQyIDMuNTg3NSAyMC40MTI1QzMuMTk1ODMgMjAuMDIwOCAzIDE5LjU1IDMgMTlWNUMzIDQuNDUgMy4xOTU4MyAzLjk3OTE3IDMuNTg3NSAzLjU4NzVDMy45NzkxNyAzLjE5NTgzIDQuNDUgMyA1IDNIMTlDMTkuNTUgMyAyMC4wMjA4IDMuMTk1ODMgMjAuNDEyNSAzLjU4NzVDMjAuODA0MiAzLjk3OTE3IDIxIDQuNDUgMjEgNVYxOUMyMSAxOS41NSAyMC44MDQyIDIwLjAyMDggMjAuNDEyNSAyMC40MTI1QzIwLjAyMDggMjAuODA0MiAxOS41NSAyMSAxOSAyMUg1Wk01IDE5SDE5VjVINVYxOVpcIiBmaWxsPVwiIzgzOEI5N1wiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIm0xMC41OCAxNC4xNDYtMi4zMjItMi4zMjNhLjcyNC43MjQgMCAwIDAtLjUyMi0uMjEyLjcwNy43MDcgMCAwIDAtLjUzMi4yMTIuNzE3LjcxNyAwIDAgMC0uMjE3LjUyN2MwIC4yMDYuMDcyLjM4Mi4yMTcuNTI3bDIuNzQ0IDIuNzQ0YS44Ny44NyAwIDAgMCAuNjMzLjI3MWMuMjQgMCAuNDUyLS4wOS42MzItLjI3bDUuNTY0LTUuNTY0YS43MjUuNzI1IDAgMCAwIC4yMTItLjUyMi43MDcuNzA3IDAgMCAwLS4yMTItLjUzMi43MTguNzE4IDAgMCAwLS41MjctLjIxNy43MTcuNzE3IDAgMCAwLS41MjcuMjE3bC01LjE0MiA1LjE0MlptMS40MjIgNy4zNTRhOS4yNTUgOS4yNTUgMCAwIDEtMy43MDUtLjc0OCA5LjU5OCA5LjU5OCAwIDAgMS0zLjAxOC0yLjAzIDkuNTkxIDkuNTkxIDAgMCAxLTIuMDMtMy4wMTYgOS4yNDUgOS4yNDUgMCAwIDEtLjc0OS0zLjcwNGMwLTEuMzE0LjI1LTIuNTUuNzQ4LTMuNzA1YTkuNTk3IDkuNTk3IDAgMCAxIDIuMDMtMy4wMTggOS41OTIgOS41OTIgMCAwIDEgMy4wMTYtMi4wMyA5LjI0NSA5LjI0NSAwIDAgMSAzLjcwNC0uNzQ5YzEuMzE0IDAgMi41NS4yNSAzLjcwNS43NDhhOS41OTcgOS41OTcgMCAwIDEgMy4wMTggMi4wMyA5LjU5MiA5LjU5MiAwIDAgMSAyLjAzIDMuMDE2IDkuMjQ1IDkuMjQ1IDAgMCAxIC43NDkgMy43MDRjMCAxLjMxNC0uMjUgMi41NS0uNzQ4IDMuNzA1YTkuNTk4IDkuNTk4IDAgMCAxLTIuMDMgMy4wMTggOS41OTIgOS41OTIgMCAwIDEtMy4wMTYgMi4wMyA5LjI0NSA5LjI0NSAwIDAgMS0zLjcwNC43NDlaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxnIGlkPVwiY2xvY2tcIj5cbjxtYXNrIGlkPVwibWFzazBfNzI1XzExMzI3XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IGlkPVwiQm91bmRpbmcgYm94XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF83MjVfMTEzMjcpXCI+XG48cGF0aCBpZD1cInNjaGVkdWxlXCIgZD1cIk0xMyAxMS42VjhDMTMgNy43MTY2NyAxMi45MDQyIDcuNDc5MTcgMTIuNzEyNSA3LjI4NzVDMTIuNTIwOCA3LjA5NTgzIDEyLjI4MzMgNyAxMiA3QzExLjcxNjcgNyAxMS40NzkyIDcuMDk1ODMgMTEuMjg3NSA3LjI4NzVDMTEuMDk1OCA3LjQ3OTE3IDExIDcuNzE2NjcgMTEgOFYxMS45NzVDMTEgMTIuMTA4MyAxMS4wMjUgMTIuMjM3NSAxMS4wNzUgMTIuMzYyNUMxMS4xMjUgMTIuNDg3NSAxMS4yIDEyLjYgMTEuMyAxMi43TDE0LjYgMTZDMTQuNzgzMyAxNi4xODMzIDE1LjAxNjcgMTYuMjc1IDE1LjMgMTYuMjc1QzE1LjU4MzMgMTYuMjc1IDE1LjgxNjcgMTYuMTgzMyAxNiAxNkMxNi4xODMzIDE1LjgxNjcgMTYuMjc1IDE1LjU4MzMgMTYuMjc1IDE1LjNDMTYuMjc1IDE1LjAxNjcgMTYuMTgzMyAxNC43ODMzIDE2IDE0LjZMMTMgMTEuNlpNMTIgMjJDMTAuNjE2NyAyMiA5LjMxNjY3IDIxLjczNzUgOC4xIDIxLjIxMjVDNi44ODMzMyAyMC42ODc1IDUuODI1IDE5Ljk3NSA0LjkyNSAxOS4wNzVDNC4wMjUgMTguMTc1IDMuMzEyNSAxNy4xMTY3IDIuNzg3NSAxNS45QzIuMjYyNSAxNC42ODMzIDIgMTMuMzgzMyAyIDEyQzIgMTAuNjE2NyAyLjI2MjUgOS4zMTY2NyAyLjc4NzUgOC4xQzMuMzEyNSA2Ljg4MzMzIDQuMDI1IDUuODI1IDQuOTI1IDQuOTI1QzUuODI1IDQuMDI1IDYuODgzMzMgMy4zMTI1IDguMSAyLjc4NzVDOS4zMTY2NyAyLjI2MjUgMTAuNjE2NyAyIDEyIDJDMTMuMzgzMyAyIDE0LjY4MzMgMi4yNjI1IDE1LjkgMi43ODc1QzE3LjExNjcgMy4zMTI1IDE4LjE3NSA0LjAyNSAxOS4wNzUgNC45MjVDMTkuOTc1IDUuODI1IDIwLjY4NzUgNi44ODMzMyAyMS4yMTI1IDguMUMyMS43Mzc1IDkuMzE2NjcgMjIgMTAuNjE2NyAyMiAxMkMyMiAxMy4zODMzIDIxLjczNzUgMTQuNjgzMyAyMS4yMTI1IDE1LjlDMjAuNjg3NSAxNy4xMTY3IDE5Ljk3NSAxOC4xNzUgMTkuMDc1IDE5LjA3NUMxOC4xNzUgMTkuOTc1IDE3LjExNjcgMjAuNjg3NSAxNS45IDIxLjIxMjVDMTQuNjgzMyAyMS43Mzc1IDEzLjM4MzMgMjIgMTIgMjJaTTEyIDIwQzE0LjIxNjcgMjAgMTYuMTA0MiAxOS4yMjA4IDE3LjY2MjUgMTcuNjYyNUMxOS4yMjA4IDE2LjEwNDIgMjAgMTQuMjE2NyAyMCAxMkMyMCA5Ljc4MzMzIDE5LjIyMDggNy44OTU4MyAxNy42NjI1IDYuMzM3NUMxNi4xMDQyIDQuNzc5MTcgMTQuMjE2NyA0IDEyIDRDOS43ODMzMyA0IDcuODk1ODMgNC43NzkxNyA2LjMzNzUgNi4zMzc1QzQuNzc5MTcgNy44OTU4MyA0IDkuNzgzMzMgNCAxMkM0IDE0LjIxNjcgNC43NzkxNyAxNi4xMDQyIDYuMzM3NSAxNy42NjI1QzcuODk1ODMgMTkuMjIwOCA5Ljc4MzMzIDIwIDEyIDIwWlwiIGZpbGw9XCIjMDJCRjZGXCIvPlxuPC9nPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxnIGlkPVwiY3VzdG9taXplXCI+XG48bWFzayBpZD1cIm1hc2swXzRfMTg0NFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCBpZD1cIkJvdW5kaW5nIGJveFwiIHg9XCIwLjVcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzRfMTg0NClcIj5cbjxwYXRoIGlkPVwiZHJhd1wiIGQ9XCJNMTQuNSAyMUMxNC4yMTY3IDIxIDEzLjk3OTIgMjAuOTA0MiAxMy43ODc1IDIwLjcxMjVDMTMuNTk1OCAyMC41MjA4IDEzLjUgMjAuMjgzMyAxMy41IDIwQzEzLjUgMTkuNzE2NyAxMy41OTU4IDE5LjQ3OTIgMTMuNzg3NSAxOS4yODc1QzEzLjk3OTIgMTkuMDk1OCAxNC4yMTY3IDE5IDE0LjUgMTlDMTUuMjgzMyAxOSAxNS45NzkyIDE4Ljg0NTggMTYuNTg3NSAxOC41Mzc1QzE3LjE5NTggMTguMjI5MiAxNy41IDE3Ljg4MzMgMTcuNSAxNy41QzE3LjUgMTcuMjY2NyAxNy4zOTE3IDE3LjA1IDE3LjE3NSAxNi44NUMxNi45NTgzIDE2LjY1IDE2LjY1ODMgMTYuNDY2NyAxNi4yNzUgMTYuM0wxNy43NSAxNC44MjVDMTguMjgzMyAxNS4xNDE3IDE4LjcwODMgMTUuNTE2NyAxOS4wMjUgMTUuOTVDMTkuMzQxNyAxNi4zODMzIDE5LjUgMTYuOSAxOS41IDE3LjVDMTkuNSAxOC42IDE4Ljk3NSAxOS40NTgzIDE3LjkyNSAyMC4wNzVDMTYuODc1IDIwLjY5MTcgMTUuNzMzMyAyMSAxNC41IDIxWk01LjA3NSAxMy4zNUM0LjU5MTY3IDEzLjA2NjcgNC4yMDgzMyAxMi43Mzc1IDMuOTI1IDEyLjM2MjVDMy42NDE2NyAxMS45ODc1IDMuNSAxMS41MzMzIDMuNSAxMUMzLjUgMTAuMyAzLjc1ODMzIDkuNzEyNSA0LjI3NSA5LjIzNzVDNC43OTE2NyA4Ljc2MjUgNS43MTY2NyA4LjIzMzMzIDcuMDUgNy42NUM4LjEgNy4xNjY2NyA4Ljc3MDgzIDYuODI5MTcgOS4wNjI1IDYuNjM3NUM5LjM1NDE3IDYuNDQ1ODMgOS41IDYuMjMzMzMgOS41IDZDOS41IDUuNzMzMzMgOS4zMzc1IDUuNSA5LjAxMjUgNS4zQzguNjg3NSA1LjEgOC4xODMzMyA1IDcuNSA1QzcuMDgzMzMgNSA2LjczMzMzIDUuMDUgNi40NSA1LjE1QzYuMTY2NjcgNS4yNSA1LjkwODMzIDUuNDE2NjcgNS42NzUgNS42NUM1LjQ5MTY3IDUuODMzMzMgNS4yNjY2NyA1Ljk0MTY3IDUgNS45NzVDNC43MzMzMyA2LjAwODMzIDQuNDkxNjcgNS45MzMzMyA0LjI3NSA1Ljc1QzQuMDU4MzMgNS41ODMzMyAzLjkzMzMzIDUuMzY2NjcgMy45IDUuMUMzLjg2NjY3IDQuODMzMzMgMy45NDE2NyA0LjU5MTY3IDQuMTI1IDQuMzc1QzQuNDQxNjcgMy45OTE2NyA0Ljg5NTgzIDMuNjY2NjcgNS40ODc1IDMuNEM2LjA3OTE3IDMuMTMzMzMgNi43NSAzIDcuNSAzQzguNyAzIDkuNjY2NjcgMy4yNzA4MyAxMC40IDMuODEyNUMxMS4xMzMzIDQuMzU0MTcgMTEuNSA1LjA4MzMzIDExLjUgNkMxMS41IDYuNjUgMTEuMjU4MyA3LjIzMzMzIDEwLjc3NSA3Ljc1QzEwLjI5MTcgOC4yNjY2NyA5LjMxNjY3IDguODQxNjcgNy44NSA5LjQ3NUM2Ljg4MzMzIDkuODkxNjcgNi4yNSAxMC4yIDUuOTUgMTAuNEM1LjY1IDEwLjYgNS41IDEwLjggNS41IDExQzUuNSAxMS4xNSA1LjU5NTgzIDExLjI5NTggNS43ODc1IDExLjQzNzVDNS45NzkxNyAxMS41NzkyIDYuMjQxNjcgMTEuNzE2NyA2LjU3NSAxMS44NUw1LjA3NSAxMy4zNVpNMTkuMzUgMTAuNEwxNS4xIDYuMTVMMTYuMTUgNS4xQzE2LjU1IDQuNyAxNy4wMjkyIDQuNSAxNy41ODc1IDQuNUMxOC4xNDU4IDQuNSAxOC42MTY3IDQuNyAxOSA1LjFMMjAuNCA2LjVDMjAuOCA2Ljg4MzMzIDIxIDcuMzU0MTcgMjEgNy45MTI1QzIxIDguNDcwODMgMjAuOCA4Ljk1IDIwLjQgOS4zNUwxOS4zNSAxMC40Wk02LjUgMTlINy45TDE1LjEgMTEuOEwxMy43IDEwLjRMNi41IDE3LjZWMTlaTTUgMjFDNC44NjY2NyAyMSA0Ljc1IDIwLjk1IDQuNjUgMjAuODVDNC41NSAyMC43NSA0LjUgMjAuNjMzMyA0LjUgMjAuNVYxNi45NUM0LjUgMTYuOTE2NyA0LjU1IDE2LjggNC42NSAxNi42TDEzLjcgNy41NUwxNy45NSAxMS44TDguOSAyMC44NUM4Ljg2NjY3IDIwLjg4MzMgOC43NSAyMC45MzMzIDguNTUgMjFINVpcIiBmaWxsPVwiIzAyQkY2RlwiLz5cbjwvZz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIk03LjMwOCAyMC41Yy0uNTA1IDAtLjkzMy0uMTc1LTEuMjgzLS41MjVhMS43NDUgMS43NDUgMCAwIDEtLjUyNS0xLjI4M1Y2aC0uMjVhLjcyNi43MjYgMCAwIDEtLjUzNS0uMjE1LjcyNi43MjYgMCAwIDEtLjIxNS0uNTM1LjczLjczIDAgMCAxIC4yMTUtLjUzNS43MjYuNzI2IDAgMCAxIC41MzUtLjIxNUg5YS44NC44NCAwIDAgMSAuMjYzLS42My44ODkuODg5IDAgMCAxIC42NC0uMjU1aDQuMTkzYy4yNTEgMCAuNDY1LjA4NS42NC4yNTRBLjg0Ljg0IDAgMCAxIDE1IDQuNWgzLjc1YS43My43MyAwIDAgMSAuNTM1LjIxNS43MjYuNzI2IDAgMCAxIC4yMTUuNTM1LjcyNi43MjYgMCAwIDEtLjIxNS41MzUuNzI2LjcyNiAwIDAgMS0uNTM1LjIxNWgtLjI1djEyLjY5MmMwIC41MDYtLjE3NS45MzMtLjUyNSAxLjI4My0uMzUuMzUtLjc3OC41MjUtMS4yODMuNTI1SDcuMzA4Wk03IDZ2MTIuNjkyYS4zLjMgMCAwIDAgLjA4Ny4yMjEuMy4zIDAgMCAwIC4yMi4wODdoOS4zODVhLjMuMyAwIDAgMCAuMjIxLS4wODcuMy4zIDAgMCAwIC4wODctLjIyVjZIN1ptMi40MDQgMTAuMjVhLjczLjczIDAgMCAwIC4yMTUuNTM1LjcyNi43MjYgMCAwIDAgLjUzNS4yMTUuNzI2LjcyNiAwIDAgMCAuNTM0LS4yMTUuNzI2LjcyNiAwIDAgMCAuMjE2LS41MzV2LTcuNWEuNzI2LjcyNiAwIDAgMC0uMjE2LS41MzUuNzI2LjcyNiAwIDAgMC0uNTM0LS4yMTUuNzI2LjcyNiAwIDAgMC0uNTM1LjIxNS43MjYuNzI2IDAgMCAwLS4yMTUuNTM1djcuNVptMy42OTIgMGMwIC4yMTMuMDcyLjM5MS4yMTYuNTM1YS43MjYuNzI2IDAgMCAwIC41MzQuMjE1LjcyNi43MjYgMCAwIDAgLjUzNS0uMjE1LjcyNi43MjYgMCAwIDAgLjIxNS0uNTM1di03LjVhLjcyNi43MjYgMCAwIDAtLjIxNS0uNTM1LjcyNi43MjYgMCAwIDAtLjUzNS0uMjE1LjcyNi43MjYgMCAwIDAtLjUzNC4yMTUuNzI2LjcyNiAwIDAgMC0uMjE2LjUzNXY3LjVaTTcgNnYxMi42OTJhLjMuMyAwIDAgMCAuMDg3LjIyMS4zLjMgMCAwIDAgLjIyLjA4N0g3VjZaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxnIGlkPVwiZXZlbnRfZGV0YWlsc1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF80XzE3MjZcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiPlxuPHJlY3QgaWQ9XCJCb3VuZGluZyBib3hcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzRfMTcyNilcIj5cbjxwYXRoIGlkPVwidGV4dF9hZFwiIGQ9XCJNNS4zMzMzMyAyNi42NjY3QzQuNiAyNi42NjY3IDMuOTcyMjIgMjYuNDA1NiAzLjQ1IDI1Ljg4MzNDMi45Mjc3OCAyNS4zNjExIDIuNjY2NjcgMjQuNzMzMyAyLjY2NjY3IDI0VjhDMi42NjY2NyA3LjI2NjY3IDIuOTI3NzggNi42Mzg4OSAzLjQ1IDYuMTE2NjdDMy45NzIyMiA1LjU5NDQ0IDQuNiA1LjMzMzMzIDUuMzMzMzMgNS4zMzMzM0gyNi42NjY3QzI3LjQgNS4zMzMzMyAyOC4wMjc4IDUuNTk0NDQgMjguNTUgNi4xMTY2N0MyOS4wNzIyIDYuNjM4ODkgMjkuMzMzMyA3LjI2NjY3IDI5LjMzMzMgOFYyNEMyOS4zMzMzIDI0LjczMzMgMjkuMDcyMiAyNS4zNjExIDI4LjU1IDI1Ljg4MzNDMjguMDI3OCAyNi40MDU2IDI3LjQgMjYuNjY2NyAyNi42NjY3IDI2LjY2NjdINS4zMzMzM1pNNS4zMzMzMyAyNEgyNi42NjY3VjhINS4zMzMzM1YyNFpNOCAyMi42NjY3SDI0QzI0LjM3NzggMjIuNjY2NyAyNC42OTQ0IDIyLjUzODkgMjQuOTUgMjIuMjgzM0MyNS4yMDU2IDIyLjAyNzggMjUuMzMzMyAyMS43MTExIDI1LjMzMzMgMjEuMzMzM0MyNS4zMzMzIDIwLjk1NTYgMjUuMjA1NiAyMC42Mzg5IDI0Ljk1IDIwLjM4MzNDMjQuNjk0NCAyMC4xMjc4IDI0LjM3NzggMjAgMjQgMjBIOEM3LjYyMjIyIDIwIDcuMzA1NTYgMjAuMTI3OCA3LjA1IDIwLjM4MzNDNi43OTQ0NCAyMC42Mzg5IDYuNjY2NjcgMjAuOTU1NiA2LjY2NjY3IDIxLjMzMzNDNi42NjY2NyAyMS43MTExIDYuNzk0NDQgMjIuMDI3OCA3LjA1IDIyLjI4MzNDNy4zMDU1NiAyMi41Mzg5IDcuNjIyMjIgMjIuNjY2NyA4IDIyLjY2NjdaTTggMTcuMzMzM0gyNEMyNC4zNzc4IDE3LjMzMzMgMjQuNjk0NCAxNy4yMDU2IDI0Ljk1IDE2Ljk1QzI1LjIwNTYgMTYuNjk0NCAyNS4zMzMzIDE2LjM3NzggMjUuMzMzMyAxNkMyNS4zMzMzIDE1LjYyMjIgMjUuMjA1NiAxNS4zMDU2IDI0Ljk1IDE1LjA1QzI0LjY5NDQgMTQuNzk0NCAyNC4zNzc4IDE0LjY2NjcgMjQgMTQuNjY2N0g4QzcuNjIyMjIgMTQuNjY2NyA3LjMwNTU2IDE0Ljc5NDQgNy4wNSAxNS4wNUM2Ljc5NDQ0IDE1LjMwNTYgNi42NjY2NyAxNS42MjIyIDYuNjY2NjcgMTZDNi42NjY2NyAxNi4zNzc4IDYuNzk0NDQgMTYuNjk0NCA3LjA1IDE2Ljk1QzcuMzA1NTYgMTcuMjA1NiA3LjYyMjIyIDE3LjMzMzMgOCAxNy4zMzMzWk04IDEySDE4LjY2NjdDMTkuMDQ0NCAxMiAxOS4zNjExIDExLjg3MjIgMTkuNjE2NyAxMS42MTY3QzE5Ljg3MjIgMTEuMzYxMSAyMCAxMS4wNDQ0IDIwIDEwLjY2NjdDMjAgMTAuMjg4OSAxOS44NzIyIDkuOTcyMjIgMTkuNjE2NyA5LjcxNjY3QzE5LjM2MTEgOS40NjExMSAxOS4wNDQ0IDkuMzMzMzMgMTguNjY2NyA5LjMzMzMzSDhDNy42MjIyMiA5LjMzMzMzIDcuMzA1NTYgOS40NjExMSA3LjA1IDkuNzE2NjdDNi43OTQ0NCA5Ljk3MjIyIDYuNjY2NjcgMTAuMjg4OSA2LjY2NjY3IDEwLjY2NjdDNi42NjY2NyAxMS4wNDQ0IDYuNzk0NDQgMTEuMzYxMSA3LjA1IDExLjYxNjdDNy4zMDU1NiAxMS44NzIyIDcuNjIyMjIgMTIgOCAxMlpcIiBmaWxsPVwiIzExQjA2RVwiLz5cbjwvZz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48ZyBpZD1cImV2ZW50X3JlcGVhdFwiPlxuPG1hc2sgaWQ9XCJtYXNrMF80XzE5NzRcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3QgaWQ9XCJCb3VuZGluZyBib3hcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzRfMTk3NClcIj5cbjxwYXRoIGlkPVwiZXZlbnRfcmVwZWF0XzJcIiBkPVwiTTUgMjJDNC40NSAyMiAzLjk3OTE3IDIxLjgwNDIgMy41ODc1IDIxLjQxMjVDMy4xOTU4MyAyMS4wMjA4IDMgMjAuNTUgMyAyMFY2QzMgNS40NSAzLjE5NTgzIDQuOTc5MTcgMy41ODc1IDQuNTg3NUMzLjk3OTE3IDQuMTk1ODMgNC40NSA0IDUgNEg2VjNDNiAyLjcxNjY3IDYuMDk1ODMgMi40NzkxNyA2LjI4NzUgMi4yODc1QzYuNDc5MTcgMi4wOTU4MyA2LjcxNjY3IDIgNyAyQzcuMjgzMzMgMiA3LjUyMDgzIDIuMDk1ODMgNy43MTI1IDIuMjg3NUM3LjkwNDE3IDIuNDc5MTcgOCAyLjcxNjY3IDggM1Y0SDE2VjNDMTYgMi43MTY2NyAxNi4wOTU4IDIuNDc5MTcgMTYuMjg3NSAyLjI4NzVDMTYuNDc5MiAyLjA5NTgzIDE2LjcxNjcgMiAxNyAyQzE3LjI4MzMgMiAxNy41MjA4IDIuMDk1ODMgMTcuNzEyNSAyLjI4NzVDMTcuOTA0MiAyLjQ3OTE3IDE4IDIuNzE2NjcgMTggM1Y0SDE5QzE5LjU1IDQgMjAuMDIwOCA0LjE5NTgzIDIwLjQxMjUgNC41ODc1QzIwLjgwNDIgNC45NzkxNyAyMSA1LjQ1IDIxIDZWMTFDMjEgMTEuMjgzMyAyMC45MDQyIDExLjUyMDggMjAuNzEyNSAxMS43MTI1QzIwLjUyMDggMTEuOTA0MiAyMC4yODMzIDEyIDIwIDEyQzE5LjcxNjcgMTIgMTkuNDc5MiAxMS45MDQyIDE5LjI4NzUgMTEuNzEyNUMxOS4wOTU4IDExLjUyMDggMTkgMTEuMjgzMyAxOSAxMVYxMEg1VjIwSDExQzExLjI4MzMgMjAgMTEuNTIwOCAyMC4wOTU4IDExLjcxMjUgMjAuMjg3NUMxMS45MDQyIDIwLjQ3OTIgMTIgMjAuNzE2NyAxMiAyMUMxMiAyMS4yODMzIDExLjkwNDIgMjEuNTIwOCAxMS43MTI1IDIxLjcxMjVDMTEuNTIwOCAyMS45MDQyIDExLjI4MzMgMjIgMTEgMjJINVpNMTkgMjRDMTcuOTMzMyAyNCAxNi45NzkyIDIzLjcwNDIgMTYuMTM3NSAyMy4xMTI1QzE1LjI5NTggMjIuNTIwOCAxNC42OTE3IDIxLjc1IDE0LjMyNSAyMC44QzE0LjI0MTcgMjAuNjE2NyAxNC4yNjI1IDIwLjQzNzUgMTQuMzg3NSAyMC4yNjI1QzE0LjUxMjUgMjAuMDg3NSAxNC42NzUgMjAgMTQuODc1IDIwQzE1LjEwODMgMjAgMTUuMzIwOCAyMC4wNzA4IDE1LjUxMjUgMjAuMjEyNUMxNS43MDQyIDIwLjM1NDIgMTUuODU4MyAyMC41MzMzIDE1Ljk3NSAyMC43NUMxNi4yNzUgMjEuMjgzMyAxNi42OTE3IDIxLjcwODMgMTcuMjI1IDIyLjAyNUMxNy43NTgzIDIyLjM0MTcgMTguMzUgMjIuNSAxOSAyMi41QzE5Ljk2NjcgMjIuNSAyMC43OTE3IDIyLjE1ODMgMjEuNDc1IDIxLjQ3NUMyMi4xNTgzIDIwLjc5MTcgMjIuNSAxOS45NjY3IDIyLjUgMTlDMjIuNSAxOC4wMzMzIDIyLjE1ODMgMTcuMjA4MyAyMS40NzUgMTYuNTI1QzIwLjc5MTcgMTUuODQxNyAxOS45NjY3IDE1LjUgMTkgMTUuNUMxOC41MTY3IDE1LjUgMTguMDY2NyAxNS41ODc1IDE3LjY1IDE1Ljc2MjVDMTcuMjMzMyAxNS45Mzc1IDE2Ljg2NjcgMTYuMTgzMyAxNi41NSAxNi41SDE3LjI1QzE3LjQ2NjcgMTYuNSAxNy42NDU4IDE2LjU3MDggMTcuNzg3NSAxNi43MTI1QzE3LjkyOTIgMTYuODU0MiAxOCAxNy4wMzMzIDE4IDE3LjI1QzE4IDE3LjQ2NjcgMTcuOTI5MiAxNy42NDU4IDE3Ljc4NzUgMTcuNzg3NUMxNy42NDU4IDE3LjkyOTIgMTcuNDY2NyAxOCAxNy4yNSAxOEgxNUMxNC43MTY3IDE4IDE0LjQ3OTIgMTcuOTA0MiAxNC4yODc1IDE3LjcxMjVDMTQuMDk1OCAxNy41MjA4IDE0IDE3LjI4MzMgMTQgMTdWMTQuNzVDMTQgMTQuNTMzMyAxNC4wNzA4IDE0LjM1NDIgMTQuMjEyNSAxNC4yMTI1QzE0LjM1NDIgMTQuMDcwOCAxNC41MzMzIDE0IDE0Ljc1IDE0QzE0Ljk2NjcgMTQgMTUuMTQ1OCAxNC4wNzA4IDE1LjI4NzUgMTQuMjEyNUMxNS40MjkyIDE0LjM1NDIgMTUuNSAxNC41MzMzIDE1LjUgMTQuNzVWMTUuNDI1QzE1Ljk1IDE0Ljk5MTcgMTYuNDc1IDE0LjY0NTggMTcuMDc1IDE0LjM4NzVDMTcuNjc1IDE0LjEyOTIgMTguMzE2NyAxNCAxOSAxNEMyMC4zODMzIDE0IDIxLjU2MjUgMTQuNDg3NSAyMi41Mzc1IDE1LjQ2MjVDMjMuNTEyNSAxNi40Mzc1IDI0IDE3LjYxNjcgMjQgMTlDMjQgMjAuMzgzMyAyMy41MTI1IDIxLjU2MjUgMjIuNTM3NSAyMi41Mzc1QzIxLjU2MjUgMjMuNTEyNSAyMC4zODMzIDI0IDE5IDI0Wk01IDhIMTlWNkg1VjhaXCIgZmlsbD1cIiM2QzczN0FcIi8+XG48L2c+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJNMTIgMTYuNzVhLjcyNi43MjYgMCAwIDAgLjUzNS0uMjE2LjcyNi43MjYgMCAwIDAgLjIxNS0uNTM0di00LjI1YS43MjYuNzI2IDAgMCAwLS4yMTYtLjUzNEEuNzI3LjcyNyAwIDAgMCAxMiAxMWEuNzI1LjcyNSAwIDAgMC0uNTM1LjIxNi43MjYuNzI2IDAgMCAwLS4yMTUuNTM0VjE2YzAgLjIxMi4wNzIuMzkuMjE2LjUzNGEuNzI2LjcyNiAwIDAgMCAuNTM0LjIxNlptMC03LjQ2MmEuNzguNzggMCAwIDAgLjU3NS0uMjMyLjc4MS43ODEgMCAwIDAgLjIzMy0uNTc1Ljc4Mi43ODIgMCAwIDAtLjIzMi0uNTc2Ljc4Mi43ODIgMCAwIDAtLjU3Ni0uMjMyLjc4MS43ODEgMCAwIDAtLjU3NS4yMzIuNzgyLjc4MiAwIDAgMC0uMjMzLjU3NmMwIC4yMjkuMDc4LjQyLjIzMi41NzVhLjc4MS43ODEgMCAwIDAgLjU3Ni4yMzJabS4wMDIgMTIuMjEyYTkuMjU1IDkuMjU1IDAgMCAxLTMuNzA1LS43NDggOS41OTggOS41OTggMCAwIDEtMy4wMTgtMi4wMyA5LjU5MSA5LjU5MSAwIDAgMS0yLjAzLTMuMDE2IDkuMjQ1IDkuMjQ1IDAgMCAxLS43NDktMy43MDRjMC0xLjMxNC4yNS0yLjU1Ljc0OC0zLjcwNWE5LjU5NyA5LjU5NyAwIDAgMSAyLjAzLTMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxIDMuMDE2LTIuMDMgOS4yNDUgOS4yNDUgMCAwIDEgMy43MDQtLjc0OWMxLjMxNCAwIDIuNTUuMjUgMy43MDUuNzQ4YTkuNTk3IDkuNTk3IDAgMCAxIDMuMDE4IDIuMDMgOS41OTIgOS41OTIgMCAwIDEgMi4wMyAzLjAxNiA5LjI0NSA5LjI0NSAwIDAgMSAuNzQ5IDMuNzA0YzAgMS4zMTQtLjI1IDIuNTUtLjc0OCAzLjcwNWE5LjU5OCA5LjU5OCAwIDAgMS0yLjAzIDMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxLTMuMDE2IDIuMDMgOS4yNDUgOS4yNDUgMCAwIDEtMy43MDQuNzQ5Wk0xMiAyMGMyLjIzMyAwIDQuMTI1LS43NzUgNS42NzUtMi4zMjVDMTkuMjI1IDE2LjEyNSAyMCAxNC4yMzMgMjAgMTJjMC0yLjIzMy0uNzc1LTQuMTI1LTIuMzI1LTUuNjc1QzE2LjEyNSA0Ljc3NSAxNC4yMzMgNCAxMiA0Yy0yLjIzMyAwLTQuMTI1Ljc3NS01LjY3NSAyLjMyNUM0Ljc3NSA3Ljg3NSA0IDkuNzY3IDQgMTJjMCAyLjIzMy43NzUgNC4xMjUgMi4zMjUgNS42NzVDNy44NzUgMTkuMjI1IDkuNzY3IDIwIDEyIDIwWlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIk0xMiAxN2EuOTcuOTcgMCAwIDAgLjcxMy0uMjg4QS45NjguOTY4IDAgMCAwIDEzIDE2di00YS45NjguOTY4IDAgMCAwLS4yODctLjcxM0EuOTY4Ljk2OCAwIDAgMCAxMiAxMWEuOTY4Ljk2OCAwIDAgMC0uNzEzLjI4N0EuOTY4Ljk2OCAwIDAgMCAxMSAxMnY0YzAgLjI4My4wOTYuNTIuMjg3LjcxMi4xOTIuMTkyLjQzLjI4OC43MTMuMjg4Wm0wLThjLjI4MyAwIC41Mi0uMDk2LjcxMy0uMjg3QS45NjcuOTY3IDAgMCAwIDEzIDhhLjk2Ny45NjcgMCAwIDAtLjI4Ny0uNzEzQS45NjguOTY4IDAgMCAwIDEyIDdhLjk2OC45NjggMCAwIDAtLjcxMy4yODdBLjk2Ny45NjcgMCAwIDAgMTEgOGMwIC4yODMuMDk2LjUyLjI4Ny43MTMuMTkyLjE5MS40My4yODcuNzEzLjI4N1ptMCAxM2E5LjczOCA5LjczOCAwIDAgMS0zLjktLjc4OCAxMC4wOTkgMTAuMDk5IDAgMCAxLTMuMTc1LTIuMTM3Yy0uOS0uOS0xLjYxMi0xLjk1OC0yLjEzNy0zLjE3NUE5LjczOCA5LjczOCAwIDAgMSAyIDEyYTkuNzQgOS43NCAwIDAgMSAuNzg4LTMuOSAxMC4wOTkgMTAuMDk5IDAgMCAxIDIuMTM3LTMuMTc1Yy45LS45IDEuOTU4LTEuNjEyIDMuMTc1LTIuMTM3QTkuNzM4IDkuNzM4IDAgMCAxIDEyIDJhOS43NCA5Ljc0IDAgMCAxIDMuOS43ODggMTAuMDk4IDEwLjA5OCAwIDAgMSAzLjE3NSAyLjEzN2MuOS45IDEuNjEzIDEuOTU4IDIuMTM3IDMuMTc1QTkuNzM4IDkuNzM4IDAgMCAxIDIyIDEyYTkuNzM4IDkuNzM4IDAgMCAxLS43ODggMy45IDEwLjA5OCAxMC4wOTggMCAwIDEtMi4xMzcgMy4xNzVjLS45LjktMS45NTggMS42MTMtMy4xNzUgMi4xMzdBOS43MzggOS43MzggMCAwIDEgMTIgMjJaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxwYXRoIGlkPVwicGF0aFwiIGQ9XCJNMjMuMzQxMSAzLjU3NTYyTDIwLjQyNDUgMC42NTkwNjNDMTkuOTg0OCAwLjIxOTg0NCAxOS40MDkyIDAgMTguODMzNiAwQzE4LjI1NzUgMCAxNy42ODE4IDAuMjE5ODQ0IDE3LjI0MjYgMC42NTkwNjNMMC42NTkxOCAxNy4yNDI1Qy0wLjIxOTcyNyAxOC4xMjE0IC0wLjIxOTcyNyAxOS41NDU5IDAuNjU5MTggMjAuNDI0NEwzLjU3NTc0IDIzLjM0MDlDNC4wMTQ5NiAyMy43ODAyIDQuNTkxMDUgMjQgNS4xNjY2OCAyNEM1Ljc0MjMgMjQgNi4zMTg0IDIzLjc4MDIgNi43NTc2MiAyMy4zNDA5TDIzLjM0MDYgNi43NTc1QzI0LjIyIDUuODc5MDYgMjQuMjIgNC40NTQ1MyAyMy4zNDExIDMuNTc1NjJaTTUuMTY3MTUgMjEuNzVMMi4yNTAxMiAxOC44MzM0TDEyLjc0NTQgOC4zMzY3MkwxNS42NjI5IDExLjI1NDJMNS4xNjcxNSAyMS43NVpNMTcuMjUzOSA5LjY2MjgxTDE0LjMzNjQgNi43NDUzMUwxOC44MzEyIDIuMjVIMTguODMzNkwyMS43NTAxIDUuMTY2NTZMMTcuMjUzOSA5LjY2MjgxWk0yMC4yNTAxIDEzLjVMMTkuMDAwNCAxNS45OTk4TDE2LjUwMDEgMTcuMjVMMTkuMDAwNCAxOC41MDAyTDIwLjI1MDEgMjFMMjEuNDk5OCAxOC41MDAyTDI0LjAwMDEgMTcuMjVMMjEuNDk5OCAxNS45OTk4TDIwLjI1MDEgMTMuNVpNMTAuNTAwMSA0LjVMMTEuMjUwMSAzTDEyLjc1MDEgMi4yNUwxMS4yNTAxIDEuNUwxMC41MDAxIDBMOS43NTAxMiAxLjVMOC4yNTAxMiAyLjI1TDkuNzUwMTIgM0wxMC41MDAxIDQuNVpNMy43NTAxMiA3LjVMNC45OTk4IDUuMDAwMTZMNy41MDAxMiAzLjc1TDQuOTk5OCAyLjQ5OTg0TDMuNzUwMTIgMEwyLjUwMDQzIDIuNDk5ODRMMC4wMDAxMTcxNjggMy43NUwyLjUwMDQzIDUuMDAwMTZMMy43NTAxMiA3LjVaXCIgZmlsbD1cIiMwMkJGNkZcIi8+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPGcgaWQ9XCJtYXRlcmlhbHNcIj5cbjxtYXNrIGlkPVwibWFzazBfNF8xODM4XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IGlkPVwiQm91bmRpbmcgYm94XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF80XzE4MzgpXCI+XG48cGF0aCBpZD1cIm1lZGlhX2xpbmtcIiBkPVwiTTEwLjgyNSAxNy40MjVMOC4yNzUgMTkuMDI1QzguMTA4MzMgMTkuMTI1IDcuOTM3NSAxOS4xMjkyIDcuNzYyNSAxOS4wMzc1QzcuNTg3NSAxOC45NDU4IDcuNSAxOC44IDcuNSAxOC42VjE1LjRDNy41IDE1LjIgNy41ODc1IDE1LjA1NDIgNy43NjI1IDE0Ljk2MjVDNy45Mzc1IDE0Ljg3MDggOC4xMDgzMyAxNC44NzUgOC4yNzUgMTQuOTc1TDEwLjgyNSAxNi41NzVDMTAuOTkxNyAxNi42NzUgMTEuMDc1IDE2LjgxNjcgMTEuMDc1IDE3QzExLjA3NSAxNy4xODMzIDEwLjk5MTcgMTcuMzI1IDEwLjgyNSAxNy40MjVaTTEzIDEwQzEyLjE2NjcgMTAgMTEuNDU4MyA5LjcwODMzIDEwLjg3NSA5LjEyNUMxMC4yOTE3IDguNTQxNjcgMTAgNy44MzMzMyAxMCA3QzEwIDYuMTY2NjcgMTAuMjkxNyA1LjQ1ODMzIDEwLjg3NSA0Ljg3NUMxMS40NTgzIDQuMjkxNjcgMTIuMTY2NyA0IDEzIDRIMTMuNUMxMy43MTY3IDQgMTMuODk1OCA0LjA3MDgzIDE0LjAzNzUgNC4yMTI1QzE0LjE3OTIgNC4zNTQxNyAxNC4yNSA0LjUzMzMzIDE0LjI1IDQuNzVDMTQuMjUgNC45NjY2NyAxNC4xNzkyIDUuMTQ1ODMgMTQuMDM3NSA1LjI4NzVDMTMuODk1OCA1LjQyOTE3IDEzLjcxNjcgNS41IDEzLjUgNS41SDEzQzEyLjU4MzMgNS41IDEyLjIyOTIgNS42NDU4MyAxMS45Mzc1IDUuOTM3NUMxMS42NDU4IDYuMjI5MTcgMTEuNSA2LjU4MzMzIDExLjUgN0MxMS41IDcuNDE2NjcgMTEuNjQ1OCA3Ljc3MDgzIDExLjkzNzUgOC4wNjI1QzEyLjIyOTIgOC4zNTQxNyAxMi41ODMzIDguNSAxMyA4LjVIMTMuNUMxMy43MTY3IDguNSAxMy44OTU4IDguNTcwODMgMTQuMDM3NSA4LjcxMjVDMTQuMTc5MiA4Ljg1NDE3IDE0LjI1IDkuMDMzMzMgMTQuMjUgOS4yNUMxNC4yNSA5LjQ2NjY3IDE0LjE3OTIgOS42NDU4MyAxNC4wMzc1IDkuNzg3NUMxMy44OTU4IDkuOTI5MTcgMTMuNzE2NyAxMCAxMy41IDEwSDEzWk0xNyAxMEgxNi41QzE2LjI4MzMgMTAgMTYuMTA0MiA5LjkyOTE3IDE1Ljk2MjUgOS43ODc1QzE1LjgyMDggOS42NDU4MyAxNS43NSA5LjQ2NjY3IDE1Ljc1IDkuMjVDMTUuNzUgOS4wMzMzMyAxNS44MjA4IDguODU0MTcgMTUuOTYyNSA4LjcxMjVDMTYuMTA0MiA4LjU3MDgzIDE2LjI4MzMgOC41IDE2LjUgOC41SDE3QzE3LjQxNjcgOC41IDE3Ljc3MDggOC4zNTQxNyAxOC4wNjI1IDguMDYyNUMxOC4zNTQyIDcuNzcwODMgMTguNSA3LjQxNjY3IDE4LjUgN0MxOC41IDYuNTgzMzMgMTguMzU0MiA2LjIyOTE3IDE4LjA2MjUgNS45Mzc1QzE3Ljc3MDggNS42NDU4MyAxNy40MTY3IDUuNSAxNyA1LjVIMTYuNUMxNi4yODMzIDUuNSAxNi4xMDQyIDUuNDI5MTcgMTUuOTYyNSA1LjI4NzVDMTUuODIwOCA1LjE0NTgzIDE1Ljc1IDQuOTY2NjcgMTUuNzUgNC43NUMxNS43NSA0LjUzMzMzIDE1LjgyMDggNC4zNTQxNyAxNS45NjI1IDQuMjEyNUMxNi4xMDQyIDQuMDcwODMgMTYuMjgzMyA0IDE2LjUgNEgxN0MxNy44MzMzIDQgMTguNTQxNyA0LjI5MTY3IDE5LjEyNSA0Ljg3NUMxOS43MDgzIDUuNDU4MzMgMjAgNi4xNjY2NyAyMCA3QzIwIDcuODMzMzMgMTkuNzA4MyA4LjU0MTY3IDE5LjEyNSA5LjEyNUMxOC41NDE3IDkuNzA4MzMgMTcuODMzMyAxMCAxNyAxMFpNMTYuMjUgNy43NUgxMy43NUMxMy41MzMzIDcuNzUgMTMuMzU0MiA3LjY3OTE3IDEzLjIxMjUgNy41Mzc1QzEzLjA3MDggNy4zOTU4MyAxMyA3LjIxNjY3IDEzIDdDMTMgNi43ODMzMyAxMy4wNzA4IDYuNjA0MTcgMTMuMjEyNSA2LjQ2MjVDMTMuMzU0MiA2LjMyMDgzIDEzLjUzMzMgNi4yNSAxMy43NSA2LjI1SDE2LjI1QzE2LjQ2NjcgNi4yNSAxNi42NDU4IDYuMzIwODMgMTYuNzg3NSA2LjQ2MjVDMTYuOTI5MiA2LjYwNDE3IDE3IDYuNzgzMzMgMTcgN0MxNyA3LjIxNjY3IDE2LjkyOTIgNy4zOTU4MyAxNi43ODc1IDcuNTM3NUMxNi42NDU4IDcuNjc5MTcgMTYuNDY2NyA3Ljc1IDE2LjI1IDcuNzVaTTE2LjEgMTRWMTJIMjFWM0g5VjEySDdWM0M3IDIuNDUgNy4xOTU4MyAxLjk3OTE3IDcuNTg3NSAxLjU4NzVDNy45NzkxNyAxLjE5NTgzIDguNDUgMSA5IDFIMjFDMjEuNTUgMSAyMi4wMjA4IDEuMTk1ODMgMjIuNDEyNSAxLjU4NzVDMjIuODA0MiAxLjk3OTE3IDIzIDIuNDUgMjMgM1YxMkMyMyAxMi41NSAyMi44MDQyIDEzLjAyMDggMjIuNDEyNSAxMy40MTI1QzIyLjAyMDggMTMuODA0MiAyMS41NSAxNCAyMSAxNEgxNi4xWk0zIDIzQzIuNDUgMjMgMS45NzkxNyAyMi44MDQyIDEuNTg3NSAyMi40MTI1QzEuMTk1ODMgMjIuMDIwOCAxIDIxLjU1IDEgMjFWMTNDMSAxMi40NSAxLjE5NTgzIDExLjk3OTIgMS41ODc1IDExLjU4NzVDMS45NzkxNyAxMS4xOTU4IDIuNDUgMTEgMyAxMUgxNUMxNS41NSAxMSAxNi4wMjA4IDExLjE5NTggMTYuNDEyNSAxMS41ODc1QzE2LjgwNDIgMTEuOTc5MiAxNyAxMi40NSAxNyAxM1YyMUMxNyAyMS41NSAxNi44MDQyIDIyLjAyMDggMTYuNDEyNSAyMi40MTI1QzE2LjAyMDggMjIuODA0MiAxNS41NSAyMyAxNSAyM0gzWk0zIDIxSDE1VjEzSDNWMjFaXCIgZmlsbD1cIiMwMkJGNkZcIi8+XG48L2c+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNzNcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNzMpXCI+XG48cGF0aCBkPVwiTTE3LjI0MDMgMTQuMTgwN0wxNi4xMzY1IDEzLjA1NzZDMTYuMjQxNyAxMi44NjUzIDE2LjMzNTYgMTIuNjUzNSAxNi40MTgyIDEyLjQyMjFDMTYuNTAwOSAxMi4xOTA3IDE2LjU2MDkgMTEuOTQ2MSAxNi41OTggMTEuNjg4NEMxNi42MzUyIDExLjQ5NjEgMTYuNzI0IDExLjMzMzMgMTYuODY0NCAxMS4yQzE3LjAwNDggMTEuMDY2NiAxNy4xNjYgMTEgMTcuMzQ4IDExQzE3LjU4MTQgMTEgMTcuNzcyNCAxMS4wNzk1IDE3LjkyMTEgMTEuMjM4NEMxOC4wNjk4IDExLjM5NzQgMTguMTI4OCAxMS41ODMzIDE4LjA5OCAxMS43OTYxQzE4LjA0MDMgMTIuMjUyNSAxNy45MzcxIDEyLjY3NjUgMTcuNzg4NCAxMy4wNjgyQzE3LjYzOTcgMTMuNDU5OSAxNy40NTcgMTMuODMwNyAxNy4yNDAzIDE0LjE4MDdaTTE0LjAyMTEgMTAuOTMwN0wxMi42NDQyIDkuNTUzNzhWNC45OTk5N0MxMi42NDQyIDQuNzE2NjQgMTIuNTQ4NCA0LjQ3OTE0IDEyLjM1NjcgNC4yODc0N0MxMi4xNjUgNC4wOTU4MSAxMS45Mjc1IDMuOTk5OTcgMTEuNjQ0MiAzLjk5OTk3QzExLjM2MDkgMy45OTk5NyAxMS4xMjM0IDQuMDk1ODEgMTAuOTMxNyA0LjI4NzQ3QzEwLjc0IDQuNDc5MTQgMTAuNjQ0MiA0LjcxNjY0IDEwLjY0NDIgNC45OTk5N1Y3LjUzNDU1TDkuMTQ0MjQgNi4wMzQ1N1Y0Ljk5OTk3QzkuMTQ0MjQgNC4zMDEyOCA5LjM4NjIzIDMuNzA5OTMgOS44NzAxOSAzLjIyNTk1QzEwLjM1NDIgMi43NDE5OCAxMC45NDU1IDIuNSAxMS42NDQyIDIuNUMxMi4zNDI5IDIuNSAxMi45MzQzIDIuNzQxOTggMTMuNDE4MiAzLjIyNTk1QzEzLjkwMjIgMy43MDk5MyAxNC4xNDQyIDQuMzAxMjggMTQuMTQ0MiA0Ljk5OTk3VjEwLjM0NjFDMTQuMTQ0MiAxMC40NTg5IDE0LjEzMTMgMTAuNTYxNSAxNC4xMDU3IDEwLjY1MzhDMTQuMDgwMSAxMC43NDYxIDE0LjA1MTkgMTAuODM4NCAxNC4wMjExIDEwLjkzMDdaTTE5LjM0MDQgMjEuMTg4NEwyLjIwNTc3IDQuMDUzNzVDMi4wNjczMiAzLjkxNTMgMS45OTY0OCAzLjc0MTI3IDEuOTkzMjcgMy41MzE2NUMxLjk5MDA3IDMuMzIyMDUgMi4wNjA5IDMuMTQ0ODIgMi4yMDU3NyAyLjk5OTk1QzIuMzUwNjMgMi44NTUwNyAyLjUyNjI3IDIuNzgyNjIgMi43MzI2NyAyLjc4MjYyQzIuOTM5MDggMi43ODI2MiAzLjExNDczIDIuODU1MDcgMy4yNTk1OSAyLjk5OTk1TDIwLjM5NDIgMjAuMTM0NkMyMC41MzI3IDIwLjI3MyAyMC42MDM1IDIwLjQ0NzEgMjAuNjA2NyAyMC42NTY3QzIwLjYwOTkgMjAuODY2MyAyMC41MzkxIDIxLjA0MzUgMjAuMzk0MiAyMS4xODg0QzIwLjI0OTMgMjEuMzMzMyAyMC4wNzM3IDIxLjQwNTcgMTkuODY3MyAyMS40MDU3QzE5LjY2MDkgMjEuNDA1NyAxOS40ODUzIDIxLjMzMzMgMTkuMzQwNCAyMS4xODg0Wk0xMC44OTQyIDIwVjE3LjQ1MzhDOS4zODI2OCAxNy4yNzU2IDguMDk4MDcgMTYuNjU5MiA3LjA0MDM3IDE1LjYwNDdDNS45ODI2OCAxNC41NTAzIDUuMzY2MDMgMTMuMjgwNyA1LjE5MDM5IDExLjc5NjFDNS4xNTk2MyAxMS41ODMzIDUuMjE4NiAxMS4zOTc0IDUuMzY3MzIgMTEuMjM4NEM1LjUxNjAyIDExLjA3OTUgNS43MTIxNiAxMSA1Ljk1NTc0IDExQzYuMTMxMzkgMTEgNi4yODg0NCAxMS4wNjY2IDYuNDI2ODkgMTEuMkM2LjU2NTM2IDExLjMzMzMgNi42NTMxOCAxMS40OTYxIDYuNjkwMzQgMTEuNjg4NEM2Ljg1NTczIDEyLjkwNjQgNy40MDYzNyAxMy45Mjk1IDguMzQyMjcgMTQuNzU3N0M5LjI3ODE3IDE1LjU4NTkgMTAuMzc4OCAxNiAxMS42NDQyIDE2QzEyLjI4NzggMTYgMTIuODkyNiAxNS44ODUyIDEzLjQ1ODYgMTUuNjU1N0MxNC4wMjQ3IDE1LjQyNjIgMTQuNTI1NiAxNS4xMDgzIDE0Ljk2MTUgMTQuNzAxOUwxNi4wMzA3IDE1Ljc3MTFDMTUuNTQ3NCAxNi4yMjQ5IDE0Ljk5NzQgMTYuNjAxMiAxNC4zODA3IDE2LjlDMTMuNzY0MSAxNy4xOTg3IDEzLjEwMTkgMTcuMzgzMyAxMi4zOTQyIDE3LjQ1MzhWMjBDMTIuMzk0MiAyMC4yMTI4IDEyLjMyMjQgMjAuMzkxIDEyLjE3ODggMjAuNTM0NkMxMi4wMzUyIDIwLjY3ODIgMTEuODU3IDIwLjc1IDExLjY0NDIgMjAuNzVDMTEuNDMxNCAyMC43NSAxMS4yNTMyIDIwLjY3ODIgMTEuMTA5NiAyMC41MzQ2QzEwLjk2NiAyMC4zOTEgMTAuODk0MiAyMC4yMTI4IDEwLjg5NDIgMjBaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNjdcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNjcpXCI+XG48cGF0aCBkPVwiTTE3LjI0MDMgMTQuMTgwN0wxNi4xMzY1IDEzLjA1NzZDMTYuMjQxNyAxMi44NjUzIDE2LjMzNTYgMTIuNjUzNSAxNi40MTgyIDEyLjQyMjFDMTYuNTAwOSAxMi4xOTA3IDE2LjU2MDkgMTEuOTQ2MSAxNi41OTggMTEuNjg4NEMxNi42MzUyIDExLjQ5NjEgMTYuNzI0IDExLjMzMzMgMTYuODY0NCAxMS4yQzE3LjAwNDggMTEuMDY2NiAxNy4xNjYgMTEgMTcuMzQ4IDExQzE3LjU4MTQgMTEgMTcuNzcyNCAxMS4wNzk1IDE3LjkyMTEgMTEuMjM4NEMxOC4wNjk4IDExLjM5NzQgMTguMTI4OCAxMS41ODMzIDE4LjA5OCAxMS43OTYxQzE4LjA0MDMgMTIuMjUyNSAxNy45MzcxIDEyLjY3NjUgMTcuNzg4NCAxMy4wNjgyQzE3LjYzOTcgMTMuNDU5OSAxNy40NTcgMTMuODMwNyAxNy4yNDAzIDE0LjE4MDdaTTE0LjAyMTEgMTAuOTMwN0w5LjE0NDI0IDYuMDM0NTdWNC45OTk5N0M5LjE0NDI0IDQuMzAxMjggOS4zODYyMyAzLjcwOTkzIDkuODcwMTkgMy4yMjU5NUMxMC4zNTQyIDIuNzQxOTggMTAuOTQ1NSAyLjUgMTEuNjQ0MiAyLjVDMTIuMzQyOSAyLjUgMTIuOTM0MyAyLjc0MTk4IDEzLjQxODIgMy4yMjU5NUMxMy45MDIyIDMuNzA5OTMgMTQuMTQ0MiA0LjMwMTI4IDE0LjE0NDIgNC45OTk5N1YxMC4zNDYxQzE0LjE0NDIgMTAuNDU4OSAxNC4xMzEzIDEwLjU2MTUgMTQuMTA1NyAxMC42NTM4QzE0LjA4MDEgMTAuNzQ2MSAxNC4wNTE5IDEwLjgzODQgMTQuMDIxMSAxMC45MzA3Wk0xOS4zNDA0IDIxLjE4ODRMMi4yMDU3NyA0LjA1Mzc1QzIuMDY3MzIgMy45MTUzIDEuOTk2NDggMy43NDEyNyAxLjk5MzI3IDMuNTMxNjVDMS45OTAwNyAzLjMyMjA1IDIuMDYwOSAzLjE0NDgyIDIuMjA1NzcgMi45OTk5NUMyLjM1MDYzIDIuODU1MDcgMi41MjYyNyAyLjc4MjYyIDIuNzMyNjcgMi43ODI2MkMyLjkzOTA4IDIuNzgyNjIgMy4xMTQ3MyAyLjg1NTA3IDMuMjU5NTkgMi45OTk5NUwyMC4zOTQyIDIwLjEzNDZDMjAuNTMyNyAyMC4yNzMgMjAuNjAzNSAyMC40NDcxIDIwLjYwNjcgMjAuNjU2N0MyMC42MDk5IDIwLjg2NjMgMjAuNTM5MSAyMS4wNDM1IDIwLjM5NDIgMjEuMTg4NEMyMC4yNDkzIDIxLjMzMzMgMjAuMDczNyAyMS40MDU3IDE5Ljg2NzMgMjEuNDA1N0MxOS42NjA5IDIxLjQwNTcgMTkuNDg1MyAyMS4zMzMzIDE5LjM0MDQgMjEuMTg4NFpNMTAuODk0MiAyMFYxNy40NTc2QzkuMzgyNjggMTcuMjgzMyA4LjA5ODA3IDE2LjY2NzMgNy4wNDAzNyAxNS42MDk2QzUuOTgyNjggMTQuNTUxOSA1LjM2NjAzIDEzLjI4MDcgNS4xOTAzOSAxMS43OTYxQzUuMTU5NjMgMTEuNTgzMyA1LjIxODYgMTEuMzk3NCA1LjM2NzMyIDExLjIzODRDNS41MTYwMiAxMS4wNzk1IDUuNzEyMTYgMTEgNS45NTU3NCAxMUM2LjEzMTM5IDExIDYuMjg4NDQgMTEuMDY2NiA2LjQyNjg5IDExLjJDNi41NjUzNiAxMS4zMzMzIDYuNjUzMTggMTEuNDk2MSA2LjY5MDM0IDExLjY4ODRDNi44NTU3MyAxMi45MDY0IDcuNDA2MzcgMTMuOTI5NSA4LjM0MjI3IDE0Ljc1NzdDOS4yNzgxNyAxNS41ODU5IDEwLjM3ODggMTYgMTEuNjQ0MiAxNkMxMi4yODc4IDE2IDEyLjg5MjYgMTUuODg1MiAxMy40NTg2IDE1LjY1NTdDMTQuMDI0NyAxNS40MjYyIDE0LjUyNTYgMTUuMTA4MyAxNC45NjE1IDE0LjcwMTlMMTYuMDMwNyAxNS43NzExQzE1LjU0NzQgMTYuMjI0OSAxNC45OTc0IDE2LjU5ODYgMTQuMzgwNyAxNi44OTIyQzEzLjc2NDEgMTcuMTg1OCAxMy4xMDE5IDE3LjM3NDMgMTIuMzk0MiAxNy40NTc2VjIwQzEyLjM5NDIgMjAuMjEyOCAxMi4zMjI0IDIwLjM5MSAxMi4xNzg4IDIwLjUzNDZDMTIuMDM1MiAyMC42NzgyIDExLjg1NyAyMC43NSAxMS42NDQyIDIwLjc1QzExLjQzMTQgMjAuNzUgMTEuMjUzMiAyMC42NzgyIDExLjEwOTYgMjAuNTM0NkMxMC45NjYgMjAuMzkxIDEwLjg5NDIgMjAuMjEyOCAxMC44OTQyIDIwWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDYxXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDYxKVwiPlxuPHBhdGggZD1cIk0xMS45OTk4IDEzLjVDMTEuMzAxMSAxMy41IDEwLjcwOTggMTMuMjU4IDEwLjIyNTggMTIuNzc0QzkuNzQxODEgMTIuMjkgOS40OTk4MyAxMS42OTg3IDkuNDk5ODMgMTFWNC45OTk5N0M5LjQ5OTgzIDQuMzAxMjcgOS43NDE4MSAzLjcwOTkzIDEwLjIyNTggMy4yMjU5NUMxMC43MDk4IDIuNzQxOTggMTEuMzAxMSAyLjUgMTEuOTk5OCAyLjVDMTIuNjk4NSAyLjUgMTMuMjg5OCAyLjc0MTk4IDEzLjc3MzggMy4yMjU5NUMxNC4yNTc4IDMuNzA5OTMgMTQuNDk5OCA0LjMwMTI3IDE0LjQ5OTggNC45OTk5N1YxMUMxNC40OTk4IDExLjY5ODcgMTQuMjU3OCAxMi4yOSAxMy43NzM4IDEyLjc3NEMxMy4yODk4IDEzLjI1OCAxMi42OTg1IDEzLjUgMTEuOTk5OCAxMy41Wk0xMS45OTk4IDIwLjc1QzExLjc4NyAyMC43NSAxMS42MDg4IDIwLjY3ODIgMTEuNDY1MiAyMC41MzQ2QzExLjMyMTYgMjAuMzkxIDExLjI0OTggMjAuMjEyOCAxMS4yNDk4IDIwVjE3LjQ1MzhDOS43MzgzIDE3LjI3NTYgOC40NTM2OCAxNi42NTkyIDcuMzk1OTggMTUuNjA0N0M2LjMzODMgMTQuNTUwMyA1LjcyMTY0IDEzLjI4MDcgNS41NDYgMTEuNzk2MUM1LjUxNTIyIDExLjU4MzMgNS41NzQxOSAxMS4zOTc0IDUuNzIyOSAxMS4yMzg0QzUuODcxNjIgMTEuMDc5NSA2LjA2Nzc3IDExIDYuMzExMzUgMTFDNi40ODY5OSAxMSA2LjY0NDA0IDExLjA2NjYgNi43ODI1IDExLjJDNi45MjA5NSAxMS4zMzMzIDcuMDA4NzcgMTEuNDk2MSA3LjA0NTk1IDExLjY4ODRDNy4yMTEzNCAxMi45MDY0IDcuNzYxOTggMTMuOTI5NSA4LjY5Nzg4IDE0Ljc1NzdDOS42MzM3OCAxNS41ODU5IDEwLjczNDQgMTYgMTEuOTk5OCAxNkMxMy4yNjUyIDE2IDE0LjM2NTggMTUuNTg1OSAxNS4zMDE3IDE0Ljc1NzdDMTYuMjM3NiAxMy45Mjk1IDE2Ljc4ODMgMTIuOTA2NCAxNi45NTM3IDExLjY4ODRDMTYuOTkwOCAxMS40OTYxIDE3LjA3OTYgMTEuMzMzMyAxNy4yMiAxMS4yQzE3LjM2MDQgMTEuMDY2NiAxNy41MjE2IDExIDE3LjcwMzYgMTFDMTcuOTM3IDExIDE4LjEyOCAxMS4wNzk1IDE4LjI3NjcgMTEuMjM4NEMxOC40MjU0IDExLjM5NzQgMTguNDg0NCAxMS41ODMzIDE4LjQ1MzYgMTEuNzk2MUMxOC4yNzggMTMuMjgwNyAxNy42NjEzIDE0LjU1MDMgMTYuNjAzNiAxNS42MDQ3QzE1LjU0NTkgMTYuNjU5MiAxNC4yNjEzIDE3LjI3NTYgMTIuNzQ5OCAxNy40NTM4VjIwQzEyLjc0OTggMjAuMjEyOCAxMi42NzggMjAuMzkxIDEyLjUzNDQgMjAuNTM0NkMxMi4zOTA4IDIwLjY3ODIgMTIuMjEyNiAyMC43NSAxMS45OTk4IDIwLjc1Wk0xMS45OTk4IDEyQzEyLjI4MzEgMTIgMTIuNTIwNiAxMS45MDQxIDEyLjcxMjMgMTEuNzEyNUMxMi45MDQgMTEuNTIwOCAxMi45OTk4IDExLjI4MzMgMTIuOTk5OCAxMVY0Ljk5OTk3QzEyLjk5OTggNC43MTY2NCAxMi45MDQgNC40NzkxNCAxMi43MTIzIDQuMjg3NDdDMTIuNTIwNiA0LjA5NTgxIDEyLjI4MzEgMy45OTk5NyAxMS45OTk4IDMuOTk5OTdDMTEuNzE2NSAzLjk5OTk3IDExLjQ3OSA0LjA5NTgxIDExLjI4NzMgNC4yODc0N0MxMS4wOTU2IDQuNDc5MTQgMTAuOTk5OCA0LjcxNjY0IDEwLjk5OTggNC45OTk5N1YxMUMxMC45OTk4IDExLjI4MzMgMTEuMDk1NiAxMS41MjA4IDExLjI4NzMgMTEuNzEyNUMxMS40NzkgMTEuOTA0MSAxMS43MTY1IDEyIDExLjk5OTggMTJaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNjRcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNjQpXCI+XG48cGF0aCBkPVwiTTExLjk5OTggMTMuNUMxMS4zMDExIDEzLjUgMTAuNzA5OCAxMy4yNTggMTAuMjI1OCAxMi43NzRDOS43NDE4MSAxMi4yOSA5LjQ5OTgzIDExLjY5ODcgOS40OTk4MyAxMVY0Ljk5OTk3QzkuNDk5ODMgNC4zMDEyNyA5Ljc0MTgxIDMuNzA5OTMgMTAuMjI1OCAzLjIyNTk1QzEwLjcwOTggMi43NDE5OCAxMS4zMDExIDIuNSAxMS45OTk4IDIuNUMxMi42OTg1IDIuNSAxMy4yODk4IDIuNzQxOTggMTMuNzczOCAzLjIyNTk1QzE0LjI1NzggMy43MDk5MyAxNC40OTk4IDQuMzAxMjcgMTQuNDk5OCA0Ljk5OTk3VjExQzE0LjQ5OTggMTEuNjk4NyAxNC4yNTc4IDEyLjI5IDEzLjc3MzggMTIuNzc0QzEzLjI4OTggMTMuMjU4IDEyLjY5ODUgMTMuNSAxMS45OTk4IDEzLjVaTTExLjk5OTggMjAuNzVDMTEuNzg3IDIwLjc1IDExLjYwODggMjAuNjc4MiAxMS40NjUyIDIwLjUzNDZDMTEuMzIxNiAyMC4zOTEgMTEuMjQ5OCAyMC4yMTI4IDExLjI0OTggMjBWMTcuNDU3NkM5LjczODMgMTcuMjgzMyA4LjQ1MzY4IDE2LjY2NzMgNy4zOTU5OCAxNS42MDk2QzYuMzM4MyAxNC41NTE5IDUuNzIxNjQgMTMuMjgwNyA1LjU0NiAxMS43OTYxQzUuNTE1MjIgMTEuNTgzMyA1LjU3NDE5IDExLjM5NzQgNS43MjI5IDExLjIzODRDNS44NzE2MiAxMS4wNzk1IDYuMDY3NzcgMTEgNi4zMTEzNSAxMUM2LjQ4Njk5IDExIDYuNjQ0MDQgMTEuMDY2NiA2Ljc4MjUgMTEuMkM2LjkyMDk1IDExLjMzMzMgNy4wMDg3NyAxMS40OTYxIDcuMDQ1OTUgMTEuNjg4NEM3LjIxMTM0IDEyLjkwNjQgNy43NjE5OCAxMy45Mjk1IDguNjk3ODggMTQuNzU3N0M5LjYzMzc4IDE1LjU4NTkgMTAuNzM0NCAxNiAxMS45OTk4IDE2QzEzLjI2NTIgMTYgMTQuMzY1OCAxNS41ODU5IDE1LjMwMTcgMTQuNzU3N0MxNi4yMzc2IDEzLjkyOTUgMTYuNzg4MyAxMi45MDY0IDE2Ljk1MzcgMTEuNjg4NEMxNi45OTA4IDExLjQ5NjEgMTcuMDc5NiAxMS4zMzMzIDE3LjIyIDExLjJDMTcuMzYwNCAxMS4wNjY2IDE3LjUyMTYgMTEgMTcuNzAzNiAxMUMxNy45MzcgMTEgMTguMTI4IDExLjA3OTUgMTguMjc2NyAxMS4yMzg0QzE4LjQyNTQgMTEuMzk3NCAxOC40ODQ0IDExLjU4MzMgMTguNDUzNiAxMS43OTYxQzE4LjI3OCAxMy4yODA3IDE3LjY2MTMgMTQuNTUxOSAxNi42MDM2IDE1LjYwOTZDMTUuNTQ1OSAxNi42NjczIDE0LjI2MTMgMTcuMjgzMyAxMi43NDk4IDE3LjQ1NzZWMjBDMTIuNzQ5OCAyMC4yMTI4IDEyLjY3OCAyMC4zOTEgMTIuNTM0NCAyMC41MzQ2QzEyLjM5MDggMjAuNjc4MiAxMi4yMTI2IDIwLjc1IDExLjk5OTggMjAuNzVaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgIHZpZXdCb3g9XCIwIDAgMjIgMTZcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiA+PHBhdGggZD1cIk0xMSAyLjMzNWE5Ljc3IDkuNzcgMCAwMTguODIgNS41IDkuNzYgOS43NiAwIDAxLTguODIgNS41IDkuNzYgOS43NiAwIDAxLTguODItNS41IDkuNzcgOS43NyAwIDAxOC44Mi01LjV6bTAtMmMtNSAwLTkuMjcgMy4xMS0xMSA3LjUgMS43MyA0LjM5IDYgNy41IDExIDcuNXM5LjI3LTMuMTEgMTEtNy41Yy0xLjczLTQuMzktNi03LjUtMTEtNy41em0wIDVhMi41IDIuNSAwIDAxMCA1IDIuNSAyLjUgMCAwMTAtNXptMC0yYy0yLjQ4IDAtNC41IDIuMDItNC41IDQuNXMyLjAyIDQuNSA0LjUgNC41IDQuNS0yLjAyIDQuNS00LjUtMi4wMi00LjUtNC41LTQuNXpcIiBmaWxsPVwiIzgzOEI5N1wiPjwvcGF0aD48L3N2Zz4iLCI8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiA+XG4gIDxwYXRoIGQ9XCJNMjMuNzc1IDE3Ljg5OEwxLjM1LjM2N0EuNi42IDAgMDAuNTA3LjQ2TC4xMzIuOTNhLjYuNiAwIDAwLjA5My44NDRsMjIuNDI1IDE3LjUzYS42LjYgMCAwMC44NDMtLjA5M2wuMzc1LS40NjhhLjYuNiAwIDAwLS4wOTMtLjg0NHpNMTEuMTMgNS43MjhsNS4wNTQgMy45NTJhNC4xODkgNC4xODkgMCAwMC01LjA1NS0zLjk1MnptMS43NCA4LjIxNUw3LjgxNiA5Ljk5YTQuMTkgNC4xOSAwIDAwNS4wNTQgMy45NTJ6TTEyIDQuNDM1YzMuNyAwIDcuMDkgMi4wNjMgOC45MjIgNS40YTEwLjcxIDEwLjcxIDAgMDEtMS42NSAyLjI1OGwxLjQxNiAxLjEwNmExMi41MTggMTIuNTE4IDAgMDAxLjk4My0yLjgxNyAxLjIxNCAxLjIxNCAwIDAwMC0xLjA5NEMyMC42MzYgNS4zMiAxNi42MSAyLjYzNSAxMiAyLjYzNWMtMS4zNzYgMC0yLjY5LjI2My0zLjkyNC43MDZsMS43NCAxLjM2QTkuODQzIDkuODQzIDAgMDExMiA0LjQzNXptMCAxMC44Yy0zLjcgMC03LjA5LTIuMDYyLTguOTIyLTUuNC40NS0uODIxIDEuMDA0LTEuNTggMS42NTEtMi4yNTdMMy4zMTQgNi40NzJhMTIuNTEgMTIuNTEgMCAwMC0xLjk4MyAyLjgxNiAxLjIxMyAxLjIxMyAwIDAwMCAxLjA5NUMzLjM2NCAxNC4zNSA3LjM5IDE3LjAzNSAxMiAxNy4wMzVjMS4zNzYgMCAyLjY4OS0uMjY0IDMuOTI0LS43MDVsLTEuNzQtMS4zNmE5Ljg2IDkuODYgMCAwMS0yLjE4NC4yNjV6XCIgZmlsbD1cIiM4MzhCOTdcIj48L3BhdGg+XG48L3N2Zz4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj5cbiAgPHBhdGggZmlsbD1cIiM0MjQ1NEJcIiBkPVwibTE1LjI2MiA2LjcwOC0xMS02LjUwM0MzLjM3LS4zMjMgMiAuMTkgMiAxLjQ5NVYxNC41YzAgMS4xNzIgMS4yNzIgMS44NzggMi4yNjMgMS4yOWwxMS02LjVjLjk4LS41NzguOTg0LTIuMDAyIDAtMi41OFpcIi8+XG48L3N2Zz4iLCI8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBpZD1cInBhdGhcIiBkPVwiTTEwIDAuMzEyNUM0LjY0ODQ0IDAuMzEyNSAwLjMxMjUgNC42NDg0NCAwLjMxMjUgMTBDMC4zMTI1IDE1LjM1MTYgNC42NDg0NCAxOS42ODc1IDEwIDE5LjY4NzVDMTUuMzUxNiAxOS42ODc1IDE5LjY4NzUgMTUuMzUxNiAxOS42ODc1IDEwQzE5LjY4NzUgNC42NDg0NCAxNS4zNTE2IDAuMzEyNSAxMCAwLjMxMjVaTTEwIDE3LjgxMjVDNS42OTE0MSAxNy44MTI1IDIuMTg3NSAxNC4zMDg2IDIuMTg3NSAxMEMyLjE4NzUgNS42OTE0MSA1LjY5MTQxIDIuMTg3NSAxMCAyLjE4NzVDMTQuMzA4NiAyLjE4NzUgMTcuODEyNSA1LjY5MTQxIDE3LjgxMjUgMTBDMTcuODEyNSAxNC4zMDg2IDE0LjMwODYgMTcuODEyNSAxMCAxNy44MTI1Wk02Ljg3NSA5LjM3NUM3LjU2NjQxIDkuMzc1IDguMTI1IDguODE2NDEgOC4xMjUgOC4xMjVDOC4xMjUgNy40MzM1OSA3LjU2NjQxIDYuODc1IDYuODc1IDYuODc1QzYuMTgzNTkgNi44NzUgNS42MjUgNy40MzM1OSA1LjYyNSA4LjEyNUM1LjYyNSA4LjgxNjQxIDYuMTgzNTkgOS4zNzUgNi44NzUgOS4zNzVaTTEzLjEyNSA5LjM3NUMxMy44MTY0IDkuMzc1IDE0LjM3NSA4LjgxNjQxIDE0LjM3NSA4LjEyNUMxNC4zNzUgNy40MzM1OSAxMy44MTY0IDYuODc1IDEzLjEyNSA2Ljg3NUMxMi40MzM2IDYuODc1IDExLjg3NSA3LjQzMzU5IDExLjg3NSA4LjEyNUMxMS44NzUgOC44MTY0MSAxMi40MzM2IDkuMzc1IDEzLjEyNSA5LjM3NVpNMTMuMjgxMiAxMi4yMTA5QzEyLjQ2ODggMTMuMTg3NSAxMS4yNjk1IDEzLjc1IDEwIDEzLjc1QzguNzMwNDcgMTMuNzUgNy41MzEyNSAxMy4xOTE0IDYuNzE4NzUgMTIuMjEwOUM2LjM4NjcyIDExLjgxMjUgNS43OTI5NyAxMS43NjE3IDUuMzk4NDQgMTIuMDg5OEM1IDEyLjQyMTkgNC45NDkyMiAxMy4wMTE3IDUuMjc3MzQgMTMuNDEwMkM2LjQ0OTIyIDE0LjgxNjQgOC4xNzE4OCAxNS42MjExIDEwIDE1LjYyMTFDMTEuODI4MSAxNS42MjExIDEzLjU1MDggMTQuODE2NCAxNC43MjI3IDEzLjQxMDJDMTUuMDU0NyAxMy4wMTE3IDE1IDEyLjQyMTkgMTQuNjAxNiAxMi4wODk4QzE0LjIwNyAxMS43NjE3IDEzLjYxMzMgMTEuODEyNSAxMy4yODEyIDEyLjIxMDlaXCIgZmlsbD1cIiM5RkE2QURcIi8+PC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxnIGlkPVwic3RhY2tlZF9lbWFpbFwiPlxuPG1hc2sgaWQ9XCJtYXNrMF80XzE4NTBcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3QgaWQ9XCJCb3VuZGluZyBib3hcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzRfMTg1MClcIj5cbjxwYXRoIGlkPVwic3RhY2tlZF9lbWFpbF8yXCIgZD1cIk03IDE3QzYuNDUgMTcgNS45NzkxNyAxNi44MDQyIDUuNTg3NSAxNi40MTI1QzUuMTk1ODMgMTYuMDIwOCA1IDE1LjU1IDUgMTVWNUM1IDQuNDUgNS4xOTU4MyAzLjk3OTE3IDUuNTg3NSAzLjU4NzVDNS45NzkxNyAzLjE5NTgzIDYuNDUgMyA3IDNIMjFDMjEuNTUgMyAyMi4wMjA4IDMuMTk1ODMgMjIuNDEyNSAzLjU4NzVDMjIuODA0MiAzLjk3OTE3IDIzIDQuNDUgMjMgNVYxNUMyMyAxNS41NSAyMi44MDQyIDE2LjAyMDggMjIuNDEyNSAxNi40MTI1QzIyLjAyMDggMTYuODA0MiAyMS41NSAxNyAyMSAxN0g3Wk0xMy40MjUgMTEuOUw3IDcuNDI1VjE1SDIxVjcuNDI1TDE0LjU3NSAxMS45QzE0LjM5MTcgMTIuMDMzMyAxNC4yIDEyLjEgMTQgMTIuMUMxMy44IDEyLjEgMTMuNjA4MyAxMi4wMzMzIDEzLjQyNSAxMS45Wk0xNCA5Ljg1TDIxIDVIN0wxNCA5Ljg1Wk0zIDIxQzIuNDUgMjEgMS45NzkxNyAyMC44MDQyIDEuNTg3NSAyMC40MTI1QzEuMTk1ODMgMjAuMDIwOCAxIDE5LjU1IDEgMTlWNy41QzEgNy4yMTY2NyAxLjA5NTgzIDYuOTc5MTcgMS4yODc1IDYuNzg3NUMxLjQ3OTE3IDYuNTk1ODMgMS43MTY2NyA2LjUgMiA2LjVDMi4yODMzMyA2LjUgMi41MjA4MyA2LjU5NTgzIDIuNzEyNSA2Ljc4NzVDMi45MDQxNyA2Ljk3OTE3IDMgNy4yMTY2NyAzIDcuNVYxOUgxOC41QzE4Ljc4MzMgMTkgMTkuMDIwOCAxOS4wOTU4IDE5LjIxMjUgMTkuMjg3NUMxOS40MDQyIDE5LjQ3OTIgMTkuNSAxOS43MTY3IDE5LjUgMjBDMTkuNSAyMC4yODMzIDE5LjQwNDIgMjAuNTIwOCAxOS4yMTI1IDIwLjcxMjVDMTkuMDIwOCAyMC45MDQyIDE4Ljc4MzMgMjEgMTguNSAyMUgzWlwiIGZpbGw9XCIjMDJCRjZGXCIvPlxuPC9nPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxnIGlkPVwidG9kYXlcIj5cbjxtYXNrIGlkPVwibWFzazBfNF8xOTY2XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IGlkPVwiQm91bmRpbmcgYm94XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF80XzE5NjYpXCI+XG48cGF0aCBpZD1cInRvZGF5XzJcIiBkPVwiTTkgMTYuNUM4LjMgMTYuNSA3LjcwODMzIDE2LjI1ODMgNy4yMjUgMTUuNzc1QzYuNzQxNjcgMTUuMjkxNyA2LjUgMTQuNyA2LjUgMTRDNi41IDEzLjMgNi43NDE2NyAxMi43MDgzIDcuMjI1IDEyLjIyNUM3LjcwODMzIDExLjc0MTcgOC4zIDExLjUgOSAxMS41QzkuNyAxMS41IDEwLjI5MTcgMTEuNzQxNyAxMC43NzUgMTIuMjI1QzExLjI1ODMgMTIuNzA4MyAxMS41IDEzLjMgMTEuNSAxNEMxMS41IDE0LjcgMTEuMjU4MyAxNS4yOTE3IDEwLjc3NSAxNS43NzVDMTAuMjkxNyAxNi4yNTgzIDkuNyAxNi41IDkgMTYuNVpNNSAyMkM0LjQ1IDIyIDMuOTc5MTcgMjEuODA0MiAzLjU4NzUgMjEuNDEyNUMzLjE5NTgzIDIxLjAyMDggMyAyMC41NSAzIDIwVjZDMyA1LjQ1IDMuMTk1ODMgNC45NzkxNyAzLjU4NzUgNC41ODc1QzMuOTc5MTcgNC4xOTU4MyA0LjQ1IDQgNSA0SDZWM0M2IDIuNzE2NjcgNi4wOTU4MyAyLjQ3OTE3IDYuMjg3NSAyLjI4NzVDNi40NzkxNyAyLjA5NTgzIDYuNzE2NjcgMiA3IDJDNy4yODMzMyAyIDcuNTIwODMgMi4wOTU4MyA3LjcxMjUgMi4yODc1QzcuOTA0MTcgMi40NzkxNyA4IDIuNzE2NjcgOCAzVjRIMTZWM0MxNiAyLjcxNjY3IDE2LjA5NTggMi40NzkxNyAxNi4yODc1IDIuMjg3NUMxNi40NzkyIDIuMDk1ODMgMTYuNzE2NyAyIDE3IDJDMTcuMjgzMyAyIDE3LjUyMDggMi4wOTU4MyAxNy43MTI1IDIuMjg3NUMxNy45MDQyIDIuNDc5MTcgMTggMi43MTY2NyAxOCAzVjRIMTlDMTkuNTUgNCAyMC4wMjA4IDQuMTk1ODMgMjAuNDEyNSA0LjU4NzVDMjAuODA0MiA0Ljk3OTE3IDIxIDUuNDUgMjEgNlYyMEMyMSAyMC41NSAyMC44MDQyIDIxLjAyMDggMjAuNDEyNSAyMS40MTI1QzIwLjAyMDggMjEuODA0MiAxOS41NSAyMiAxOSAyMkg1Wk01IDIwSDE5VjEwSDVWMjBaTTUgOEgxOVY2SDVWOFpcIiBmaWxsPVwiIzAyQkY2RlwiLz5cbjwvZz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzAzN1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzAzNylcIj5cbjxwYXRoIGQ9XCJNMjAuNTA1OSAxNS44NTE4TDE3Ljc2OTQgMTMuMTE1M1YxNS4wMTE1TDE2LjI2OTUgMTMuNTExNVY2LjMwNzY4QzE2LjI2OTUgNi4yMTc5MyAxNi4yNDA2IDYuMTQ0MiAxNi4xODI5IDYuMDg2NUMxNi4xMjUyIDYuMDI4OCAxNi4wNTE1IDUuOTk5OTUgMTUuOTYxNyA1Ljk5OTk1SDguNzU3ODhMNy4yNTc5MyA0LjQ5OTk4SDE1Ljk2MTdDMTYuNDY2OSA0LjQ5OTk4IDE2Ljg5NDQgNC42NzQ5OCAxNy4yNDQ0IDUuMDI0OThDMTcuNTk0NCA1LjM3NDk4IDE3Ljc2OTQgNS44MDI1NCAxNy43Njk0IDYuMzA3NjhWMTAuODg0NkwyMC41MDU5IDguMTQ4MDhDMjAuNjU5OCA3Ljk5NDI0IDIwLjgyODcgNy45NTczOCAyMS4wMTI3IDguMDM3NUMyMS4xOTY2IDguMTE3NjMgMjEuMjg4NiA4LjI2NDc1IDIxLjI4ODYgOC40Nzg4NVYxNS41MjExQzIxLjI4ODYgMTUuNzM1MiAyMS4xOTY2IDE1Ljg4MjMgMjEuMDEyNyAxNS45NjI0QzIwLjgyODcgMTYuMDQyNSAyMC42NTk4IDE2LjAwNTcgMjAuNTA1OSAxNS44NTE4Wk0xOS40NDYzIDIxLjYzMDdMMi4wMzY4IDQuMjIxMUMxLjg5ODMzIDQuMDgyNjUgMS44MjkxIDMuOTE1MzUgMS44MjkxIDMuNzE5MkMxLjgyOTEgMy41MjMwNSAxLjkwNjY3IDMuMzQ3NDIgMi4wNjE4IDMuMTkyM0MyLjIwNjY3IDMuMDQ3NDIgMi4zODIzIDIuOTc0OTggMi41ODg3IDIuOTc0OThDMi43OTUxIDIuOTc0OTggMi45NzA3MyAzLjA0NzQyIDMuMTE1NiAzLjE5MjNMMjAuNTI1MiAyMC42MDE4QzIwLjY2MzYgMjAuNzQwMyAyMC43MzI4IDIwLjkwNzYgMjAuNzMyOCAyMS4xMDM3QzIwLjczMjggMjEuMjk5OSAyMC42NTUzIDIxLjQ3NTUgMjAuNTAwMiAyMS42MzA3QzIwLjM1NTMgMjEuNzc1NSAyMC4xNzggMjEuODQ3OSAxOS45Njg0IDIxLjg0NzlDMTkuNzU4OCAyMS44NDc5IDE5LjU4NDggMjEuNzc1NSAxOS40NDYzIDIxLjYzMDdaTTQuNDQyNTUgNC41MTkyM0w1LjkyMzI4IDUuOTk5OTVINC41NzcxOEM0LjQ4NzQzIDUuOTk5OTUgNC40MTM3IDYuMDI4OCA0LjM1NiA2LjA4NjVDNC4yOTgzIDYuMTQ0MiA0LjI2OTQ1IDYuMjE3OTMgNC4yNjk0NSA2LjMwNzY4VjE3LjY5MjJDNC4yNjk0NSAxNy43ODIgNC4yOTgzIDE3Ljg1NTcgNC4zNTYgMTcuOTEzNEM0LjQxMzcgMTcuOTcxMSA0LjQ4NzQzIDE4IDQuNTc3MTggMThIMTUuOTYxN0MxNi4wNTE1IDE4IDE2LjEyNTIgMTcuOTcxMSAxNi4xODI5IDE3LjkxMzRDMTYuMjQwNiAxNy44NTU3IDE2LjI2OTUgMTcuNzgyIDE2LjI2OTUgMTcuNjkyMlYxNi4zNDYxTDE3Ljc1MDIgMTcuODI2OEMxNy43MTgxIDE4LjI5MzUgMTcuNTMxOSAxOC42ODkgMTcuMTkxNSAxOS4wMTM0QzE2Ljg1MTEgMTkuMzM3NyAxNi40NDEyIDE5LjQ5OTkgMTUuOTYxNyAxOS40OTk5SDQuNTc3MThDNC4wNzIwNCAxOS40OTk5IDMuNjQ0NDggMTkuMzI0OSAzLjI5NDQ4IDE4Ljk3NDlDMi45NDQ0OCAxOC42MjQ5IDIuNzY5NDggMTguMTk3NCAyLjc2OTQ4IDE3LjY5MjJWNi4zMDc2OEMyLjc2OTQ4IDUuODI4MTkgMi45MzE2NiA1LjQxODI2IDMuMjU2MDMgNS4wNzc4OEMzLjU4MDM4IDQuNzM3NDkgMy45NzU4OSA0LjU1MTI4IDQuNDQyNTUgNC41MTkyM1pcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA0M1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA0MylcIj5cbjxwYXRoIGQ9XCJNMTkuNDcxMiAyMS42MzA3TDIuMDYxNyA0LjIyMTFDMS45MjMyNCA0LjA4MjY1IDEuODU0IDMuOTE1MzUgMS44NTQgMy43MTkyQzEuODU0IDMuNTIzMDUgMS45MzE1NyAzLjM0NzQyIDIuMDg2NyAzLjE5MjNDMi4yMzE1NyAzLjA0NzQyIDIuNDA3MiAyLjk3NDk4IDIuNjEzNiAyLjk3NDk4QzIuODIgMi45NzQ5OCAyLjk5NTY0IDMuMDQ3NDIgMy4xNDA1IDMuMTkyM0wyMC41NTAxIDIwLjYwMThDMjAuNjg4NSAyMC43NDAzIDIwLjc1NzcgMjAuOTA3NiAyMC43NTc3IDIxLjEwMzdDMjAuNzU3NyAyMS4yOTk5IDIwLjY4MDIgMjEuNDc1NSAyMC41MjUxIDIxLjYzMDdDMjAuMzgwMiAyMS43NzU1IDIwLjIwNDUgMjEuODQ2NCAxOS45OTgxIDIxLjg0MzJDMTkuNzkxNyAyMS44Mzk5IDE5LjYxNjEgMjEuNzY5MSAxOS40NzEyIDIxLjYzMDdaTTE3Ljc5NDMgMTUuMDExNUw3LjI4MjgzIDQuNDk5OThIMTUuOTg2NkMxNi40OTE4IDQuNDk5OTggMTYuOTE5MyA0LjY3NDk4IDE3LjI2OTMgNS4wMjQ5OEMxNy42MTkzIDUuMzc0OTggMTcuNzk0MyA1LjgwMjU0IDE3Ljc5NDMgNi4zMDc2OFYxMC44ODQ2TDIwLjUzMDggOC4xNDgwOEMyMC42NzQ0IDguMDA0NDkgMjAuODQwOCA3Ljk3MDIgMjEuMDI5OSA4LjA0NTJDMjEuMjE5IDguMTIwMiAyMS4zMTM1IDguMjY0NzUgMjEuMzEzNSA4LjQ3ODg1VjE1LjUyMTFDMjEuMzEzNSAxNS43MzUyIDIxLjIxOSAxNS44Nzk3IDIxLjAyOTkgMTUuOTU0N0MyMC44NDA4IDE2LjAyOTcgMjAuNjc0NCAxNS45OTU0IDIwLjUzMDggMTUuODUxOEwxNy43OTQzIDEzLjExNTNWMTUuMDExNVpNNC40Njc0NSA0LjUxOTIzTDE3Ljc3NTEgMTcuODI2OEMxNy43NTg0IDE4LjI4MzMgMTcuNTY2MSAxOC42NzYyIDE3LjE5ODIgMTkuMDA1N0MxNi44MzAyIDE5LjMzNTIgMTYuNDE4IDE5LjQ5OTkgMTUuOTYxNiAxOS40OTk5SDQuNTc3MDhDNC4wNzE5NSAxOS40OTk5IDMuNjQ0MzggMTkuMzI0OSAzLjI5NDM4IDE4Ljk3NDlDMi45NDQzOCAxOC42MjQ5IDIuNzY5MzggMTguMTk3NCAyLjc2OTM4IDE3LjY5MjJWNi4zMDc2OEMyLjc2OTM4IDUuODUxMjYgMi45MzY2OSA1LjQzOTA4IDMuMjcxMyA1LjA3MTE1QzMuNjA1OTIgNC43MDMyIDQuMDA0NjQgNC41MTkyMyA0LjQ2NzQ1IDQuNTE5MjNaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwMzRcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwMzQpXCI+XG48cGF0aCBkPVwiTTQuNTQ3OTEgMTkuNUM0LjA0Mjc4IDE5LjUgMy42MTUyMSAxOS4zMjUgMy4yNjUyMSAxOC45NzVDMi45MTUyMyAxOC42MjUgMi43NDAyMyAxOC4xOTc0IDIuNzQwMjMgMTcuNjkyMlY2LjMwNzdDMi43NDAyMyA1LjgwMjU3IDIuOTE1MjMgNS4zNzUgMy4yNjUyMSA1LjAyNUMzLjYxNTIxIDQuNjc1IDQuMDQyNzggNC41IDQuNTQ3OTEgNC41SDE1LjkzMjVDMTYuNDM3NiA0LjUgMTYuODY1MiA0LjY3NSAxNy4yMTUyIDUuMDI1QzE3LjU2NTIgNS4zNzUgMTcuNzQwMiA1LjgwMjU3IDE3Ljc0MDIgNi4zMDc3VjEwLjg4NDZMMjAuNDc2NyA4LjE0ODFDMjAuNjMwNSA3Ljk5NDI3IDIwLjc5OTQgNy45NTc0MSAyMC45ODM0IDguMDM3NTNDMjEuMTY3NCA4LjExNzY2IDIxLjI1OTMgOC4yNjQ3NyAyMS4yNTkzIDguNDc4ODdWMTUuNTIxMUMyMS4yNTkzIDE1LjczNTIgMjEuMTY3NCAxNS44ODIzIDIwLjk4MzQgMTUuOTYyNEMyMC43OTk0IDE2LjA0MjUgMjAuNjMwNSAxNi4wMDU3IDIwLjQ3NjcgMTUuODUxOUwxNy43NDAyIDEzLjExNTNWMTcuNjkyMkMxNy43NDAyIDE4LjE5NzQgMTcuNTY1MiAxOC42MjUgMTcuMjE1MiAxOC45NzVDMTYuODY1MiAxOS4zMjUgMTYuNDM3NiAxOS41IDE1LjkzMjUgMTkuNUg0LjU0NzkxWk00LjU0NzkxIDE4SDE1LjkzMjVDMTYuMDIyMiAxOCAxNi4wOTYgMTcuOTcxMSAxNi4xNTM2IDE3LjkxMzRDMTYuMjExMyAxNy44NTU3IDE2LjI0MDIgMTcuNzgyIDE2LjI0MDIgMTcuNjkyMlY2LjMwNzdDMTYuMjQwMiA2LjIxNzk1IDE2LjIxMTMgNi4xNDQyMyAxNi4xNTM2IDYuMDg2NTJDMTYuMDk2IDYuMDI4ODIgMTYuMDIyMiA1Ljk5OTk3IDE1LjkzMjUgNS45OTk5N0g0LjU0NzkxQzQuNDU4MTYgNS45OTk5NyA0LjM4NDQzIDYuMDI4ODIgNC4zMjY3MyA2LjA4NjUyQzQuMjY5MDMgNi4xNDQyMyA0LjI0MDE4IDYuMjE3OTUgNC4yNDAxOCA2LjMwNzdWMTcuNjkyMkM0LjI0MDE4IDE3Ljc4MiA0LjI2OTAzIDE3Ljg1NTcgNC4zMjY3MyAxNy45MTM0QzQuMzg0NDMgMTcuOTcxMSA0LjQ1ODE2IDE4IDQuNTQ3OTEgMThaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNDBcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNDApXCI+XG48cGF0aCBkPVwiTTQuNTQ3OTEgMTkuNUM0LjA0Mjc4IDE5LjUgMy42MTUyMSAxOS4zMjUgMy4yNjUyMSAxOC45NzVDMi45MTUyMyAxOC42MjUgMi43NDAyMyAxOC4xOTc0IDIuNzQwMjMgMTcuNjkyMlY2LjMwNzdDMi43NDAyMyA1LjgwMjU3IDIuOTE1MjMgNS4zNzUgMy4yNjUyMSA1LjAyNUMzLjYxNTIxIDQuNjc1IDQuMDQyNzggNC41IDQuNTQ3OTEgNC41SDE1LjkzMjVDMTYuNDM3NiA0LjUgMTYuODY1MiA0LjY3NSAxNy4yMTUyIDUuMDI1QzE3LjU2NTIgNS4zNzUgMTcuNzQwMiA1LjgwMjU3IDE3Ljc0MDIgNi4zMDc3VjEwLjg4NDZMMjAuNDc2NyA4LjE0ODFDMjAuNjIwMiA4LjAwNDUyIDIwLjc4NjYgNy45NzAyMiAyMC45NzU3IDguMDQ1MjJDMjEuMTY0OCA4LjEyMDIyIDIxLjI1OTMgOC4yNjQ3NyAyMS4yNTkzIDguNDc4ODdWMTUuNTIxMUMyMS4yNTkzIDE1LjczNTIgMjEuMTY0OCAxNS44Nzk3IDIwLjk3NTcgMTUuOTU0N0MyMC43ODY2IDE2LjAyOTcgMjAuNjIwMiAxNS45OTU0IDIwLjQ3NjcgMTUuODUxOUwxNy43NDAyIDEzLjExNTNWMTcuNjkyMkMxNy43NDAyIDE4LjE5NzQgMTcuNTY1MiAxOC42MjUgMTcuMjE1MiAxOC45NzVDMTYuODY1MiAxOS4zMjUgMTYuNDM3NiAxOS41IDE1LjkzMjUgMTkuNUg0LjU0NzkxWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDU1XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDU1KVwiPlxuPHBhdGggZD1cIk0xOC45NDYyIDIxLjYxMTVMMTYuNDU3NyAxOS4xMjMxQzE2LjI1IDE5LjI0MzYgMTYuMDQzOSAxOS4zNTgzIDE1LjgzOTQgMTkuNDY3M0MxNS42MzUgMTkuNTc2MiAxNS40MjA2IDE5LjY3NzUgMTUuMTk2MiAxOS43NzExQzE0Ljk0NjIgMTkuODcyNCAxNC43MTMyIDE5Ljg0MTkgMTQuNDk3MiAxOS42Nzk4QzE0LjI4MTIgMTkuNTE3NiAxNC4xNzMyIDE5LjI5MjkgMTQuMTczMiAxOS4wMDU4QzE0LjE3MzIgMTguODY3MyAxNC4yMTQ1IDE4Ljc0NjUgMTQuMjk3MiAxOC42NDMzQzE0LjM3OTkgMTguNTQwMSAxNC40ODIxIDE4LjQ2MTUgMTQuNjAzOSAxOC40MDc3QzE0LjczNzIgMTguMzU3NyAxNC44NjggMTguMzAxOSAxNC45OTYyIDE4LjI0MDRDMTUuMTI0NCAxOC4xNzg5IDE1LjI1MDEgMTguMTExNSAxNS4zNzMxIDE4LjAzODVMMTEuNzg4NSAxNC40NTM4VjE2LjYwMzhDMTEuNzg4NSAxNy4wMDg5IDExLjYwMzYgMTcuMjg5MyAxMS4yMzM3IDE3LjQ0NTFDMTAuODYzOCAxNy42MDA5IDEwLjUzNjYgMTcuNTM2NSAxMC4yNTIgMTcuMjUxOUw3LjUwMDA4IDE0LjVINC42OTI0QzQuNDM0NzIgMTQuNSA0LjIxOTY2IDE0LjQxMzggNC4wNDcyMyAxNC4yNDEzQzMuODc0NzkgMTQuMDY4OSAzLjc4ODU4IDEzLjg1MzggMy43ODg1OCAxMy41OTYxVjEwLjQwMzlDMy43ODg1OCAxMC4xNDYyIDMuODc0NzkgOS45MzExNCA0LjA0NzIzIDkuNzU4NzFDNC4yMTk2NiA5LjU4NjI2IDQuNDM0NzIgOS41MDAwMyA0LjY5MjQgOS41MDAwM0g2LjgzNDdMMi41MjMxNSA1LjE4ODQ4QzIuMzg0NyA1LjA1MDAzIDIuMzEzODcgNC44NzYgMi4zMTA2NSA0LjY2NjM4QzIuMzA3NDUgNC40NTY3OCAyLjM3ODI4IDQuMjc5NTQgMi41MjMxNSA0LjEzNDY2QzIuNjY4MDIgMy45ODk3OSAyLjg0MzY2IDMuOTE3MzYgMy4wNTAwOCAzLjkxNzM2QzMuMjU2NDggMy45MTczNiAzLjQzMjExIDMuOTg5NzkgMy41NzY5OCA0LjEzNDY2TDIwIDIwLjU1NzdDMjAuMTM4NSAyMC42OTYyIDIwLjIwOTMgMjAuODcwMiAyMC4yMTI1IDIxLjA3OThDMjAuMjE1NyAyMS4yODk0IDIwLjE0NDkgMjEuNDY2NyAyMCAyMS42MTE1QzE5Ljg1NTEgMjEuNzU2NCAxOS42Nzk1IDIxLjgyODggMTkuNDczMSAyMS44Mjg4QzE5LjI2NjcgMjEuODI4OCAxOS4wOTExIDIxLjc1NjQgMTguOTQ2MiAyMS42MTE1Wk0xNS4xOTYyIDQuMTc4ODhDMTYuNzg3MiA0LjgzNjU4IDE4LjA2NTcgNS44NjU3NSAxOS4wMzE4IDcuMjY2MzhDMTkuOTk3OCA4LjY2NzAyIDIwLjQ4MDggMTAuMjM2NiAyMC40ODA4IDExLjk3NUMyMC40ODA4IDEyLjg1MTkgMjAuMzUwMyAxMy42OTM5IDIwLjA4OTQgMTQuNTAxQzE5LjgyODUgMTUuMzA4IDE5LjQ2MDMgMTYuMDUxOSAxOC45ODQ2IDE2LjczMjdMMTcuOTA5NiAxNS42NTc3QzE4LjI1NzEgMTUuMTE1NCAxOC41MjI1IDE0LjUzMzcgMTguNzA1OCAxMy45MTI1QzE4Ljg4OTIgMTMuMjkxNCAxOC45ODA4IDEyLjY0NTUgMTguOTgwOCAxMS45NzVDMTguOTgwOCAxMC41MzQgMTguNTgxNSA5LjIzNDk2IDE3Ljc4MjggOC4wNzc5MUMxNi45ODQgNi45MjA4NiAxNS45MjQ0IDYuMDc1NjcgMTQuNjAzOSA1LjU0MjMzQzE0LjQ2NTQgNS40ODg0OCAxNC4zNTkgNS40MDU3OSAxNC4yODQ3IDUuMjk0MjZDMTQuMjEwMyA1LjE4MjcyIDE0LjE3MzIgNS4wNTc3MiAxNC4xNzMyIDQuOTE5MjZDMTQuMTczMiA0LjY0MjM0IDE0LjI4MTIgNC40MjQ0IDE0LjQ5NzIgNC4yNjU0M0MxNC43MTMyIDQuMTA2NDcgMTQuOTQ2MiA0LjA3NzYyIDE1LjE5NjIgNC4xNzg4OFpNMTUuOTIzMSAxMy42NzEyTDE0LjE3MzIgMTEuOTIxMlY4LjI5NjE4QzE0Ljg0NzUgOC42NjI4NSAxNS4zNjg2IDkuMTc5MTkgMTUuNzM2NiA5Ljg0NTIxQzE2LjEwNDUgMTAuNTExMiAxNi4yODg1IDExLjIyOTUgMTYuMjg4NSAxMkMxNi4yODg1IDEyLjI5NDkgMTYuMjU4IDEyLjU4MjQgMTYuMTk3MiAxMi44NjI1QzE2LjEzNjMgMTMuMTQyNiAxNi4wNDQ5IDEzLjQxMjIgMTUuOTIzMSAxMy42NzEyWk0xMS43ODg1IDkuNTM2NThMOS42MzA4MyA3LjM2OTI4TDEwLjI1MiA2Ljc0ODE2QzEwLjUzNjYgNi40NjM1NCAxMC44NjM4IDYuMzk5MTIgMTEuMjMzNyA2LjU1NDg4QzExLjYwMzYgNi43MTA2NyAxMS43ODg1IDYuOTkxMTIgMTEuNzg4NSA3LjM5NjIzVjkuNTM2NThaTTEwLjI4ODUgMTUuMTVWMTIuOTUzOUw4LjMzNDY4IDExSDUuMjg4NTNWMTNIOC4xMzg1M0wxMC4yODg1IDE1LjE1WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDUyXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDUyKVwiPlxuPHBhdGggZD1cIk0xOC45NDYyIDIxLjYxMTVMMTYuNDU3NyAxOS4xMjMxQzE2LjI1IDE5LjI0MzYgMTYuMDQzOSAxOS4zNTgzIDE1LjgzOTQgMTkuNDY3M0MxNS42MzUgMTkuNTc2MiAxNS40MjA2IDE5LjY3NzUgMTUuMTk2MiAxOS43NzExQzE0Ljk0NjIgMTkuODcyNCAxNC43MTMyIDE5Ljg0MTkgMTQuNDk3MiAxOS42Nzk4QzE0LjI4MTIgMTkuNTE3NiAxNC4xNzMyIDE5LjI5MjkgMTQuMTczMiAxOS4wMDU4QzE0LjE3MzIgMTguODY3MyAxNC4yMTQ1IDE4Ljc0NjUgMTQuMjk3MiAxOC42NDMzQzE0LjM3OTkgMTguNTQwMSAxNC40ODIxIDE4LjQ2MTUgMTQuNjAzOSAxOC40MDc3QzE0LjczNzIgMTguMzU3NyAxNC44NjggMTguMzAxOSAxNC45OTYyIDE4LjI0MDRDMTUuMTI0NCAxOC4xNzg5IDE1LjI1MDEgMTguMTExNSAxNS4zNzMxIDE4LjAzODVMMTEuNzg4NSAxNC40NTM4VjE2LjYwMzhDMTEuNzg4NSAxNy4wMDg5IDExLjYwMzYgMTcuMjg5MyAxMS4yMzM3IDE3LjQ0NTFDMTAuODYzOCAxNy42MDA5IDEwLjUzNjYgMTcuNTM2NSAxMC4yNTIgMTcuMjUxOUw3LjUwMDA4IDE0LjVINC42OTI0QzQuNDM0NzIgMTQuNSA0LjIxOTY2IDE0LjQxMzggNC4wNDcyMyAxNC4yNDEzQzMuODc0NzkgMTQuMDY4OSAzLjc4ODU4IDEzLjg1MzggMy43ODg1OCAxMy41OTYxVjEwLjQwMzlDMy43ODg1OCAxMC4xNDYyIDMuODc0NzkgOS45MzExNCA0LjA0NzIzIDkuNzU4NzFDNC4yMTk2NiA5LjU4NjI2IDQuNDM0NzIgOS41MDAwMyA0LjY5MjQgOS41MDAwM0g2LjgzNDdMMi41MjMxNSA1LjE4ODQ4QzIuMzg0NyA1LjA1MDAzIDIuMzEzODcgNC44NzYgMi4zMTA2NSA0LjY2NjM4QzIuMzA3NDUgNC40NTY3OCAyLjM3ODI4IDQuMjc5NTQgMi41MjMxNSA0LjEzNDY2QzIuNjY4MDIgMy45ODk3OSAyLjg0MzY2IDMuOTE3MzYgMy4wNTAwOCAzLjkxNzM2QzMuMjU2NDggMy45MTczNiAzLjQzMjExIDMuOTg5NzkgMy41NzY5OCA0LjEzNDY2TDIwIDIwLjU1NzdDMjAuMTM4NSAyMC42OTYyIDIwLjIwOTMgMjAuODcwMiAyMC4yMTI1IDIxLjA3OThDMjAuMjE1NyAyMS4yODk0IDIwLjE0NDkgMjEuNDY2NyAyMCAyMS42MTE1QzE5Ljg1NTEgMjEuNzU2NCAxOS42Nzk1IDIxLjgyODggMTkuNDczMSAyMS44Mjg4QzE5LjI2NjcgMjEuODI4OCAxOS4wOTExIDIxLjc1NjQgMTguOTQ2MiAyMS42MTE1Wk0xNS4xOTYyIDQuMTc4ODhDMTYuNzg3MiA0LjgzNjU4IDE4LjA2NTcgNS44NjU3NSAxOS4wMzE4IDcuMjY2MzhDMTkuOTk3OCA4LjY2NzAyIDIwLjQ4MDggMTAuMjM2NiAyMC40ODA4IDExLjk3NUMyMC40ODA4IDEyLjg1MTkgMjAuMzUwMyAxMy42OTM5IDIwLjA4OTQgMTQuNTAxQzE5LjgyODUgMTUuMzA4IDE5LjQ2MDMgMTYuMDUxOSAxOC45ODQ2IDE2LjczMjdMMTcuOTA5NiAxNS42NTc3QzE4LjI1NzEgMTUuMTE1NCAxOC41MjI1IDE0LjUzMzcgMTguNzA1OCAxMy45MTI1QzE4Ljg4OTIgMTMuMjkxNCAxOC45ODA4IDEyLjY0NTUgMTguOTgwOCAxMS45NzVDMTguOTgwOCAxMC41MzQgMTguNTgxNSA5LjIzNDk2IDE3Ljc4MjggOC4wNzc5MUMxNi45ODQgNi45MjA4NiAxNS45MjQ0IDYuMDc1NjcgMTQuNjAzOSA1LjU0MjMzQzE0LjQ2NTQgNS40ODg0OCAxNC4zNTkgNS40MDU3OSAxNC4yODQ3IDUuMjk0MjZDMTQuMjEwMyA1LjE4MjcyIDE0LjE3MzIgNS4wNTc3MiAxNC4xNzMyIDQuOTE5MjZDMTQuMTczMiA0LjY0MjM0IDE0LjI4MTIgNC40MjQ0IDE0LjQ5NzIgNC4yNjU0M0MxNC43MTMyIDQuMTA2NDcgMTQuOTQ2MiA0LjA3NzYyIDE1LjE5NjIgNC4xNzg4OFpNMTUuOTIzMSAxMy42NzEyTDE0LjE3MzIgMTEuOTIxMlY4LjI5NjE4QzE0Ljg0NzUgOC42NjI4NSAxNS4zNjg2IDkuMTc5MTkgMTUuNzM2NiA5Ljg0NTIxQzE2LjEwNDUgMTAuNTExMiAxNi4yODg1IDExLjIyOTUgMTYuMjg4NSAxMkMxNi4yODg1IDEyLjI5NDkgMTYuMjU4IDEyLjU4MjQgMTYuMTk3MiAxMi44NjI1QzE2LjEzNjMgMTMuMTQyNiAxNi4wNDQ5IDEzLjQxMjIgMTUuOTIzMSAxMy42NzEyWk0xMS43ODg1IDkuNTM2NThMOS42MzA4MyA3LjM2OTI4TDEwLjI1MiA2Ljc0ODE2QzEwLjUzNjYgNi40NjM1NCAxMC44NjM4IDYuMzk5MTIgMTEuMjMzNyA2LjU1NDg4QzExLjYwMzYgNi43MTA2NyAxMS43ODg1IDYuOTkxMTIgMTEuNzg4NSA3LjM5NjIzVjkuNTM2NThaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNThcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNTgpXCI+XG48cGF0aCBkPVwiTTE1LjA2MTQgMTkuNzcxMUMxNC44MTE0IDE5Ljg3MjQgMTQuNTc4NCAxOS44NDE4IDE0LjM2MjQgMTkuNjc5M0MxNC4xNDY0IDE5LjUxNjggMTQuMDM4NCAxOS4yOTE4IDE0LjAzODQgMTkuMDA0M0MxNC4wMzg0IDE4Ljg2NjggMTQuMDc5NyAxOC43NDY0IDE0LjE2MjQgMTguNjQzMkMxNC4yNDUxIDE4LjU0IDE0LjM0NzMgMTguNDYxNSAxNC40NjkxIDE4LjQwNzdDMTUuNzg5NiAxNy44NzQzIDE2Ljg0OTMgMTcuMDI5MSAxNy42NDggMTUuODcyMUMxOC40NDY3IDE0LjcxNSAxOC44NDYxIDEzLjQxNiAxOC44NDYxIDExLjk3NUMxOC44NDYxIDEwLjUzNCAxOC40NDY3IDkuMjM0OTQgMTcuNjQ4IDguMDc3ODlDMTYuODQ5MyA2LjkyMDg0IDE1Ljc4OTYgNi4wNzU2NCAxNC40NjkxIDUuNTQyMzFDMTQuMzMwNyA1LjQ4ODQ2IDE0LjIyNDMgNS40MDUyIDE0LjE0OTkgNS4yOTI1NEMxNC4wNzU2IDUuMTc5ODcgMTQuMDM4NCA1LjA1NDY5IDE0LjAzODQgNC45MTY5OUMxNC4wMzg0IDQuNjQxNTcgMTQuMTQ2NCA0LjQyNDM4IDE0LjM2MjQgNC4yNjU0MUMxNC41Nzg0IDQuMTA2NDQgMTQuODExNCA0LjA3NzU5IDE1LjA2MTQgNC4xNzg4NkMxNi42NDYgNC44MzY1NiAxNy45MjI5IDUuODY1MDMgMTguODkyMiA3LjI2NDI2QzE5Ljg2MTQgOC42NjM0OCAyMC4zNDYgMTAuMjMzNyAyMC4zNDYgMTEuOTc1QzIwLjM0NiAxMy43MTYzIDE5Ljg2MTQgMTUuMjg2NSAxOC44OTIyIDE2LjY4NTdDMTcuOTIyOSAxOC4wODQ5IDE2LjY0NiAxOS4xMTM0IDE1LjA2MTQgMTkuNzcxMVpNNC41NTc2MyAxNC41QzQuMzAxNTUgMTQuNSA0LjA4Njg5IDE0LjQxMzMgMy45MTM2NiAxNC4yNDAxQzMuNzQwNDMgMTQuMDY2OSAzLjY1MzgxIDEzLjg1MjIgMy42NTM4MSAxMy41OTYxVjEwLjQwMzlDMy42NTM4MSAxMC4xNDc4IDMuNzQwNDMgOS45MzMxMiAzLjkxMzY2IDkuNzU5ODlDNC4wODY4OSA5LjU4NjY0IDQuMzAxNTUgOS41MDAwMSA0LjU1NzYzIDkuNTAwMDFINy4zNjUzMUwxMC4xMTcyIDYuNzQ4MTRDMTAuNDAxOCA2LjQ2MzUyIDEwLjcyOTEgNi4zOTk1OSAxMS4wOTg5IDYuNTU2MzZDMTEuNDY4OCA2LjcxMzE0IDExLjY1MzcgNi45OTMwOSAxMS42NTM3IDcuMzk2MjFWMTYuNjAzOEMxMS42NTM3IDE3LjAwNjkgMTEuNDY4OCAxNy4yODY4IDExLjA5ODkgMTcuNDQzNkMxMC43MjkxIDE3LjYwMDQgMTAuNDAxOCAxNy41MzY1IDEwLjExNzIgMTcuMjUxOEw3LjM2NTMxIDE0LjVINC41NTc2M1pNMTQuMDM4NCAxNS42NTM4VjguMjk2MTZDMTQuNjg1OCA4LjY0NjE2IDE1LjIwMDIgOS4xNTQxNyAxNS41ODE2IDkuODIwMTlDMTUuOTYzIDEwLjQ4NjIgMTYuMTUzNyAxMS4yMTI4IDE2LjE1MzcgMTJDMTYuMTUzNyAxMi43ODcyIDE1Ljk2MyAxMy41MDU0IDE1LjU4MTYgMTQuMTU0OEMxNS4yMDAyIDE0LjgwNDEgMTQuNjg1OCAxNS4zMDM4IDE0LjAzODQgMTUuNjUzOFpNMTAuMTUzOCA4Ljg0OTk5TDguMDAzNzYgMTFINS4xNTM3NlYxM0g4LjAwMzc2TDEwLjE1MzggMTUuMTVWOC44NDk5OVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA0NlwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA0NilcIj5cbjxwYXRoIGQ9XCJNMTUuMDYxNCAxOS43NzExQzE0LjgxMTQgMTkuODcyNCAxNC41Nzg0IDE5Ljg0MTkgMTQuMzYyNCAxOS42Nzk4QzE0LjE0NjQgMTkuNTE3NiAxNC4wMzg0IDE5LjI5MjkgMTQuMDM4NCAxOS4wMDU3QzE0LjAzODQgMTguODY3MyAxNC4wNzk3IDE4Ljc0NjQgMTQuMTYyNCAxOC42NDMyQzE0LjI0NTEgMTguNTQgMTQuMzQ3MyAxOC40NjE1IDE0LjQ2OTEgMTguNDA3N0MxNS43ODk2IDE3Ljg3NDMgMTYuODQ5MyAxNy4wMjkxIDE3LjY0OCAxNS44NzIxQzE4LjQ0NjcgMTQuNzE1IDE4Ljg0NjEgMTMuNDE2IDE4Ljg0NjEgMTEuOTc1QzE4Ljg0NjEgMTAuNTM0IDE4LjQ0NjcgOS4yMzQ5NCAxNy42NDggOC4wNzc4OUMxNi44NDkzIDYuOTIwODQgMTUuNzg5NiA2LjA3NTY0IDE0LjQ2OTEgNS41NDIzMUMxNC4zMzA3IDUuNDg4NDYgMTQuMjI0MyA1LjQwNTc3IDE0LjE0OTkgNS4yOTQyNEMxNC4wNzU2IDUuMTgyNyAxNC4wMzg0IDUuMDU3NyAxNC4wMzg0IDQuOTE5MjRDMTQuMDM4NCA0LjY0MjMyIDE0LjE0NjQgNC40MjQzOCAxNC4zNjI0IDQuMjY1NDFDMTQuNTc4NCA0LjEwNjQ0IDE0LjgxMTQgNC4wNzc1OSAxNS4wNjE0IDQuMTc4ODZDMTYuNjQ2IDQuODM2NTYgMTcuOTIyOSA1Ljg2NTczIDE4Ljg5MjIgNy4yNjYzNkMxOS44NjE0IDguNjY2OTkgMjAuMzQ2IDEwLjIzNjUgMjAuMzQ2IDExLjk3NUMyMC4zNDYgMTMuNzEzNCAxOS44NjE0IDE1LjI4MyAxOC44OTIyIDE2LjY4MzZDMTcuOTIyOSAxOC4wODQyIDE2LjY0NiAxOS4xMTM0IDE1LjA2MTQgMTkuNzcxMVpNNC41NTc2MyAxNC41QzQuMjk5OTUgMTQuNSA0LjA4NDg5IDE0LjQxMzcgMy45MTI0NiAxNC4yNDEzQzMuNzQwMDMgMTQuMDY4OSAzLjY1MzgxIDEzLjg1MzggMy42NTM4MSAxMy41OTYxVjEwLjQwMzlDMy42NTM4MSAxMC4xNDYyIDMuNzQwMDMgOS45MzExMiAzLjkxMjQ2IDkuNzU4NjlDNC4wODQ4OSA5LjU4NjI0IDQuMjk5OTUgOS41MDAwMSA0LjU1NzYzIDkuNTAwMDFINy4zNjUzMUwxMC4xMTcyIDYuNzQ4MTRDMTAuNDAxOCA2LjQ2MzUyIDEwLjcyOTEgNi4zOTkwOSAxMS4wOTg5IDYuNTU0ODZDMTEuNDY4OCA2LjcxMDY0IDExLjY1MzcgNi45OTEwOSAxMS42NTM3IDcuMzk2MjFWMTYuNjAzOEMxMS42NTM3IDE3LjAwODkgMTEuNDY4OCAxNy4yODkzIDExLjA5ODkgMTcuNDQ1MUMxMC43MjkxIDE3LjYwMDkgMTAuNDAxOCAxNy41MzY1IDEwLjExNzIgMTcuMjUxOEw3LjM2NTMxIDE0LjVINC41NTc2M1pNMTQuMDM4NCAxNS42NTM4VjguMjk2MTZDMTQuNjg1OCA4LjY0NjE2IDE1LjIwMDIgOS4xNTQxNyAxNS41ODE2IDkuODIwMTlDMTUuOTYzIDEwLjQ4NjIgMTYuMTUzNyAxMS4yMTI4IDE2LjE1MzcgMTJDMTYuMTUzNyAxMi43ODcyIDE1Ljk2MyAxMy41MDU0IDE1LjU4MTYgMTQuMTU0OEMxNS4yMDAyIDE0LjgwNDEgMTQuNjg1OCAxNS4zMDM4IDE0LjAzODQgMTUuNjUzOFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzU1NV8zMzY3XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNTU1XzMzNjcpXCI+XG48cGF0aCBkPVwiTTMuNDI1NTUgMjAuNUMzLjI1NjA1IDIwLjUgMy4xMDM4MiAyMC40NTg2IDIuOTY4ODcgMjAuMzc1N0MyLjgzMzkyIDIwLjI5MjkgMi43Mjg5NyAyMC4xODM2IDIuNjU0IDIwLjA0ODFDMi41NzYwMiAxOS45MTM1IDIuNTMzMTIgMTkuNzY3NiAyLjUyNTMyIDE5LjYxMDZDMi41MTc1MiAxOS40NTM1IDIuNTU5OSAxOS4yOTggMi42NTI0NSAxOS4xNDRMMTEuMjEzMiA0LjM1NjE2QzExLjMwNTcgNC4yMDIxMiAxMS40MjE2IDQuMDg4MjUgMTEuNTYwNyA0LjAxNDUzQzExLjY5OTggMy45NDA4IDExLjg0NjIgMy45MDM5MyAxMi4wMDAxIDMuOTAzOTNDMTIuMTUzOSAzLjkwMzkzIDEyLjMwMDQgMy45NDA4IDEyLjQzOTUgNC4wMTQ1M0MxMi41Nzg2IDQuMDg4MjUgMTIuNjk0NCA0LjIwMjEyIDEyLjc4NyA0LjM1NjE2TDIxLjM0NzcgMTkuMTQ0QzIxLjQ0MDMgMTkuMjk4IDIxLjQ4MjcgMTkuNDUzNSAyMS40NzQ5IDE5LjYxMDZDMjEuNDY3MSAxOS43Njc2IDIxLjQyNDIgMTkuOTEzNSAyMS4zNDYyIDIwLjA0ODFDMjEuMjcxMiAyMC4xODM2IDIxLjE2NjMgMjAuMjkyOSAyMS4wMzEzIDIwLjM3NTdDMjAuODk2NCAyMC40NTg2IDIwLjc0NDEgMjAuNSAyMC41NzQ2IDIwLjVIMy40MjU1NVpNNC40NTAxIDE5SDE5LjU1MDFMMTIuMDAwMSA2LjAwMDAzTDQuNDUwMSAxOVpNMTIuMDAwMSAxNy44MDc3QzEyLjIyODkgMTcuODA3NyAxMi40MjA4IDE3LjczMDMgMTIuNTc1NiAxNy41NzU1QzEyLjczMDQgMTcuNDIwNyAxMi44MDc4IDE3LjIyODkgMTIuODA3OCAxN0MxMi44MDc4IDE2Ljc3MTIgMTIuNzMwNCAxNi41Nzk0IDEyLjU3NTYgMTYuNDI0NkMxMi40MjA4IDE2LjI2OTggMTIuMjI4OSAxNi4xOTI0IDEyLjAwMDEgMTYuMTkyNEMxMS43NzEyIDE2LjE5MjQgMTEuNTc5NCAxNi4yNjk4IDExLjQyNDYgMTYuNDI0NkMxMS4yNjk4IDE2LjU3OTQgMTEuMTkyNCAxNi43NzEyIDExLjE5MjQgMTdDMTEuMTkyNCAxNy4yMjg5IDExLjI2OTggMTcuNDIwNyAxMS40MjQ2IDE3LjU3NTVDMTEuNTc5NCAxNy43MzAzIDExLjc3MTIgMTcuODA3NyAxMi4wMDAxIDE3LjgwNzdaTTEyLjAwMDQgMTUuMTkyNEMxMi4yMTMgMTUuMTkyNCAxMi4zOTExIDE1LjEyMDUgMTIuNTM0NyAxNC45NzY3QzEyLjY3ODMgMTQuODMzIDEyLjc1MDEgMTQuNjU0OSAxMi43NTAxIDE0LjQ0MjRWMTAuOTQyM0MxMi43NTAxIDEwLjcyOTggMTIuNjc4MiAxMC41NTE3IDEyLjUzNDQgMTAuNDA4QzEyLjM5MDYgMTAuMjY0MiAxMi4yMTI0IDEwLjE5MjQgMTEuOTk5OCAxMC4xOTI0QzExLjc4NzIgMTAuMTkyNCAxMS42MDkxIDEwLjI2NDIgMTEuNDY1NSAxMC40MDhDMTEuMzIxOSAxMC41NTE3IDExLjI1MDEgMTAuNzI5OCAxMS4yNTAxIDEwLjk0MjNWMTQuNDQyNEMxMS4yNTAxIDE0LjY1NDkgMTEuMzIyIDE0LjgzMyAxMS40NjU4IDE0Ljk3NjdDMTEuNjA5NiAxNS4xMjA1IDExLjc4NzggMTUuMTkyNCAxMi4wMDA0IDE1LjE5MjRaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJNMi43MjUgMjFhLjk3My45NzMgMCAwIDEtLjg1LS41IDEuMDk4IDEuMDk4IDAgMCAxLS4xMzgtLjQ4OC44OTguODk4IDAgMCAxIC4xMzgtLjUxMmw5LjI1LTE2YS45OC45OCAwIDAgMSAuMzg3LS4zNzVDMTEuNjcxIDMuMDQyIDExLjgzMyAzIDEyIDNjLjE2NiAwIC4zMjkuMDQyLjQ4Ny4xMjVhLjk4My45ODMgMCAwIDEgLjM4OC4zNzVsOS4yNSAxNmMuMS4xNjcuMTQ2LjMzNy4xMzcuNTEyYTEuMDk4IDEuMDk4IDAgMCAxLS4xMzcuNDg4Ljk3My45NzMgMCAwIDEtLjg1LjVIMi43MjVaTTEyIDE4Yy4yODMgMCAuNTItLjA5Ni43MTItLjI4OEEuOTY4Ljk2OCAwIDAgMCAxMyAxN2EuOTY4Ljk2OCAwIDAgMC0uMjg4LS43MTJBLjk2OC45NjggMCAwIDAgMTIgMTZhLjk2OC45NjggMCAwIDAtLjcxMy4yODhBLjk2OC45NjggMCAwIDAgMTEgMTdjMCAuMjgzLjA5Ni41Mi4yODcuNzEyLjE5Mi4xOTIuNDMuMjg4LjcxMy4yODhabTAtM2EuOTcuOTcgMCAwIDAgLjcxMi0uMjg3QS45NjguOTY4IDAgMCAwIDEzIDE0di0zYS45NjguOTY4IDAgMCAwLS4yODgtLjcxM0EuOTY4Ljk2OCAwIDAgMCAxMiAxMGEuOTY4Ljk2OCAwIDAgMC0uNzEzLjI4N0EuOTY4Ljk2OCAwIDAgMCAxMSAxMXYzYzAgLjI4My4wOTYuNTIuMjg3LjcxMy4xOTIuMTkxLjQzLjI4Ny43MTMuMjg3WlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiaW1wb3J0ICQ3VjRKWiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ3VjRKWiRmb3J3YXJkUmVmLCBjcmVhdGVFbGVtZW50IGFzICQ3VjRKWiRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ3VjRKWiRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIExhYmVsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRiNzNhNmM2Njg1ZTcyMTg0JHZhciROQU1FID0gJ0xhYmVsJztcbmNvbnN0ICRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1ID0gLyojX19QVVJFX18qLyAkN1Y0SlokZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkN1Y0SlokY3JlYXRlRWxlbWVudCgkN1Y0SlokUHJpbWl0aXZlLmxhYmVsLCAkN1Y0SlokYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBvbk1vdXNlRG93bjogKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9wcm9wcyRvbk1vdXNlRG93bjtcbiAgICAgICAgICAgIChfcHJvcHMkb25Nb3VzZURvd24gPSBwcm9wcy5vbk1vdXNlRG93bikgPT09IG51bGwgfHwgX3Byb3BzJG9uTW91c2VEb3duID09PSB2b2lkIDAgfHwgX3Byb3BzJG9uTW91c2VEb3duLmNhbGwocHJvcHMsIGV2ZW50KTsgLy8gcHJldmVudCB0ZXh0IHNlbGVjdGlvbiB3aGVuIGRvdWJsZSBjbGlja2luZyBsYWJlbFxuICAgICAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkICYmIGV2ZW50LmRldGFpbCA+IDEpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYjA0YmUyOWFhMjAxZDRmNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkYjczYTZjNjY4NWU3MjE4NCR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGIwNGJlMjlhYTIwMWQ0ZjU7XG5cblxuXG5cbmV4cG9ydCB7JGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGIwNGJlMjlhYTIwMWQ0ZjUgYXMgTGFiZWwsICRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiZnVuY3Rpb24gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59XG5cbmZ1bmN0aW9uIGdldExlbmd0aEZyb21BeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbn1cblxuZnVuY3Rpb24gZ2V0U2lkZShwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzBdO1xufVxuXG5mdW5jdGlvbiBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBbJ3RvcCcsICdib3R0b20nXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpID8gJ3gnIDogJ3knO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChfcmVmLCBwbGFjZW1lbnQsIHJ0bCkge1xuICBsZXQge1xuICAgIHJlZmVyZW5jZSxcbiAgICBmbG9hdGluZ1xuICB9ID0gX3JlZjtcbiAgY29uc3QgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGZsb2F0aW5nLndpZHRoIC8gMjtcbiAgY29uc3QgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBmbG9hdGluZy5oZWlnaHQgLyAyO1xuICBjb25zdCBtYWluQXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRMZW5ndGhGcm9tQXhpcyhtYWluQXhpcyk7XG4gIGNvbnN0IGNvbW1vbkFsaWduID0gcmVmZXJlbmNlW2xlbmd0aF0gLyAyIC0gZmxvYXRpbmdbbGVuZ3RoXSAvIDI7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBtYWluQXhpcyA9PT0gJ3gnO1xuICBsZXQgY29vcmRzO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGZsb2F0aW5nLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdsZWZ0JzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBmbG9hdGluZy53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54LFxuICAgICAgICB5OiByZWZlcmVuY2UueVxuICAgICAgfTtcbiAgfVxuICBzd2l0Y2ggKGdldEFsaWdubWVudChwbGFjZW1lbnQpKSB7XG4gICAgY2FzZSAnc3RhcnQnOlxuICAgICAgY29vcmRzW21haW5BeGlzXSAtPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmQnOlxuICAgICAgY29vcmRzW21haW5BeGlzXSArPSBjb21tb25BbGlnbiAqIChydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMSk7XG4gICAgICBicmVhaztcbiAgfVxuICByZXR1cm4gY29vcmRzO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSByZWZlcmVuY2UgZWxlbWVudCB3aGVuIGl0IGlzIGdpdmVuIGEgY2VydGFpbiBwb3NpdGlvbmluZyBzdHJhdGVneS5cbiAqXG4gKiBUaGlzIGV4cG9ydCBkb2VzIG5vdCBoYXZlIGFueSBgcGxhdGZvcm1gIGludGVyZmFjZSBsb2dpYy4gWW91IHdpbGwgbmVlZCB0b1xuICogd3JpdGUgb25lIGZvciB0aGUgcGxhdGZvcm0geW91IGFyZSB1c2luZyBGbG9hdGluZyBVSSB3aXRoLlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSBhc3luYyAocmVmZXJlbmNlLCBmbG9hdGluZywgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtXG4gIH0gPSBjb25maWc7XG4gIGNvbnN0IHZhbGlkTWlkZGxld2FyZSA9IG1pZGRsZXdhcmUuZmlsdGVyKEJvb2xlYW4pO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGZsb2F0aW5nKSk7XG4gIGxldCByZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nLFxuICAgIHN0cmF0ZWd5XG4gIH0pO1xuICBsZXQge1xuICAgIHgsXG4gICAgeVxuICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHBsYWNlbWVudCwgcnRsKTtcbiAgbGV0IHN0YXRlZnVsUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICBsZXQgbWlkZGxld2FyZURhdGEgPSB7fTtcbiAgbGV0IHJlc2V0Q291bnQgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkTWlkZGxld2FyZS5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHtcbiAgICAgIG5hbWUsXG4gICAgICBmblxuICAgIH0gPSB2YWxpZE1pZGRsZXdhcmVbaV07XG4gICAgY29uc3Qge1xuICAgICAgeDogbmV4dFgsXG4gICAgICB5OiBuZXh0WSxcbiAgICAgIGRhdGEsXG4gICAgICByZXNldFxuICAgIH0gPSBhd2FpdCBmbih7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIGluaXRpYWxQbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIHBsYWNlbWVudDogc3RhdGVmdWxQbGFjZW1lbnQsXG4gICAgICBzdHJhdGVneSxcbiAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgcmVjdHMsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgZmxvYXRpbmdcbiAgICAgIH1cbiAgICB9KTtcbiAgICB4ID0gbmV4dFggIT0gbnVsbCA/IG5leHRYIDogeDtcbiAgICB5ID0gbmV4dFkgIT0gbnVsbCA/IG5leHRZIDogeTtcbiAgICBtaWRkbGV3YXJlRGF0YSA9IHtcbiAgICAgIC4uLm1pZGRsZXdhcmVEYXRhLFxuICAgICAgW25hbWVdOiB7XG4gICAgICAgIC4uLm1pZGRsZXdhcmVEYXRhW25hbWVdLFxuICAgICAgICAuLi5kYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAocmVzZXQgJiYgcmVzZXRDb3VudCA8PSA1MCkge1xuICAgICAgcmVzZXRDb3VudCsrO1xuICAgICAgaWYgKHR5cGVvZiByZXNldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlc2V0LnBsYWNlbWVudCkge1xuICAgICAgICAgIHN0YXRlZnVsUGxhY2VtZW50ID0gcmVzZXQucGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXNldC5yZWN0cykge1xuICAgICAgICAgIHJlY3RzID0gcmVzZXQucmVjdHMgPT09IHRydWUgPyBhd2FpdCBwbGF0Zm9ybS5nZXRFbGVtZW50UmVjdHMoe1xuICAgICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgICAgZmxvYXRpbmcsXG4gICAgICAgICAgICBzdHJhdGVneVxuICAgICAgICAgIH0pIDogcmVzZXQucmVjdHM7XG4gICAgICAgIH1cbiAgICAgICAgKHtcbiAgICAgICAgICB4LFxuICAgICAgICAgIHlcbiAgICAgICAgfSA9IGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KHJlY3RzLCBzdGF0ZWZ1bFBsYWNlbWVudCwgcnRsKSk7XG4gICAgICB9XG4gICAgICBpID0gLTE7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4LFxuICAgIHksXG4gICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICBzdHJhdGVneSxcbiAgICBtaWRkbGV3YXJlRGF0YVxuICB9O1xufTtcblxuZnVuY3Rpb24gZXZhbHVhdGUodmFsdWUsIHBhcmFtKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB2YWx1ZShwYXJhbSkgOiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIC4uLnBhZGRpbmdcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2lkZU9iamVjdEZyb21QYWRkaW5nKHBhZGRpbmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IGV4cGFuZFBhZGRpbmdPYmplY3QocGFkZGluZykgOiB7XG4gICAgdG9wOiBwYWRkaW5nLFxuICAgIHJpZ2h0OiBwYWRkaW5nLFxuICAgIGJvdHRvbTogcGFkZGluZyxcbiAgICBsZWZ0OiBwYWRkaW5nXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICByZXR1cm4ge1xuICAgIC4uLnJlY3QsXG4gICAgdG9wOiByZWN0LnksXG4gICAgbGVmdDogcmVjdC54LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB3aXRoIGFuIG9iamVjdCBvZiBvdmVyZmxvdyBzaWRlIG9mZnNldHMgdGhhdCBkZXRlcm1pbmUgaG93IG11Y2ggdGhlXG4gKiBlbGVtZW50IGlzIG92ZXJmbG93aW5nIGEgZ2l2ZW4gY2xpcHBpbmcgYm91bmRhcnkgb24gZWFjaCBzaWRlLlxuICogLSBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBib3VuZGFyeSBieSB0aGF0IG51bWJlciBvZiBwaXhlbHNcbiAqIC0gbmVnYXRpdmUgPSBob3cgbWFueSBwaXhlbHMgbGVmdCBiZWZvcmUgaXQgd2lsbCBvdmVyZmxvd1xuICogLSAwID0gbGllcyBmbHVzaCB3aXRoIHRoZSBib3VuZGFyeVxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2RldGVjdE92ZXJmbG93XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdE92ZXJmbG93KHN0YXRlLCBvcHRpb25zKSB7XG4gIHZhciBfYXdhaXQkcGxhdGZvcm0kaXNFbGU7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGF0Zm9ybSxcbiAgICByZWN0cyxcbiAgICBlbGVtZW50cyxcbiAgICBzdHJhdGVneVxuICB9ID0gc3RhdGU7XG4gIGNvbnN0IHtcbiAgICBib3VuZGFyeSA9ICdjbGlwcGluZ0FuY2VzdG9ycycsXG4gICAgcm9vdEJvdW5kYXJ5ID0gJ3ZpZXdwb3J0JyxcbiAgICBlbGVtZW50Q29udGV4dCA9ICdmbG9hdGluZycsXG4gICAgYWx0Qm91bmRhcnkgPSBmYWxzZSxcbiAgICBwYWRkaW5nID0gMFxuICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICBjb25zdCBwYWRkaW5nT2JqZWN0ID0gZ2V0U2lkZU9iamVjdEZyb21QYWRkaW5nKHBhZGRpbmcpO1xuICBjb25zdCBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyAncmVmZXJlbmNlJyA6ICdmbG9hdGluZyc7XG4gIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIGNvbnN0IGNsaXBwaW5nQ2xpZW50UmVjdCA9IHJlY3RUb0NsaWVudFJlY3QoYXdhaXQgcGxhdGZvcm0uZ2V0Q2xpcHBpbmdSZWN0KHtcbiAgICBlbGVtZW50OiAoKF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA9IGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChlbGVtZW50KSkpICE9IG51bGwgPyBfYXdhaXQkcGxhdGZvcm0kaXNFbGUgOiB0cnVlKSA/IGVsZW1lbnQgOiBlbGVtZW50LmNvbnRleHRFbGVtZW50IHx8IChhd2FpdCAocGxhdGZvcm0uZ2V0RG9jdW1lbnRFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudHMuZmxvYXRpbmcpKSksXG4gICAgYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5LFxuICAgIHN0cmF0ZWd5XG4gIH0pKTtcbiAgY29uc3QgcmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSAnZmxvYXRpbmcnID8ge1xuICAgIC4uLnJlY3RzLmZsb2F0aW5nLFxuICAgIHgsXG4gICAgeVxuICB9IDogcmVjdHMucmVmZXJlbmNlO1xuICBjb25zdCBvZmZzZXRQYXJlbnQgPSBhd2FpdCAocGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgY29uc3Qgb2Zmc2V0U2NhbGUgPSAoYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KG9mZnNldFBhcmVudCkpKSA/IChhd2FpdCAocGxhdGZvcm0uZ2V0U2NhbGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldFNjYWxlKG9mZnNldFBhcmVudCkpKSB8fCB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH0gOiB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChwbGF0Zm9ybS5jb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCA/IGF3YWl0IHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0KHtcbiAgICByZWN0LFxuICAgIG9mZnNldFBhcmVudCxcbiAgICBzdHJhdGVneVxuICB9KSA6IHJlY3QpO1xuICByZXR1cm4ge1xuICAgIHRvcDogKGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGJvdHRvbTogKGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSkgLyBvZmZzZXRTY2FsZS55LFxuICAgIGxlZnQ6IChjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQpIC8gb2Zmc2V0U2NhbGUueCxcbiAgICByaWdodDogKGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodCkgLyBvZmZzZXRTY2FsZS54XG4gIH07XG59XG5cbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5cbmZ1bmN0aW9uIHdpdGhpbihtaW4kMSwgdmFsdWUsIG1heCQxKSB7XG4gIHJldHVybiBtYXgobWluJDEsIG1pbih2YWx1ZSwgbWF4JDEpKTtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGFuIGlubmVyIGVsZW1lbnQgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgc28gdGhhdCBpdFxuICogYXBwZWFycyBjZW50ZXJlZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBvcHRpb25zID0+ICh7XG4gIG5hbWU6ICdhcnJvdycsXG4gIG9wdGlvbnMsXG4gIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgY29uc3Qge1xuICAgICAgeCxcbiAgICAgIHksXG4gICAgICBwbGFjZW1lbnQsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHNcbiAgICB9ID0gc3RhdGU7XG4gICAgLy8gU2luY2UgYGVsZW1lbnRgIGlzIHJlcXVpcmVkLCB3ZSBkb24ndCBQYXJ0aWFsPD4gdGhlIHR5cGUuXG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudCxcbiAgICAgIHBhZGRpbmcgPSAwXG4gICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKSB8fCB7fTtcbiAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRTaWRlT2JqZWN0RnJvbVBhZGRpbmcocGFkZGluZyk7XG4gICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgeCxcbiAgICAgIHlcbiAgICB9O1xuICAgIGNvbnN0IGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICBjb25zdCBsZW5ndGggPSBnZXRMZW5ndGhGcm9tQXhpcyhheGlzKTtcbiAgICBjb25zdCBhcnJvd0RpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnQpO1xuICAgIGNvbnN0IGlzWUF4aXMgPSBheGlzID09PSAneSc7XG4gICAgY29uc3QgbWluUHJvcCA9IGlzWUF4aXMgPyAndG9wJyA6ICdsZWZ0JztcbiAgICBjb25zdCBtYXhQcm9wID0gaXNZQXhpcyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICBjb25zdCBjbGllbnRQcm9wID0gaXNZQXhpcyA/ICdjbGllbnRIZWlnaHQnIDogJ2NsaWVudFdpZHRoJztcbiAgICBjb25zdCBlbmREaWZmID0gcmVjdHMucmVmZXJlbmNlW2xlbmd0aF0gKyByZWN0cy5yZWZlcmVuY2VbYXhpc10gLSBjb29yZHNbYXhpc10gLSByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIGNvbnN0IHN0YXJ0RGlmZiA9IGNvb3Jkc1theGlzXSAtIHJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgICBjb25zdCBhcnJvd09mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50KSk7XG4gICAgbGV0IGNsaWVudFNpemUgPSBhcnJvd09mZnNldFBhcmVudCA/IGFycm93T2Zmc2V0UGFyZW50W2NsaWVudFByb3BdIDogMDtcblxuICAgIC8vIERPTSBwbGF0Zm9ybSBjYW4gcmV0dXJuIGB3aW5kb3dgIGFzIHRoZSBgb2Zmc2V0UGFyZW50YC5cbiAgICBpZiAoIWNsaWVudFNpemUgfHwgIShhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQoYXJyb3dPZmZzZXRQYXJlbnQpKSkpIHtcbiAgICAgIGNsaWVudFNpemUgPSBlbGVtZW50cy5mbG9hdGluZ1tjbGllbnRQcm9wXSB8fCByZWN0cy5mbG9hdGluZ1tsZW5ndGhdO1xuICAgIH1cbiAgICBjb25zdCBjZW50ZXJUb1JlZmVyZW5jZSA9IGVuZERpZmYgLyAyIC0gc3RhcnREaWZmIC8gMjtcblxuICAgIC8vIElmIHRoZSBwYWRkaW5nIGlzIGxhcmdlIGVub3VnaCB0aGF0IGl0IGNhdXNlcyB0aGUgYXJyb3cgdG8gbm8gbG9uZ2VyIGJlXG4gICAgLy8gY2VudGVyZWQsIG1vZGlmeSB0aGUgcGFkZGluZyBzbyB0aGF0IGl0IGlzIGNlbnRlcmVkLlxuICAgIGNvbnN0IGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcgPSBjbGllbnRTaXplIC8gMiAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiAtIDE7XG4gICAgY29uc3QgbWluUGFkZGluZyA9IG1pbihwYWRkaW5nT2JqZWN0W21pblByb3BdLCBsYXJnZXN0UG9zc2libGVQYWRkaW5nKTtcbiAgICBjb25zdCBtYXhQYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWF4UHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuXG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJvdyBkb2Vzbid0IG92ZXJmbG93IHRoZSBmbG9hdGluZyBlbGVtZW50IGlmIHRoZSBjZW50ZXJcbiAgICAvLyBwb2ludCBpcyBvdXRzaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50J3MgYm91bmRzLlxuICAgIGNvbnN0IG1pbiQxID0gbWluUGFkZGluZztcbiAgICBjb25zdCBtYXggPSBjbGllbnRTaXplIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLSBtYXhQYWRkaW5nO1xuICAgIGNvbnN0IGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gICAgY29uc3Qgb2Zmc2V0ID0gd2l0aGluKG1pbiQxLCBjZW50ZXIsIG1heCk7XG5cbiAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsIGVub3VnaCB0aGF0IHRoZSBhcnJvdydzIHBhZGRpbmcgY2F1c2VzIGl0IHRvXG4gICAgLy8gdG8gcG9pbnQgdG8gbm90aGluZyBmb3IgYW4gYWxpZ25lZCBwbGFjZW1lbnQsIGFkanVzdCB0aGUgb2Zmc2V0IG9mIHRoZVxuICAgIC8vIGZsb2F0aW5nIGVsZW1lbnQgaXRzZWxmLiBUaGlzIHN0b3BzIGBzaGlmdCgpYCBmcm9tIHRha2luZyBhY3Rpb24sIGJ1dCBjYW5cbiAgICAvLyBiZSB3b3JrZWQgYXJvdW5kIGJ5IGNhbGxpbmcgaXQgYWdhaW4gYWZ0ZXIgdGhlIGBhcnJvdygpYCBpZiBkZXNpcmVkLlxuICAgIGNvbnN0IHNob3VsZEFkZE9mZnNldCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9IG51bGwgJiYgY2VudGVyICE9IG9mZnNldCAmJiByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSAoY2VudGVyIDwgbWluJDEgPyBtaW5QYWRkaW5nIDogbWF4UGFkZGluZykgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgPCAwO1xuICAgIGNvbnN0IGFsaWdubWVudE9mZnNldCA9IHNob3VsZEFkZE9mZnNldCA/IGNlbnRlciA8IG1pbiQxID8gbWluJDEgLSBjZW50ZXIgOiBtYXggLSBjZW50ZXIgOiAwO1xuICAgIHJldHVybiB7XG4gICAgICBbYXhpc106IGNvb3Jkc1theGlzXSAtIGFsaWdubWVudE9mZnNldCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgW2F4aXNdOiBvZmZzZXQsXG4gICAgICAgIGNlbnRlck9mZnNldDogY2VudGVyIC0gb2Zmc2V0XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSk7XG5cbmNvbnN0IHNpZGVzID0gWyd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXTtcbmNvbnN0IGFsbFBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovc2lkZXMucmVkdWNlKChhY2MsIHNpZGUpID0+IGFjYy5jb25jYXQoc2lkZSwgc2lkZSArIFwiLXN0YXJ0XCIsIHNpZGUgKyBcIi1lbmRcIiksIFtdKTtcblxuY29uc3Qgb3Bwb3NpdGVTaWRlTWFwID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIHNpZGUgPT4gb3Bwb3NpdGVTaWRlTWFwW3NpZGVdKTtcbn1cblxuZnVuY3Rpb24gZ2V0QWxpZ25tZW50U2lkZXMocGxhY2VtZW50LCByZWN0cywgcnRsKSB7XG4gIGlmIChydGwgPT09IHZvaWQgMCkge1xuICAgIHJ0bCA9IGZhbHNlO1xuICB9XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBtYWluQXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBsZW5ndGggPSBnZXRMZW5ndGhGcm9tQXhpcyhtYWluQXhpcyk7XG4gIGxldCBtYWluQWxpZ25tZW50U2lkZSA9IG1haW5BeGlzID09PSAneCcgPyBhbGlnbm1lbnQgPT09IChydGwgPyAnZW5kJyA6ICdzdGFydCcpID8gJ3JpZ2h0JyA6ICdsZWZ0JyA6IGFsaWdubWVudCA9PT0gJ3N0YXJ0JyA/ICdib3R0b20nIDogJ3RvcCc7XG4gIGlmIChyZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSA+IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF0pIHtcbiAgICBtYWluQWxpZ25tZW50U2lkZSA9IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1haW46IG1haW5BbGlnbm1lbnRTaWRlLFxuICAgIGNyb3NzOiBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluQWxpZ25tZW50U2lkZSlcbiAgfTtcbn1cblxuY29uc3Qgb3Bwb3NpdGVBbGlnbm1lbnRNYXAgPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZnVuY3Rpb24gZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGFsaWdubWVudCA9PiBvcHBvc2l0ZUFsaWdubWVudE1hcFthbGlnbm1lbnRdKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQsIGF1dG9BbGlnbm1lbnQsIGFsbG93ZWRQbGFjZW1lbnRzKSB7XG4gIGNvbnN0IGFsbG93ZWRQbGFjZW1lbnRzU29ydGVkQnlBbGlnbm1lbnQgPSBhbGlnbm1lbnQgPyBbLi4uYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSA9PT0gYWxpZ25tZW50KSwgLi4uYWxsb3dlZFBsYWNlbWVudHMuZmlsdGVyKHBsYWNlbWVudCA9PiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSAhPT0gYWxpZ25tZW50KV0gOiBhbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldFNpZGUocGxhY2VtZW50KSA9PT0gcGxhY2VtZW50KTtcbiAgcmV0dXJuIGFsbG93ZWRQbGFjZW1lbnRzU29ydGVkQnlBbGlnbm1lbnQuZmlsdGVyKHBsYWNlbWVudCA9PiB7XG4gICAgaWYgKGFsaWdubWVudCkge1xuICAgICAgcmV0dXJuIGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQgfHwgKGF1dG9BbGlnbm1lbnQgPyBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpICE9PSBwbGFjZW1lbnQgOiBmYWxzZSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbn1cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGNob29zaW5nIHRoZSBwbGFjZW1lbnRcbiAqIHRoYXQgaGFzIHRoZSBtb3N0IHNwYWNlIGF2YWlsYWJsZSBhdXRvbWF0aWNhbGx5LCB3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSBhXG4gKiBwcmVmZXJyZWQgcGxhY2VtZW50LiBBbHRlcm5hdGl2ZSB0byBgZmxpcGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1BsYWNlbWVudFxuICovXG5jb25zdCBhdXRvUGxhY2VtZW50ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdhdXRvUGxhY2VtZW50JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGF1dG9QLCBfbWlkZGxld2FyZURhdGEkYXV0b1AyLCBfcGxhY2VtZW50c1RoYXRGaXRPbkU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzLFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgY3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGFsaWdubWVudCxcbiAgICAgICAgYWxsb3dlZFBsYWNlbWVudHMgPSBhbGxQbGFjZW1lbnRzLFxuICAgICAgICBhdXRvQWxpZ25tZW50ID0gdHJ1ZSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgcGxhY2VtZW50cyA9IGFsaWdubWVudCAhPT0gdW5kZWZpbmVkIHx8IGFsbG93ZWRQbGFjZW1lbnRzID09PSBhbGxQbGFjZW1lbnRzID8gZ2V0UGxhY2VtZW50TGlzdChhbGlnbm1lbnQgfHwgbnVsbCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIDogYWxsb3dlZFBsYWNlbWVudHM7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gKChfbWlkZGxld2FyZURhdGEkYXV0b1AgPSBtaWRkbGV3YXJlRGF0YS5hdXRvUGxhY2VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGF1dG9QLmluZGV4KSB8fCAwO1xuICAgICAgY29uc3QgY3VycmVudFBsYWNlbWVudCA9IHBsYWNlbWVudHNbY3VycmVudEluZGV4XTtcbiAgICAgIGlmIChjdXJyZW50UGxhY2VtZW50ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluLFxuICAgICAgICBjcm9zc1xuICAgICAgfSA9IGdldEFsaWdubWVudFNpZGVzKGN1cnJlbnRQbGFjZW1lbnQsIHJlY3RzLCBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSkpO1xuXG4gICAgICAvLyBNYWtlIGBjb21wdXRlQ29vcmRzYCBzdGFydCBmcm9tIHRoZSByaWdodCBwbGFjZS5cbiAgICAgIGlmIChwbGFjZW1lbnQgIT09IGN1cnJlbnRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnRzWzBdXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudE92ZXJmbG93cyA9IFtvdmVyZmxvd1tnZXRTaWRlKGN1cnJlbnRQbGFjZW1lbnQpXSwgb3ZlcmZsb3dbbWFpbl0sIG92ZXJmbG93W2Nyb3NzXV07XG4gICAgICBjb25zdCBhbGxPdmVyZmxvd3MgPSBbLi4uKCgoX21pZGRsZXdhcmVEYXRhJGF1dG9QMiA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AyLm92ZXJmbG93cykgfHwgW10pLCB7XG4gICAgICAgIHBsYWNlbWVudDogY3VycmVudFBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzOiBjdXJyZW50T3ZlcmZsb3dzXG4gICAgICB9XTtcbiAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW2N1cnJlbnRJbmRleCArIDFdO1xuXG4gICAgICAvLyBUaGVyZSBhcmUgbW9yZSBwbGFjZW1lbnRzIHRvIGNoZWNrLlxuICAgICAgaWYgKG5leHRQbGFjZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBpbmRleDogY3VycmVudEluZGV4ICsgMSxcbiAgICAgICAgICAgIG92ZXJmbG93czogYWxsT3ZlcmZsb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50c1NvcnRlZEJ5TW9zdFNwYWNlID0gYWxsT3ZlcmZsb3dzLm1hcChkID0+IHtcbiAgICAgICAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KGQucGxhY2VtZW50KTtcbiAgICAgICAgcmV0dXJuIFtkLnBsYWNlbWVudCwgYWxpZ25tZW50ICYmIGNyb3NzQXhpcyA/XG4gICAgICAgIC8vIENoZWNrIGFsb25nIHRoZSBtYWluQXhpcyBhbmQgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgZC5vdmVyZmxvd3Muc2xpY2UoMCwgMikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApIDpcbiAgICAgICAgLy8gQ2hlY2sgb25seSB0aGUgbWFpbkF4aXMuXG4gICAgICAgIGQub3ZlcmZsb3dzWzBdLCBkLm92ZXJmbG93c107XG4gICAgICB9KS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGUgPSBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UuZmlsdGVyKGQgPT4gZFsyXS5zbGljZSgwLFxuICAgICAgLy8gQWxpZ25lZCBwbGFjZW1lbnRzIHNob3VsZCBub3QgY2hlY2sgdGhlaXIgb3Bwb3NpdGUgY3Jvc3NBeGlzXG4gICAgICAvLyBzaWRlLlxuICAgICAgZ2V0QWxpZ25tZW50KGRbMF0pID8gMiA6IDMpLmV2ZXJ5KHYgPT4gdiA8PSAwKSk7XG4gICAgICBjb25zdCByZXNldFBsYWNlbWVudCA9ICgoX3BsYWNlbWVudHNUaGF0Rml0T25FID0gcGxhY2VtZW50c1RoYXRGaXRPbkVhY2hTaWRlWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX3BsYWNlbWVudHNUaGF0Rml0T25FWzBdKSB8fCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2VbMF1bMF07XG4gICAgICBpZiAocmVzZXRQbGFjZW1lbnQgIT09IHBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHJlc2V0UGxhY2VtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldEV4cGFuZGVkUGxhY2VtZW50cyhwbGFjZW1lbnQpIHtcbiAgY29uc3Qgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBnZXRTaWRlTGlzdChzaWRlLCBpc1N0YXJ0LCBydGwpIHtcbiAgY29uc3QgbHIgPSBbJ2xlZnQnLCAncmlnaHQnXTtcbiAgY29uc3QgcmwgPSBbJ3JpZ2h0JywgJ2xlZnQnXTtcbiAgY29uc3QgdGIgPSBbJ3RvcCcsICdib3R0b20nXTtcbiAgY29uc3QgYnQgPSBbJ2JvdHRvbScsICd0b3AnXTtcbiAgc3dpdGNoIChzaWRlKSB7XG4gICAgY2FzZSAndG9wJzpcbiAgICBjYXNlICdib3R0b20nOlxuICAgICAgaWYgKHJ0bCkgcmV0dXJuIGlzU3RhcnQgPyBybCA6IGxyO1xuICAgICAgcmV0dXJuIGlzU3RhcnQgPyBsciA6IHJsO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgIHJldHVybiBpc1N0YXJ0ID8gdGIgOiBidDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtdO1xuICB9XG59XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKHBsYWNlbWVudCwgZmxpcEFsaWdubWVudCwgZGlyZWN0aW9uLCBydGwpIHtcbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGxldCBsaXN0ID0gZ2V0U2lkZUxpc3QoZ2V0U2lkZShwbGFjZW1lbnQpLCBkaXJlY3Rpb24gPT09ICdzdGFydCcsIHJ0bCk7XG4gIGlmIChhbGlnbm1lbnQpIHtcbiAgICBsaXN0ID0gbGlzdC5tYXAoc2lkZSA9PiBzaWRlICsgXCItXCIgKyBhbGlnbm1lbnQpO1xuICAgIGlmIChmbGlwQWxpZ25tZW50KSB7XG4gICAgICBsaXN0ID0gbGlzdC5jb25jYXQobGlzdC5tYXAoZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpc3Q7XG59XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IGZsaXBwaW5nIHRoZSBgcGxhY2VtZW50YFxuICogaW4gb3JkZXIgdG8ga2VlcCBpdCBpbiB2aWV3IHdoZW4gdGhlIHByZWZlcnJlZCBwbGFjZW1lbnQocykgd2lsbCBvdmVyZmxvdyB0aGVcbiAqIGNsaXBwaW5nIGJvdW5kYXJ5LiBBbHRlcm5hdGl2ZSB0byBgYXV0b1BsYWNlbWVudGAuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZmxpcFxuICovXG5jb25zdCBmbGlwID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdmbGlwJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGZsaXA7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBpbml0aWFsUGxhY2VtZW50LFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZSxcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzOiBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICAgIGZhbGxiYWNrU3RyYXRlZ3kgPSAnYmVzdEZpdCcsXG4gICAgICAgIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gPSAnbm9uZScsXG4gICAgICAgIGZsaXBBbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNCYXNlUGxhY2VtZW50ID0gZ2V0U2lkZShpbml0aWFsUGxhY2VtZW50KSA9PT0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKTtcbiAgICAgIGNvbnN0IGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwQWxpZ25tZW50ID8gW2dldE9wcG9zaXRlUGxhY2VtZW50KGluaXRpYWxQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50KSk7XG4gICAgICBpZiAoIXNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyAmJiBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uICE9PSAnbm9uZScpIHtcbiAgICAgICAgZmFsbGJhY2tQbGFjZW1lbnRzLnB1c2goLi4uZ2V0T3Bwb3NpdGVBeGlzUGxhY2VtZW50cyhpbml0aWFsUGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uLCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBsYWNlbWVudHMgPSBbaW5pdGlhbFBsYWNlbWVudCwgLi4uZmFsbGJhY2tQbGFjZW1lbnRzXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBvdmVyZmxvd3MgPSBbXTtcbiAgICAgIGxldCBvdmVyZmxvd3NEYXRhID0gKChfbWlkZGxld2FyZURhdGEkZmxpcCA9IG1pZGRsZXdhcmVEYXRhLmZsaXApID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkZmxpcC5vdmVyZmxvd3MpIHx8IFtdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgb3ZlcmZsb3dzLnB1c2gob3ZlcmZsb3dbc2lkZV0pO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBtYWluLFxuICAgICAgICAgIGNyb3NzXG4gICAgICAgIH0gPSBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpO1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1ttYWluXSwgb3ZlcmZsb3dbY3Jvc3NdKTtcbiAgICAgIH1cbiAgICAgIG92ZXJmbG93c0RhdGEgPSBbLi4ub3ZlcmZsb3dzRGF0YSwge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIG92ZXJmbG93c1xuICAgICAgfV07XG5cbiAgICAgIC8vIE9uZSBvciBtb3JlIHNpZGVzIGlzIG92ZXJmbG93aW5nLlxuICAgICAgaWYgKCFvdmVyZmxvd3MuZXZlcnkoc2lkZSA9PiBzaWRlIDw9IDApKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDIsIF9vdmVyZmxvd3NEYXRhJGZpbHRlcjtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gKCgoX21pZGRsZXdhcmVEYXRhJGZsaXAyID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwMi5pbmRleCkgfHwgMCkgKyAxO1xuICAgICAgICBjb25zdCBuZXh0UGxhY2VtZW50ID0gcGxhY2VtZW50c1tuZXh0SW5kZXhdO1xuICAgICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICAgIC8vIFRyeSBuZXh0IHBsYWNlbWVudCBhbmQgcmUtcnVuIHRoZSBsaWZlY3ljbGUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgaW5kZXg6IG5leHRJbmRleCxcbiAgICAgICAgICAgICAgb3ZlcmZsb3dzOiBvdmVyZmxvd3NEYXRhXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiBuZXh0UGxhY2VtZW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0LCBmaW5kIHRoZSBjYW5kaWRhdGVzIHRoYXQgZml0IG9uIHRoZSBtYWluQXhpcyBzaWRlIG9mIG92ZXJmbG93LFxuICAgICAgICAvLyB0aGVuIGZpbmQgdGhlIHBsYWNlbWVudCB0aGF0IGZpdHMgdGhlIGJlc3Qgb24gdGhlIG1haW4gY3Jvc3NBeGlzIHNpZGUuXG4gICAgICAgIGxldCByZXNldFBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIgPSBvdmVyZmxvd3NEYXRhLmZpbHRlcihkID0+IGQub3ZlcmZsb3dzWzBdIDw9IDApLnNvcnQoKGEsIGIpID0+IGEub3ZlcmZsb3dzWzFdIC0gYi5vdmVyZmxvd3NbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkZmlsdGVyLnBsYWNlbWVudDtcblxuICAgICAgICAvLyBPdGhlcndpc2UgZmFsbGJhY2suXG4gICAgICAgIGlmICghcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICBzd2l0Y2ggKGZhbGxiYWNrU3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jlc3RGaXQnOlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIF9vdmVyZmxvd3NEYXRhJG1hcCRzbztcbiAgICAgICAgICAgICAgICBjb25zdCBwbGFjZW1lbnQgPSAoX292ZXJmbG93c0RhdGEkbWFwJHNvID0gb3ZlcmZsb3dzRGF0YS5tYXAoZCA9PiBbZC5wbGFjZW1lbnQsIGQub3ZlcmZsb3dzLmZpbHRlcihvdmVyZmxvdyA9PiBvdmVyZmxvdyA+IDApLnJlZHVjZSgoYWNjLCBvdmVyZmxvdykgPT4gYWNjICsgb3ZlcmZsb3csIDApXSkuc29ydCgoYSwgYikgPT4gYVsxXSAtIGJbMV0pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX292ZXJmbG93c0RhdGEkbWFwJHNvWzBdO1xuICAgICAgICAgICAgICAgIGlmIChwbGFjZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnaW5pdGlhbFBsYWNlbWVudCc6XG4gICAgICAgICAgICAgIHJlc2V0UGxhY2VtZW50ID0gaW5pdGlhbFBsYWNlbWVudDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwbGFjZW1lbnQgIT09IHJlc2V0UGxhY2VtZW50KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3QpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aFxuICB9O1xufVxuZnVuY3Rpb24gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG92ZXJmbG93KSB7XG4gIHJldHVybiBzaWRlcy5zb21lKHNpZGUgPT4gb3ZlcmZsb3dbc2lkZV0gPj0gMCk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gaGlkZSB0aGUgZmxvYXRpbmcgZWxlbWVudCBpbiBhcHBsaWNhYmxlIHNpdHVhdGlvbnMsIHN1Y2ggYXNcbiAqIHdoZW4gaXQgaXMgbm90IGluIHRoZSBzYW1lIGNsaXBwaW5nIGNvbnRleHQgYXMgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2hpZGVcbiAqL1xuY29uc3QgaGlkZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnaGlkZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICByZWN0c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBzdHJhdGVneSA9ICdyZWZlcmVuY2VIaWRkZW4nLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XG4gICAgICAgIGNhc2UgJ3JlZmVyZW5jZUhpZGRlbic6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3RzLnJlZmVyZW5jZSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlSGlkZGVuT2Zmc2V0czogb2Zmc2V0cyxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW46IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnZXNjYXBlZCc6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnMsXG4gICAgICAgICAgICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMuZmxvYXRpbmcpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGVzY2FwZWRPZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIGVzY2FwZWQ6IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvZmZzZXRzKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldEJvdW5kaW5nUmVjdChyZWN0cykge1xuICBjb25zdCBtaW5YID0gbWluKC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICBjb25zdCBtaW5ZID0gbWluKC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QudG9wKSk7XG4gIGNvbnN0IG1heFggPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5yaWdodCkpO1xuICBjb25zdCBtYXhZID0gbWF4KC4uLnJlY3RzLm1hcChyZWN0ID0+IHJlY3QuYm90dG9tKSk7XG4gIHJldHVybiB7XG4gICAgeDogbWluWCxcbiAgICB5OiBtaW5ZLFxuICAgIHdpZHRoOiBtYXhYIC0gbWluWCxcbiAgICBoZWlnaHQ6IG1heFkgLSBtaW5ZXG4gIH07XG59XG5mdW5jdGlvbiBnZXRSZWN0c0J5TGluZShyZWN0cykge1xuICBjb25zdCBzb3J0ZWRSZWN0cyA9IHJlY3RzLnNsaWNlKCkuc29ydCgoYSwgYikgPT4gYS55IC0gYi55KTtcbiAgY29uc3QgZ3JvdXBzID0gW107XG4gIGxldCBwcmV2UmVjdCA9IG51bGw7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkUmVjdHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCByZWN0ID0gc29ydGVkUmVjdHNbaV07XG4gICAgaWYgKCFwcmV2UmVjdCB8fCByZWN0LnkgLSBwcmV2UmVjdC55ID4gcHJldlJlY3QuaGVpZ2h0IC8gMikge1xuICAgICAgZ3JvdXBzLnB1c2goW3JlY3RdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ3JvdXBzW2dyb3Vwcy5sZW5ndGggLSAxXS5wdXNoKHJlY3QpO1xuICAgIH1cbiAgICBwcmV2UmVjdCA9IHJlY3Q7XG4gIH1cbiAgcmV0dXJuIGdyb3Vwcy5tYXAocmVjdCA9PiByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChyZWN0KSkpO1xufVxuLyoqXG4gKiBQcm92aWRlcyBpbXByb3ZlZCBwb3NpdGlvbmluZyBmb3IgaW5saW5lIHJlZmVyZW5jZSBlbGVtZW50cyB0aGF0IGNhbiBzcGFuXG4gKiBvdmVyIG11bHRpcGxlIGxpbmVzLCBzdWNoIGFzIGh5cGVybGlua3Mgb3IgcmFuZ2Ugc2VsZWN0aW9ucy5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9pbmxpbmVcbiAqL1xuY29uc3QgaW5saW5lID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdpbmxpbmUnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBlbGVtZW50cyxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBzdHJhdGVneVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgLy8gQSBNb3VzZUV2ZW50J3MgY2xpZW50e1gsWX0gY29vcmRzIGNhbiBiZSB1cCB0byAyIHBpeGVscyBvZmYgYVxuICAgICAgLy8gQ2xpZW50UmVjdCdzIGJvdW5kcywgZGVzcGl0ZSB0aGUgZXZlbnQgbGlzdGVuZXIgYmVpbmcgdHJpZ2dlcmVkLiBBXG4gICAgICAvLyBwYWRkaW5nIG9mIDIgc2VlbXMgdG8gaGFuZGxlIHRoaXMgaXNzdWUuXG4gICAgICBjb25zdCB7XG4gICAgICAgIHBhZGRpbmcgPSAyLFxuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgbmF0aXZlQ2xpZW50UmVjdHMgPSBBcnJheS5mcm9tKChhd2FpdCAocGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldENsaWVudFJlY3RzKGVsZW1lbnRzLnJlZmVyZW5jZSkpKSB8fCBbXSk7XG4gICAgICBjb25zdCBjbGllbnRSZWN0cyA9IGdldFJlY3RzQnlMaW5lKG5hdGl2ZUNsaWVudFJlY3RzKTtcbiAgICAgIGNvbnN0IGZhbGxiYWNrID0gcmVjdFRvQ2xpZW50UmVjdChnZXRCb3VuZGluZ1JlY3QobmF0aXZlQ2xpZW50UmVjdHMpKTtcbiAgICAgIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRTaWRlT2JqZWN0RnJvbVBhZGRpbmcocGFkZGluZyk7XG4gICAgICBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSB0d28gcmVjdHMgYW5kIHRoZXkgYXJlIGRpc2pvaW5lZC5cbiAgICAgICAgaWYgKGNsaWVudFJlY3RzLmxlbmd0aCA9PT0gMiAmJiBjbGllbnRSZWN0c1swXS5sZWZ0ID4gY2xpZW50UmVjdHNbMV0ucmlnaHQgJiYgeCAhPSBudWxsICYmIHkgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IHJlY3QgaW4gd2hpY2ggdGhlIHBvaW50IGlzIGZ1bGx5IGluc2lkZS5cbiAgICAgICAgICByZXR1cm4gY2xpZW50UmVjdHMuZmluZChyZWN0ID0+IHggPiByZWN0LmxlZnQgLSBwYWRkaW5nT2JqZWN0LmxlZnQgJiYgeCA8IHJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0ICYmIHkgPiByZWN0LnRvcCAtIHBhZGRpbmdPYmplY3QudG9wICYmIHkgPCByZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSB8fCBmYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZXJlIGFyZSAyIG9yIG1vcmUgY29ubmVjdGVkIHJlY3RzLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID49IDIpIHtcbiAgICAgICAgICBpZiAoZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkgPT09ICd4Jykge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RSZWN0ID0gY2xpZW50UmVjdHNbMF07XG4gICAgICAgICAgICBjb25zdCBsYXN0UmVjdCA9IGNsaWVudFJlY3RzW2NsaWVudFJlY3RzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgY29uc3QgaXNUb3AgPSBnZXRTaWRlKHBsYWNlbWVudCkgPT09ICd0b3AnO1xuICAgICAgICAgICAgY29uc3QgdG9wID0gZmlyc3RSZWN0LnRvcDtcbiAgICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IGxhc3RSZWN0LmJvdHRvbTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBpc1RvcCA/IGZpcnN0UmVjdC5sZWZ0IDogbGFzdFJlY3QubGVmdDtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gaXNUb3AgPyBmaXJzdFJlY3QucmlnaHQgOiBsYXN0UmVjdC5yaWdodDtcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gYm90dG9tIC0gdG9wO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgICBib3R0b20sXG4gICAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgICB5OiB0b3BcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGlzTGVmdFNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCkgPT09ICdsZWZ0JztcbiAgICAgICAgICBjb25zdCBtYXhSaWdodCA9IG1heCguLi5jbGllbnRSZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gICAgICAgICAgY29uc3QgbWluTGVmdCA9IG1pbiguLi5jbGllbnRSZWN0cy5tYXAocmVjdCA9PiByZWN0LmxlZnQpKTtcbiAgICAgICAgICBjb25zdCBtZWFzdXJlUmVjdHMgPSBjbGllbnRSZWN0cy5maWx0ZXIocmVjdCA9PiBpc0xlZnRTaWRlID8gcmVjdC5sZWZ0ID09PSBtaW5MZWZ0IDogcmVjdC5yaWdodCA9PT0gbWF4UmlnaHQpO1xuICAgICAgICAgIGNvbnN0IHRvcCA9IG1lYXN1cmVSZWN0c1swXS50b3A7XG4gICAgICAgICAgY29uc3QgYm90dG9tID0gbWVhc3VyZVJlY3RzW21lYXN1cmVSZWN0cy5sZW5ndGggLSAxXS5ib3R0b207XG4gICAgICAgICAgY29uc3QgbGVmdCA9IG1pbkxlZnQ7XG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBtYXhSaWdodDtcbiAgICAgICAgICBjb25zdCB3aWR0aCA9IHJpZ2h0IC0gbGVmdDtcbiAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRvcCxcbiAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgIGxlZnQsXG4gICAgICAgICAgICByaWdodCxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbGxiYWNrO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzZXRSZWN0cyA9IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgIHJlZmVyZW5jZToge1xuICAgICAgICAgIGdldEJvdW5kaW5nQ2xpZW50UmVjdFxuICAgICAgICB9LFxuICAgICAgICBmbG9hdGluZzogZWxlbWVudHMuZmxvYXRpbmcsXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9KTtcbiAgICAgIGlmIChyZWN0cy5yZWZlcmVuY2UueCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UueCB8fCByZWN0cy5yZWZlcmVuY2UueSAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UueSB8fCByZWN0cy5yZWZlcmVuY2Uud2lkdGggIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLndpZHRoIHx8IHJlY3RzLnJlZmVyZW5jZS5oZWlnaHQgIT09IHJlc2V0UmVjdHMucmVmZXJlbmNlLmhlaWdodCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICByZWN0czogcmVzZXRSZWN0c1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcGxhY2VtZW50LFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzXG4gIH0gPSBzdGF0ZTtcbiAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBzaWRlID0gZ2V0U2lkZShwbGFjZW1lbnQpO1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpID09PSAneCc7XG4gIGNvbnN0IG1haW5BeGlzTXVsdGkgPSBbJ2xlZnQnLCAndG9wJ10uaW5jbHVkZXMoc2lkZSkgPyAtMSA6IDE7XG4gIGNvbnN0IGNyb3NzQXhpc011bHRpID0gcnRsICYmIGlzVmVydGljYWwgPyAtMSA6IDE7XG4gIGNvbnN0IHJhd1ZhbHVlID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgbGV0IHtcbiAgICBtYWluQXhpcyxcbiAgICBjcm9zc0F4aXMsXG4gICAgYWxpZ25tZW50QXhpc1xuICB9ID0gdHlwZW9mIHJhd1ZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogcmF3VmFsdWUsXG4gICAgY3Jvc3NBeGlzOiAwLFxuICAgIGFsaWdubWVudEF4aXM6IG51bGxcbiAgfSA6IHtcbiAgICBtYWluQXhpczogMCxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbCxcbiAgICAuLi5yYXdWYWx1ZVxuICB9O1xuICBpZiAoYWxpZ25tZW50ICYmIHR5cGVvZiBhbGlnbm1lbnRBeGlzID09PSAnbnVtYmVyJykge1xuICAgIGNyb3NzQXhpcyA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyBhbGlnbm1lbnRBeGlzICogLTEgOiBhbGlnbm1lbnRBeGlzO1xuICB9XG4gIHJldHVybiBpc1ZlcnRpY2FsID8ge1xuICAgIHg6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpLFxuICAgIHk6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aVxuICB9IDoge1xuICAgIHg6IG1haW5BeGlzICogbWFpbkF4aXNNdWx0aSxcbiAgICB5OiBjcm9zc0F4aXMgKiBjcm9zc0F4aXNNdWx0aVxuICB9O1xufVxuXG4vKipcbiAqIE1vZGlmaWVzIHRoZSBwbGFjZW1lbnQgYnkgdHJhbnNsYXRpbmcgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYWxvbmcgdGhlXG4gKiBzcGVjaWZpZWQgYXhlcy5cbiAqIEEgbnVtYmVyIChzaG9ydGhhbmQgZm9yIGBtYWluQXhpc2Agb3IgZGlzdGFuY2UpLCBvciBhbiBheGVzIGNvbmZpZ3VyYXRpb25cbiAqIG9iamVjdCBtYXkgYmUgcGFzc2VkLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL29mZnNldFxuICovXG5jb25zdCBvZmZzZXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IDA7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnb2Zmc2V0JyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IGRpZmZDb29yZHMgPSBhd2FpdCBjb252ZXJ0VmFsdWVUb0Nvb3JkcyhzdGF0ZSwgb3B0aW9ucyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiB4ICsgZGlmZkNvb3Jkcy54LFxuICAgICAgICB5OiB5ICsgZGlmZkNvb3Jkcy55LFxuICAgICAgICBkYXRhOiBkaWZmQ29vcmRzXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGdldENyb3NzQXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59XG5cbi8qKlxuICogT3B0aW1pemVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IGJ5IHNoaWZ0aW5nIGl0IGluIG9yZGVyIHRvXG4gKiBrZWVwIGl0IGluIHZpZXcgd2hlbiBpdCB3aWxsIG92ZXJmbG93IHRoZSBjbGlwcGluZyBib3VuZGFyeS5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9zaGlmdFxuICovXG5jb25zdCBzaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2hpZnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IGZhbHNlLFxuICAgICAgICBsaW1pdGVyID0ge1xuICAgICAgICAgIGZuOiBfcmVmID0+IHtcbiAgICAgICAgICAgIGxldCB7XG4gICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgIHlcbiAgICAgICAgICAgIH0gPSBfcmVmO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0Q3Jvc3NBeGlzKG1haW5BeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IG1haW5BeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IG1haW5BeGlzQ29vcmQgKyBvdmVyZmxvd1ttaW5TaWRlXTtcbiAgICAgICAgY29uc3QgbWF4ID0gbWFpbkF4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBtYWluQXhpc0Nvb3JkID0gd2l0aGluKG1pbiwgbWFpbkF4aXNDb29yZCwgbWF4KTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAndG9wJyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3QgbWF4U2lkZSA9IGNyb3NzQXhpcyA9PT0gJ3knID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgICAgICBjb25zdCBtaW4gPSBjcm9zc0F4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBjcm9zc0F4aXNDb29yZCAtIG92ZXJmbG93W21heFNpZGVdO1xuICAgICAgICBjcm9zc0F4aXNDb29yZCA9IHdpdGhpbihtaW4sIGNyb3NzQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGltaXRlZENvb3JkcyA9IGxpbWl0ZXIuZm4oe1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9KTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmxpbWl0ZWRDb29yZHMsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICB4OiBsaW1pdGVkQ29vcmRzLnggLSB4LFxuICAgICAgICAgIHk6IGxpbWl0ZWRDb29yZHMueSAtIHlcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuLyoqXG4gKiBCdWlsdC1pbiBgbGltaXRlcmAgdGhhdCB3aWxsIHN0b3AgYHNoaWZ0KClgIGF0IGEgY2VydGFpbiBwb2ludC5cbiAqL1xuY29uc3QgbGltaXRTaGlmdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBvcHRpb25zLFxuICAgIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG9mZnNldCA9IDAsXG4gICAgICAgIG1haW5BeGlzOiBjaGVja01haW5BeGlzID0gdHJ1ZSxcbiAgICAgICAgY3Jvc3NBeGlzOiBjaGVja0Nyb3NzQXhpcyA9IHRydWVcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH07XG4gICAgICBjb25zdCBtYWluQXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgY3Jvc3NBeGlzID0gZ2V0Q3Jvc3NBeGlzKG1haW5BeGlzKTtcbiAgICAgIGxldCBtYWluQXhpc0Nvb3JkID0gY29vcmRzW21haW5BeGlzXTtcbiAgICAgIGxldCBjcm9zc0F4aXNDb29yZCA9IGNvb3Jkc1tjcm9zc0F4aXNdO1xuICAgICAgY29uc3QgcmF3T2Zmc2V0ID0gZXZhbHVhdGUob2Zmc2V0LCBzdGF0ZSk7XG4gICAgICBjb25zdCBjb21wdXRlZE9mZnNldCA9IHR5cGVvZiByYXdPZmZzZXQgPT09ICdudW1iZXInID8ge1xuICAgICAgICBtYWluQXhpczogcmF3T2Zmc2V0LFxuICAgICAgICBjcm9zc0F4aXM6IDBcbiAgICAgIH0gOiB7XG4gICAgICAgIG1haW5BeGlzOiAwLFxuICAgICAgICBjcm9zc0F4aXM6IDAsXG4gICAgICAgIC4uLnJhd09mZnNldFxuICAgICAgfTtcbiAgICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgICAgIGNvbnN0IGxpbWl0TWluID0gcmVjdHMucmVmZXJlbmNlW21haW5BeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgY29uc3QgbGltaXRNYXggPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gLSBjb21wdXRlZE9mZnNldC5tYWluQXhpcztcbiAgICAgICAgaWYgKG1haW5BeGlzQ29vcmQgPCBsaW1pdE1pbikge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChtYWluQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBtYWluQXhpc0Nvb3JkID0gbGltaXRNYXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjaGVja0Nyb3NzQXhpcykge1xuICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJG9mZnNlLCBfbWlkZGxld2FyZURhdGEkb2Zmc2UyO1xuICAgICAgICBjb25zdCBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgICAgICBjb25zdCBpc09yaWdpblNpZGUgPSBbJ3RvcCcsICdsZWZ0J10uaW5jbHVkZXMoZ2V0U2lkZShwbGFjZW1lbnQpKTtcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbY3Jvc3NBeGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gKChfbWlkZGxld2FyZURhdGEkb2Zmc2UgPSBtaWRkbGV3YXJlRGF0YS5vZmZzZXQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkb2Zmc2VbY3Jvc3NBeGlzXSkgfHwgMCA6IDApICsgKGlzT3JpZ2luU2lkZSA/IDAgOiBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMpO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdICsgcmVjdHMucmVmZXJlbmNlW2xlbl0gKyAoaXNPcmlnaW5TaWRlID8gMCA6ICgoX21pZGRsZXdhcmVEYXRhJG9mZnNlMiA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZTJbY3Jvc3NBeGlzXSkgfHwgMCkgLSAoaXNPcmlnaW5TaWRlID8gY29tcHV0ZWRPZmZzZXQuY3Jvc3NBeGlzIDogMCk7XG4gICAgICAgIGlmIChjcm9zc0F4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1pbjtcbiAgICAgICAgfSBlbHNlIGlmIChjcm9zc0F4aXNDb29yZCA+IGxpbWl0TWF4KSB7XG4gICAgICAgICAgY3Jvc3NBeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW21haW5BeGlzXTogbWFpbkF4aXNDb29yZCxcbiAgICAgICAgW2Nyb3NzQXhpc106IGNyb3NzQXhpc0Nvb3JkXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0aGF0IGFsbG93cyB5b3UgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IOKAlFxuICogZm9yIGluc3RhbmNlLCBwcmV2ZW50IGl0IGZyb20gb3ZlcmZsb3dpbmcgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5IG9yIG1hdGNoIHRoZVxuICogd2lkdGggb2YgdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NpemVcbiAqL1xuY29uc3Qgc2l6ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnc2l6ZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHJlY3RzLFxuICAgICAgICBwbGF0Zm9ybSxcbiAgICAgICAgZWxlbWVudHNcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgYXBwbHkgPSAoKSA9PiB7fSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGlzWEF4aXMgPSBheGlzID09PSAneCc7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHRcbiAgICAgIH0gPSByZWN0cy5mbG9hdGluZztcbiAgICAgIGxldCBoZWlnaHRTaWRlO1xuICAgICAgbGV0IHdpZHRoU2lkZTtcbiAgICAgIGlmIChzaWRlID09PSAndG9wJyB8fCBzaWRlID09PSAnYm90dG9tJykge1xuICAgICAgICBoZWlnaHRTaWRlID0gc2lkZTtcbiAgICAgICAgd2lkdGhTaWRlID0gYWxpZ25tZW50ID09PSAoKGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSkgPyAnc3RhcnQnIDogJ2VuZCcpID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpZHRoU2lkZSA9IHNpZGU7XG4gICAgICAgIGhlaWdodFNpZGUgPSBhbGlnbm1lbnQgPT09ICdlbmQnID8gJ3RvcCcgOiAnYm90dG9tJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0ID0gaGVpZ2h0IC0gb3ZlcmZsb3dbaGVpZ2h0U2lkZV07XG4gICAgICBjb25zdCBvdmVyZmxvd0F2YWlsYWJsZVdpZHRoID0gd2lkdGggLSBvdmVyZmxvd1t3aWR0aFNpZGVdO1xuICAgICAgY29uc3Qgbm9TaGlmdCA9ICFzdGF0ZS5taWRkbGV3YXJlRGF0YS5zaGlmdDtcbiAgICAgIGxldCBhdmFpbGFibGVIZWlnaHQgPSBvdmVyZmxvd0F2YWlsYWJsZUhlaWdodDtcbiAgICAgIGxldCBhdmFpbGFibGVXaWR0aCA9IG92ZXJmbG93QXZhaWxhYmxlV2lkdGg7XG4gICAgICBpZiAoaXNYQXhpcykge1xuICAgICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdXaWR0aCA9IHdpZHRoIC0gb3ZlcmZsb3cubGVmdCAtIG92ZXJmbG93LnJpZ2h0O1xuICAgICAgICBhdmFpbGFibGVXaWR0aCA9IGFsaWdubWVudCB8fCBub1NoaWZ0ID8gbWluKG92ZXJmbG93QXZhaWxhYmxlV2lkdGgsIG1heGltdW1DbGlwcGluZ1dpZHRoKSA6IG1heGltdW1DbGlwcGluZ1dpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWF4aW11bUNsaXBwaW5nSGVpZ2h0ID0gaGVpZ2h0IC0gb3ZlcmZsb3cudG9wIC0gb3ZlcmZsb3cuYm90dG9tO1xuICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBhbGlnbm1lbnQgfHwgbm9TaGlmdCA/IG1pbihvdmVyZmxvd0F2YWlsYWJsZUhlaWdodCwgbWF4aW11bUNsaXBwaW5nSGVpZ2h0KSA6IG1heGltdW1DbGlwcGluZ0hlaWdodDtcbiAgICAgIH1cbiAgICAgIGlmIChub1NoaWZ0ICYmICFhbGlnbm1lbnQpIHtcbiAgICAgICAgY29uc3QgeE1pbiA9IG1heChvdmVyZmxvdy5sZWZ0LCAwKTtcbiAgICAgICAgY29uc3QgeE1heCA9IG1heChvdmVyZmxvdy5yaWdodCwgMCk7XG4gICAgICAgIGNvbnN0IHlNaW4gPSBtYXgob3ZlcmZsb3cudG9wLCAwKTtcbiAgICAgICAgY29uc3QgeU1heCA9IG1heChvdmVyZmxvdy5ib3R0b20sIDApO1xuICAgICAgICBpZiAoaXNYQXhpcykge1xuICAgICAgICAgIGF2YWlsYWJsZVdpZHRoID0gd2lkdGggLSAyICogKHhNaW4gIT09IDAgfHwgeE1heCAhPT0gMCA/IHhNaW4gKyB4TWF4IDogbWF4KG92ZXJmbG93LmxlZnQsIG92ZXJmbG93LnJpZ2h0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXZhaWxhYmxlSGVpZ2h0ID0gaGVpZ2h0IC0gMiAqICh5TWluICE9PSAwIHx8IHlNYXggIT09IDAgPyB5TWluICsgeU1heCA6IG1heChvdmVyZmxvdy50b3AsIG92ZXJmbG93LmJvdHRvbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCBhcHBseSh7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBhdmFpbGFibGVXaWR0aCxcbiAgICAgICAgYXZhaWxhYmxlSGVpZ2h0XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG5leHREaW1lbnNpb25zID0gYXdhaXQgcGxhdGZvcm0uZ2V0RGltZW5zaW9ucyhlbGVtZW50cy5mbG9hdGluZyk7XG4gICAgICBpZiAod2lkdGggIT09IG5leHREaW1lbnNpb25zLndpZHRoIHx8IGhlaWdodCAhPT0gbmV4dERpbWVuc2lvbnMuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcmVjdFRvQ2xpZW50UmVjdCwgc2hpZnQsIHNpemUgfTtcbiIsImltcG9ydCB7IHJlY3RUb0NsaWVudFJlY3QsIGNvbXB1dGVQb3NpdGlvbiBhcyBjb21wdXRlUG9zaXRpb24kMSB9IGZyb20gJ0BmbG9hdGluZy11aS9jb3JlJztcbmV4cG9ydCB7IGFycm93LCBhdXRvUGxhY2VtZW50LCBkZXRlY3RPdmVyZmxvdywgZmxpcCwgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHNoaWZ0LCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUnO1xuXG5mdW5jdGlvbiBnZXRXaW5kb3cobm9kZSkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgcmV0dXJuICgoX25vZGUkb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9ub2RlJG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcpIHx8IHdpbmRvdztcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBpc05vZGUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5Ob2RlO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobm9kZSkge1xuICByZXR1cm4gaXNOb2RlKG5vZGUpID8gKG5vZGUubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgOiAnJztcbn1cblxuZnVuY3Rpb24gaXNIVE1MRWxlbWVudCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLkhUTUxFbGVtZW50O1xufVxuZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuRWxlbWVudDtcbn1cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdChub2RlKSB7XG4gIC8vIEJyb3dzZXJzIHdpdGhvdXQgYFNoYWRvd1Jvb3RgIHN1cHBvcnQuXG4gIGlmICh0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5TaGFkb3dSb290O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q7XG59XG5mdW5jdGlvbiBpc092ZXJmbG93RWxlbWVudChlbGVtZW50KSB7XG4gIGNvbnN0IHtcbiAgICBvdmVyZmxvdyxcbiAgICBvdmVyZmxvd1gsXG4gICAgb3ZlcmZsb3dZLFxuICAgIGRpc3BsYXlcbiAgfSA9IGdldENvbXB1dGVkU3R5bGUkMShlbGVtZW50KTtcbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbnxjbGlwLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKSAmJiAhWydpbmxpbmUnLCAnY29udGVudHMnXS5pbmNsdWRlcyhkaXNwbGF5KTtcbn1cbmZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShlbGVtZW50KSk7XG59XG5mdW5jdGlvbiBpc0NvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGNvbnN0IHNhZmFyaSA9IGlzU2FmYXJpKCk7XG4gIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUkMShlbGVtZW50KTtcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICByZXR1cm4gY3NzLnRyYW5zZm9ybSAhPT0gJ25vbmUnIHx8IGNzcy5wZXJzcGVjdGl2ZSAhPT0gJ25vbmUnIHx8ICFzYWZhcmkgJiYgKGNzcy5iYWNrZHJvcEZpbHRlciA/IGNzcy5iYWNrZHJvcEZpbHRlciAhPT0gJ25vbmUnIDogZmFsc2UpIHx8ICFzYWZhcmkgJiYgKGNzcy5maWx0ZXIgPyBjc3MuZmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnLCAnZmlsdGVyJ10uc29tZSh2YWx1ZSA9PiAoY3NzLndpbGxDaGFuZ2UgfHwgJycpLmluY2x1ZGVzKHZhbHVlKSkgfHwgWydwYWludCcsICdsYXlvdXQnLCAnc3RyaWN0JywgJ2NvbnRlbnQnXS5zb21lKHZhbHVlID0+IChjc3MuY29udGFpbiB8fCAnJykuaW5jbHVkZXModmFsdWUpKTtcbn1cbmZ1bmN0aW9uIGlzU2FmYXJpKCkge1xuICBpZiAodHlwZW9mIENTUyA9PT0gJ3VuZGVmaW5lZCcgfHwgIUNTUy5zdXBwb3J0cykgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gQ1NTLnN1cHBvcnRzKCctd2Via2l0LWJhY2tkcm9wLWZpbHRlcicsICdub25lJyk7XG59XG5mdW5jdGlvbiBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUobm9kZSkge1xuICByZXR1cm4gWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5jbHVkZXMoZ2V0Tm9kZU5hbWUobm9kZSkpO1xufVxuXG5jb25zdCBtaW4gPSBNYXRoLm1pbjtcbmNvbnN0IG1heCA9IE1hdGgubWF4O1xuY29uc3Qgcm91bmQgPSBNYXRoLnJvdW5kO1xuXG5mdW5jdGlvbiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpIHtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpO1xuICAvLyBJbiB0ZXN0aW5nIGVudmlyb25tZW50cywgdGhlIGB3aWR0aGAgYW5kIGBoZWlnaHRgIHByb3BlcnRpZXMgYXJlIGVtcHR5XG4gIC8vIHN0cmluZ3MgZm9yIFNWRyBlbGVtZW50cywgcmV0dXJuaW5nIE5hTi4gRmFsbGJhY2sgdG8gYDBgIGluIHRoaXMgY2FzZS5cbiAgbGV0IHdpZHRoID0gcGFyc2VGbG9hdChjc3Mud2lkdGgpIHx8IDA7XG4gIGxldCBoZWlnaHQgPSBwYXJzZUZsb2F0KGNzcy5oZWlnaHQpIHx8IDA7XG4gIGNvbnN0IGhhc09mZnNldCA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IG9mZnNldFdpZHRoID0gaGFzT2Zmc2V0ID8gZWxlbWVudC5vZmZzZXRXaWR0aCA6IHdpZHRoO1xuICBjb25zdCBvZmZzZXRIZWlnaHQgPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldEhlaWdodCA6IGhlaWdodDtcbiAgY29uc3Qgc2hvdWxkRmFsbGJhY2sgPSByb3VuZCh3aWR0aCkgIT09IG9mZnNldFdpZHRoIHx8IHJvdW5kKGhlaWdodCkgIT09IG9mZnNldEhlaWdodDtcbiAgaWYgKHNob3VsZEZhbGxiYWNrKSB7XG4gICAgd2lkdGggPSBvZmZzZXRXaWR0aDtcbiAgICBoZWlnaHQgPSBvZmZzZXRIZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgZmFsbGJhY2s6IHNob3VsZEZhbGxiYWNrXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVud3JhcEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gIWlzRWxlbWVudChlbGVtZW50KSA/IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgOiBlbGVtZW50O1xufVxuXG5jb25zdCBGQUxMQkFDS19TQ0FMRSA9IHtcbiAgeDogMSxcbiAgeTogMVxufTtcbmZ1bmN0aW9uIGdldFNjYWxlKGVsZW1lbnQpIHtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGlmICghaXNIVE1MRWxlbWVudChkb21FbGVtZW50KSkge1xuICAgIHJldHVybiBGQUxMQkFDS19TQ0FMRTtcbiAgfVxuICBjb25zdCByZWN0ID0gZG9tRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3Qge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBmYWxsYmFja1xuICB9ID0gZ2V0Q3NzRGltZW5zaW9ucyhkb21FbGVtZW50KTtcbiAgbGV0IHggPSAoZmFsbGJhY2sgPyByb3VuZChyZWN0LndpZHRoKSA6IHJlY3Qud2lkdGgpIC8gd2lkdGg7XG4gIGxldCB5ID0gKGZhbGxiYWNrID8gcm91bmQocmVjdC5oZWlnaHQpIDogcmVjdC5oZWlnaHQpIC8gaGVpZ2h0O1xuXG4gIC8vIDAsIE5hTiwgb3IgSW5maW5pdHkgc2hvdWxkIGFsd2F5cyBmYWxsYmFjayB0byAxLlxuXG4gIGlmICgheCB8fCAhTnVtYmVyLmlzRmluaXRlKHgpKSB7XG4gICAgeCA9IDE7XG4gIH1cbiAgaWYgKCF5IHx8ICFOdW1iZXIuaXNGaW5pdGUoeSkpIHtcbiAgICB5ID0gMTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG5jb25zdCBub09mZnNldHMgPSB7XG4gIHg6IDAsXG4gIHk6IDBcbn07XG5mdW5jdGlvbiBnZXRWaXN1YWxPZmZzZXRzKGVsZW1lbnQsIGlzRml4ZWQsIGZsb2F0aW5nT2Zmc2V0UGFyZW50KSB7XG4gIHZhciBfd2luJHZpc3VhbFZpZXdwb3J0LCBfd2luJHZpc3VhbFZpZXdwb3J0MjtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSB0cnVlO1xuICB9XG4gIGlmICghaXNTYWZhcmkoKSkge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgY29uc3Qgd2luID0gZWxlbWVudCA/IGdldFdpbmRvdyhlbGVtZW50KSA6IHdpbmRvdztcbiAgaWYgKCFmbG9hdGluZ09mZnNldFBhcmVudCB8fCBpc0ZpeGVkICYmIGZsb2F0aW5nT2Zmc2V0UGFyZW50ICE9PSB3aW4pIHtcbiAgICByZXR1cm4gbm9PZmZzZXRzO1xuICB9XG4gIHJldHVybiB7XG4gICAgeDogKChfd2luJHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0KSA9PSBudWxsID8gdm9pZCAwIDogX3dpbiR2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0KSB8fCAwLFxuICAgIHk6ICgoX3dpbiR2aXN1YWxWaWV3cG9ydDIgPSB3aW4udmlzdWFsVmlld3BvcnQpID09IG51bGwgPyB2b2lkIDAgOiBfd2luJHZpc3VhbFZpZXdwb3J0Mi5vZmZzZXRUb3ApIHx8IDBcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IGRvbUVsZW1lbnQgPSB1bndyYXBFbGVtZW50KGVsZW1lbnQpO1xuICBsZXQgc2NhbGUgPSBGQUxMQkFDS19TQ0FMRTtcbiAgaWYgKGluY2x1ZGVTY2FsZSkge1xuICAgIGlmIChvZmZzZXRQYXJlbnQpIHtcbiAgICAgIGlmIChpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgICBzY2FsZSA9IGdldFNjYWxlKG9mZnNldFBhcmVudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUoZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHZpc3VhbE9mZnNldHMgPSBnZXRWaXN1YWxPZmZzZXRzKGRvbUVsZW1lbnQsIGlzRml4ZWRTdHJhdGVneSwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHggPSAoY2xpZW50UmVjdC5sZWZ0ICsgdmlzdWFsT2Zmc2V0cy54KSAvIHNjYWxlLng7XG4gIGxldCB5ID0gKGNsaWVudFJlY3QudG9wICsgdmlzdWFsT2Zmc2V0cy55KSAvIHNjYWxlLnk7XG4gIGxldCB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZS54O1xuICBsZXQgaGVpZ2h0ID0gY2xpZW50UmVjdC5oZWlnaHQgLyBzY2FsZS55O1xuICBpZiAoZG9tRWxlbWVudCkge1xuICAgIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhkb21FbGVtZW50KTtcbiAgICBjb25zdCBvZmZzZXRXaW4gPSBvZmZzZXRQYXJlbnQgJiYgaXNFbGVtZW50KG9mZnNldFBhcmVudCkgPyBnZXRXaW5kb3cob2Zmc2V0UGFyZW50KSA6IG9mZnNldFBhcmVudDtcbiAgICBsZXQgY3VycmVudElGcmFtZSA9IHdpbi5mcmFtZUVsZW1lbnQ7XG4gICAgd2hpbGUgKGN1cnJlbnRJRnJhbWUgJiYgb2Zmc2V0UGFyZW50ICYmIG9mZnNldFdpbiAhPT0gd2luKSB7XG4gICAgICBjb25zdCBpZnJhbWVTY2FsZSA9IGdldFNjYWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgY29uc3QgaWZyYW1lUmVjdCA9IGN1cnJlbnRJRnJhbWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRJRnJhbWUpO1xuICAgICAgaWZyYW1lUmVjdC54ICs9IChjdXJyZW50SUZyYW1lLmNsaWVudExlZnQgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nTGVmdCkpICogaWZyYW1lU2NhbGUueDtcbiAgICAgIGlmcmFtZVJlY3QueSArPSAoY3VycmVudElGcmFtZS5jbGllbnRUb3AgKyBwYXJzZUZsb2F0KGNzcy5wYWRkaW5nVG9wKSkgKiBpZnJhbWVTY2FsZS55O1xuICAgICAgeCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgeSAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgd2lkdGggKj0gaWZyYW1lU2NhbGUueDtcbiAgICAgIGhlaWdodCAqPSBpZnJhbWVTY2FsZS55O1xuICAgICAgeCArPSBpZnJhbWVSZWN0Lng7XG4gICAgICB5ICs9IGlmcmFtZVJlY3QueTtcbiAgICAgIGN1cnJlbnRJRnJhbWUgPSBnZXRXaW5kb3coY3VycmVudElGcmFtZSkuZnJhbWVFbGVtZW50O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjdFRvQ2xpZW50UmVjdCh7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpIHtcbiAgcmV0dXJuICgoaXNOb2RlKG5vZGUpID8gbm9kZS5vd25lckRvY3VtZW50IDogbm9kZS5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGdldE5vZGVTY3JvbGwoZWxlbWVudCkge1xuICBpZiAoaXNFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5wYWdlWE9mZnNldCxcbiAgICBzY3JvbGxUb3A6IGVsZW1lbnQucGFnZVlPZmZzZXRcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QoX3JlZikge1xuICBsZXQge1xuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBfcmVmO1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGlmIChvZmZzZXRQYXJlbnQgPT09IGRvY3VtZW50RWxlbWVudCkge1xuICAgIHJldHVybiByZWN0O1xuICB9XG4gIGxldCBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgbGV0IHNjYWxlID0ge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9O1xuICBjb25zdCBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmIHN0cmF0ZWd5ICE9PSAnZml4ZWQnKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50KTtcbiAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIG9mZnNldHMueCA9IG9mZnNldFJlY3QueCArIG9mZnNldFBhcmVudC5jbGllbnRMZWZ0O1xuICAgICAgb2Zmc2V0cy55ID0gb2Zmc2V0UmVjdC55ICsgb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcmVjdC53aWR0aCAqIHNjYWxlLngsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodCAqIHNjYWxlLnksXG4gICAgeDogcmVjdC54ICogc2NhbGUueCAtIHNjcm9sbC5zY3JvbGxMZWZ0ICogc2NhbGUueCArIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnkgKiBzY2FsZS55IC0gc2Nyb2xsLnNjcm9sbFRvcCAqIHNjYWxlLnkgKyBvZmZzZXRzLnlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSB7XG4gIC8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbiAgLy8gaW5jb3JyZWN0IGZvciBSVEwuXG4gIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgZ2V0Tm9kZVNjcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xufVxuXG4vLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlLlxuZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KTtcbiAgY29uc3QgYm9keSA9IGVsZW1lbnQub3duZXJEb2N1bWVudC5ib2R5O1xuICBjb25zdCB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5LnNjcm9sbFdpZHRoLCBib2R5LmNsaWVudFdpZHRoKTtcbiAgY29uc3QgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keS5zY3JvbGxIZWlnaHQsIGJvZHkuY2xpZW50SGVpZ2h0KTtcbiAgbGV0IHggPSAtc2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICBjb25zdCB5ID0gLXNjcm9sbC5zY3JvbGxUb3A7XG4gIGlmIChnZXRDb21wdXRlZFN0eWxlJDEoYm9keSkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpIC0gd2lkdGg7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFBhcmVudE5vZGUobm9kZSkge1xuICBpZiAoZ2V0Tm9kZU5hbWUobm9kZSkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBub2RlO1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9XG4gIC8vIFN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlLlxuICBub2RlLmFzc2lnbmVkU2xvdCB8fFxuICAvLyBET00gRWxlbWVudCBkZXRlY3RlZC5cbiAgbm9kZS5wYXJlbnROb2RlIHx8XG4gIC8vIFNoYWRvd1Jvb3QgZGV0ZWN0ZWQuXG4gIGlzU2hhZG93Um9vdChub2RlKSAmJiBub2RlLmhvc3QgfHxcbiAgLy8gRmFsbGJhY2suXG4gIGdldERvY3VtZW50RWxlbWVudChub2RlKTtcbiAgcmV0dXJuIGlzU2hhZG93Um9vdChyZXN1bHQpID8gcmVzdWx0Lmhvc3QgOiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yKG5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUobm9kZSk7XG4gIGlmIChpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICAvLyBgZ2V0UGFyZW50Tm9kZWAgd2lsbCBuZXZlciByZXR1cm4gYSBgRG9jdW1lbnRgIGR1ZSB0byB0aGUgZmFsbGJhY2tcbiAgICAvLyBjaGVjaywgc28gaXQncyBlaXRoZXIgdGhlIDxodG1sPiBvciA8Ym9keT4gZWxlbWVudC5cbiAgICByZXR1cm4gcGFyZW50Tm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cbiAgaWYgKGlzSFRNTEVsZW1lbnQocGFyZW50Tm9kZSkgJiYgaXNPdmVyZmxvd0VsZW1lbnQocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gcGFyZW50Tm9kZTtcbiAgfVxuICByZXR1cm4gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3IocGFyZW50Tm9kZSk7XG59XG5cbmZ1bmN0aW9uIGdldE92ZXJmbG93QW5jZXN0b3JzKG5vZGUsIGxpc3QpIHtcbiAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cbiAgY29uc3Qgc2Nyb2xsYWJsZUFuY2VzdG9yID0gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSk7XG4gIGNvbnN0IGlzQm9keSA9IHNjcm9sbGFibGVBbmNlc3RvciA9PT0gKChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5ib2R5KTtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KHNjcm9sbGFibGVBbmNlc3Rvcik7XG4gIGlmIChpc0JvZHkpIHtcbiAgICByZXR1cm4gbGlzdC5jb25jYXQod2luLCB3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzT3ZlcmZsb3dFbGVtZW50KHNjcm9sbGFibGVBbmNlc3RvcikgPyBzY3JvbGxhYmxlQW5jZXN0b3IgOiBbXSk7XG4gIH1cbiAgcmV0dXJuIGxpc3QuY29uY2F0KHNjcm9sbGFibGVBbmNlc3RvciwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoc2Nyb2xsYWJsZUFuY2VzdG9yKSk7XG59XG5cbmZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGNvbnN0IGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIGNvbnN0IHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICBsZXQgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICBsZXQgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIGxldCB4ID0gMDtcbiAgbGV0IHkgPSAwO1xuICBpZiAodmlzdWFsVmlld3BvcnQpIHtcbiAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0LndpZHRoO1xuICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0LmhlaWdodDtcbiAgICBjb25zdCB2aXN1YWxWaWV3cG9ydEJhc2VkID0gaXNTYWZhcmkoKTtcbiAgICBpZiAoIXZpc3VhbFZpZXdwb3J0QmFzZWQgfHwgdmlzdWFsVmlld3BvcnRCYXNlZCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuLy8gUmV0dXJucyB0aGUgaW5uZXIgY2xpZW50IHJlY3QsIHN1YnRyYWN0aW5nIHNjcm9sbGJhcnMgaWYgcHJlc2VudC5cbmZ1bmN0aW9uIGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgc3RyYXRlZ3kgPT09ICdmaXhlZCcpO1xuICBjb25zdCB0b3AgPSBjbGllbnRSZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICBjb25zdCBsZWZ0ID0gY2xpZW50UmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRMZWZ0O1xuICBjb25zdCBzY2FsZSA9IGlzSFRNTEVsZW1lbnQoZWxlbWVudCkgPyBnZXRTY2FsZShlbGVtZW50KSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3Qgd2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoICogc2NhbGUueDtcbiAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQgKiBzY2FsZS55O1xuICBjb25zdCB4ID0gbGVmdCAqIHNjYWxlLng7XG4gIGNvbnN0IHkgPSB0b3AgKiBzY2FsZS55O1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkge1xuICBsZXQgcmVjdDtcbiAgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICd2aWV3cG9ydCcpIHtcbiAgICByZWN0ID0gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIGlmIChjbGlwcGluZ0FuY2VzdG9yID09PSAnZG9jdW1lbnQnKSB7XG4gICAgcmVjdCA9IGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpO1xuICB9IGVsc2UgaWYgKGlzRWxlbWVudChjbGlwcGluZ0FuY2VzdG9yKSkge1xuICAgIHJlY3QgPSBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCk7XG4gICAgcmVjdCA9IHtcbiAgICAgIC4uLmNsaXBwaW5nQW5jZXN0b3IsXG4gICAgICB4OiBjbGlwcGluZ0FuY2VzdG9yLnggLSB2aXN1YWxPZmZzZXRzLngsXG4gICAgICB5OiBjbGlwcGluZ0FuY2VzdG9yLnkgLSB2aXN1YWxPZmZzZXRzLnlcbiAgICB9O1xuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHJlY3QpO1xufVxuZnVuY3Rpb24gaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIHN0b3BOb2RlKSB7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuICBpZiAocGFyZW50Tm9kZSA9PT0gc3RvcE5vZGUgfHwgIWlzRWxlbWVudChwYXJlbnROb2RlKSB8fCBpc0xhc3RUcmF2ZXJzYWJsZU5vZGUocGFyZW50Tm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdldENvbXB1dGVkU3R5bGUkMShwYXJlbnROb2RlKS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJyB8fCBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IocGFyZW50Tm9kZSwgc3RvcE5vZGUpO1xufVxuXG4vLyBBIFwiY2xpcHBpbmcgYW5jZXN0b3JcIiBpcyBhbiBgb3ZlcmZsb3dgIGVsZW1lbnQgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIGNoaWxkIGVsZW1lbnRzLiBUaGlzIHJldHVybnMgYWxsIGNsaXBwaW5nIGFuY2VzdG9yc1xuLy8gb2YgdGhlIGdpdmVuIGVsZW1lbnQgdXAgdGhlIHRyZWUuXG5mdW5jdGlvbiBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgY2FjaGUpIHtcbiAgY29uc3QgY2FjaGVkUmVzdWx0ID0gY2FjaGUuZ2V0KGVsZW1lbnQpO1xuICBpZiAoY2FjaGVkUmVzdWx0KSB7XG4gICAgcmV0dXJuIGNhY2hlZFJlc3VsdDtcbiAgfVxuICBsZXQgcmVzdWx0ID0gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZWxlbWVudCkuZmlsdGVyKGVsID0+IGlzRWxlbWVudChlbCkgJiYgZ2V0Tm9kZU5hbWUoZWwpICE9PSAnYm9keScpO1xuICBsZXQgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICBjb25zdCBlbGVtZW50SXNGaXhlZCA9IGdldENvbXB1dGVkU3R5bGUkMShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJztcbiAgbGV0IGN1cnJlbnROb2RlID0gZWxlbWVudElzRml4ZWQgPyBnZXRQYXJlbnROb2RlKGVsZW1lbnQpIDogZWxlbWVudDtcblxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuICB3aGlsZSAoaXNFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlJDEoY3VycmVudE5vZGUpO1xuICAgIGNvbnN0IGN1cnJlbnROb2RlSXNDb250YWluaW5nID0gaXNDb250YWluaW5nQmxvY2soY3VycmVudE5vZGUpO1xuICAgIGlmICghY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBzaG91bGREcm9wQ3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiAhY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUgOiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgY29tcHV0ZWRTdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgISFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSAmJiBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5jbHVkZXMoY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUucG9zaXRpb24pIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgJiYgaGFzRml4ZWRQb3NpdGlvbkFuY2VzdG9yKGVsZW1lbnQsIGN1cnJlbnROb2RlKTtcbiAgICBpZiAoc2hvdWxkRHJvcEN1cnJlbnROb2RlKSB7XG4gICAgICAvLyBEcm9wIG5vbi1jb250YWluaW5nIGJsb2Nrcy5cbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoYW5jZXN0b3IgPT4gYW5jZXN0b3IgIT09IGN1cnJlbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVjb3JkIGxhc3QgY29udGFpbmluZyBibG9jayBmb3IgbmV4dCBpdGVyYXRpb24uXG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7XG4gICAgfVxuICAgIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShjdXJyZW50Tm9kZSk7XG4gIH1cbiAgY2FjaGUuc2V0KGVsZW1lbnQsIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEdldHMgdGhlIG1heGltdW0gYXJlYSB0aGF0IHRoZSBlbGVtZW50IGlzIHZpc2libGUgaW4gZHVlIHRvIGFueSBudW1iZXIgb2Zcbi8vIGNsaXBwaW5nIGFuY2VzdG9ycy5cbmZ1bmN0aW9uIGdldENsaXBwaW5nUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudCxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGVsZW1lbnRDbGlwcGluZ0FuY2VzdG9ycyA9IGJvdW5kYXJ5ID09PSAnY2xpcHBpbmdBbmNlc3RvcnMnID8gZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzKGVsZW1lbnQsIHRoaXMuX2MpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgY29uc3QgY2xpcHBpbmdBbmNlc3RvcnMgPSBbLi4uZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzLCByb290Qm91bmRhcnldO1xuICBjb25zdCBmaXJzdENsaXBwaW5nQW5jZXN0b3IgPSBjbGlwcGluZ0FuY2VzdG9yc1swXTtcbiAgY29uc3QgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdBbmNlc3RvcnMucmVkdWNlKChhY2NSZWN0LCBjbGlwcGluZ0FuY2VzdG9yKSA9PiB7XG4gICAgY29uc3QgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tQ2xpcHBpbmdBbmNlc3RvcihlbGVtZW50LCBjbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdBbmNlc3Rvciwgc3RyYXRlZ3kpKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQsXG4gICAgaGVpZ2h0OiBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcCxcbiAgICB4OiBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICB5OiBjbGlwcGluZ1JlY3QudG9wXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldERpbWVuc2lvbnMoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0Q3NzRGltZW5zaW9ucyhlbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHBvbHlmaWxsKSB7XG4gICAgcmV0dXJuIHBvbHlmaWxsKGVsZW1lbnQpO1xuICB9XG4gIHJldHVybiBlbGVtZW50Lm9mZnNldFBhcmVudDtcbn1cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIGxldCBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiAhaXNMYXN0VHJhdmVyc2FibGVOb2RlKGN1cnJlbnROb2RlKSkge1xuICAgIGlmIChpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSkpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5mdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpIHtcbiAgY29uc3Qgd2luZG93ID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG4gIGxldCBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKTtcbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUkMShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50LCBwb2x5ZmlsbCk7XG4gIH1cbiAgaWYgKG9mZnNldFBhcmVudCAmJiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2h0bWwnIHx8IGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdib2R5JyAmJiBnZXRDb21wdXRlZFN0eWxlJDEob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYgIWlzQ29udGFpbmluZ0Jsb2NrKG9mZnNldFBhcmVudCkpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW5kb3c7XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGVsZW1lbnQsIG9mZnNldFBhcmVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBpc0ZpeGVkID0gc3RyYXRlZ3kgPT09ICdmaXhlZCc7XG4gIGNvbnN0IHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgdHJ1ZSwgaXNGaXhlZCwgb2Zmc2V0UGFyZW50KTtcbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBjb25zdCBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuICBpZiAoaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgfHwgIWlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ICYmICFpc0ZpeGVkKSB7XG4gICAgaWYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgIT09ICdib2R5JyB8fCBpc092ZXJmbG93RWxlbWVudChkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKG9mZnNldFBhcmVudCk7XG4gICAgfVxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIGNvbnN0IG9mZnNldFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn1cblxuY29uc3QgcGxhdGZvcm0gPSB7XG4gIGdldENsaXBwaW5nUmVjdCxcbiAgY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QsXG4gIGlzRWxlbWVudCxcbiAgZ2V0RGltZW5zaW9ucyxcbiAgZ2V0T2Zmc2V0UGFyZW50LFxuICBnZXREb2N1bWVudEVsZW1lbnQsXG4gIGdldFNjYWxlLFxuICBhc3luYyBnZXRFbGVtZW50UmVjdHMoX3JlZikge1xuICAgIGxldCB7XG4gICAgICByZWZlcmVuY2UsXG4gICAgICBmbG9hdGluZyxcbiAgICAgIHN0cmF0ZWd5XG4gICAgfSA9IF9yZWY7XG4gICAgY29uc3QgZ2V0T2Zmc2V0UGFyZW50Rm4gPSB0aGlzLmdldE9mZnNldFBhcmVudCB8fCBnZXRPZmZzZXRQYXJlbnQ7XG4gICAgY29uc3QgZ2V0RGltZW5zaW9uc0ZuID0gdGhpcy5nZXREaW1lbnNpb25zO1xuICAgIHJldHVybiB7XG4gICAgICByZWZlcmVuY2U6IGdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KHJlZmVyZW5jZSwgYXdhaXQgZ2V0T2Zmc2V0UGFyZW50Rm4oZmxvYXRpbmcpLCBzdHJhdGVneSksXG4gICAgICBmbG9hdGluZzoge1xuICAgICAgICB4OiAwLFxuICAgICAgICB5OiAwLFxuICAgICAgICAuLi4oYXdhaXQgZ2V0RGltZW5zaW9uc0ZuKGZsb2F0aW5nKSlcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBnZXRDbGllbnRSZWN0czogZWxlbWVudCA9PiBBcnJheS5mcm9tKGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKSksXG4gIGlzUlRMOiBlbGVtZW50ID0+IGdldENvbXB1dGVkU3R5bGUkMShlbGVtZW50KS5kaXJlY3Rpb24gPT09ICdydGwnXG59O1xuXG4vKipcbiAqIEF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgd2hlbiBuZWNlc3NhcnkuXG4gKiBTaG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgZmxvYXRpbmcgZWxlbWVudCBpcyBtb3VudGVkIG9uIHRoZSBET00gb3JcbiAqIHZpc2libGUgb24gdGhlIHNjcmVlbi5cbiAqIEByZXR1cm5zIGNsZWFudXAgZnVuY3Rpb24gdGhhdCBzaG91bGQgYmUgaW52b2tlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzXG4gKiByZW1vdmVkIGZyb20gdGhlIERPTSBvciBoaWRkZW4gZnJvbSB0aGUgc2NyZWVuLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2F1dG9VcGRhdGVcbiAqL1xuZnVuY3Rpb24gYXV0b1VwZGF0ZShyZWZlcmVuY2UsIGZsb2F0aW5nLCB1cGRhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5jZXN0b3JTY3JvbGwgPSB0cnVlLFxuICAgIGFuY2VzdG9yUmVzaXplID0gdHJ1ZSxcbiAgICBlbGVtZW50UmVzaXplID0gdHJ1ZSxcbiAgICBhbmltYXRpb25GcmFtZSA9IGZhbHNlXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBhbmNlc3RvcnMgPSBhbmNlc3RvclNjcm9sbCB8fCBhbmNlc3RvclJlc2l6ZSA/IFsuLi4oaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdKSwgLi4uZ2V0T3ZlcmZsb3dBbmNlc3RvcnMoZmxvYXRpbmcpXSA6IFtdO1xuICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgLy8gaWdub3JlcyBXaW5kb3csIGNoZWNrcyBmb3IgW29iamVjdCBWaXN1YWxWaWV3cG9ydF1cbiAgICBjb25zdCBpc1Zpc3VhbFZpZXdwb3J0ID0gIWlzRWxlbWVudChhbmNlc3RvcikgJiYgYW5jZXN0b3IudG9TdHJpbmcoKS5pbmNsdWRlcygnVicpO1xuICAgIGlmIChhbmNlc3RvclNjcm9sbCAmJiAoYW5pbWF0aW9uRnJhbWUgPyBpc1Zpc3VhbFZpZXdwb3J0IDogdHJ1ZSkpIHtcbiAgICAgIGFuY2VzdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSwge1xuICAgICAgICBwYXNzaXZlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG4gICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgfSk7XG4gIGxldCBvYnNlcnZlciA9IG51bGw7XG4gIGlmIChlbGVtZW50UmVzaXplKSB7XG4gICAgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgdXBkYXRlKCk7XG4gICAgfSk7XG4gICAgaXNFbGVtZW50KHJlZmVyZW5jZSkgJiYgIWFuaW1hdGlvbkZyYW1lICYmIG9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlKTtcbiAgICBpZiAoIWlzRWxlbWVudChyZWZlcmVuY2UpICYmIHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCAmJiAhYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIG9ic2VydmVyLm9ic2VydmUocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KTtcbiAgICB9XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShmbG9hdGluZyk7XG4gIH1cbiAgbGV0IGZyYW1lSWQ7XG4gIGxldCBwcmV2UmVmUmVjdCA9IGFuaW1hdGlvbkZyYW1lID8gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZSkgOiBudWxsO1xuICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICBmcmFtZUxvb3AoKTtcbiAgfVxuICBmdW5jdGlvbiBmcmFtZUxvb3AoKSB7XG4gICAgY29uc3QgbmV4dFJlZlJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKTtcbiAgICBpZiAocHJldlJlZlJlY3QgJiYgKG5leHRSZWZSZWN0LnggIT09IHByZXZSZWZSZWN0LnggfHwgbmV4dFJlZlJlY3QueSAhPT0gcHJldlJlZlJlY3QueSB8fCBuZXh0UmVmUmVjdC53aWR0aCAhPT0gcHJldlJlZlJlY3Qud2lkdGggfHwgbmV4dFJlZlJlY3QuaGVpZ2h0ICE9PSBwcmV2UmVmUmVjdC5oZWlnaHQpKSB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9XG4gICAgcHJldlJlZlJlY3QgPSBuZXh0UmVmUmVjdDtcbiAgICBmcmFtZUlkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZyYW1lTG9vcCk7XG4gIH1cbiAgdXBkYXRlKCk7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgdmFyIF9vYnNlcnZlcjtcbiAgICBhbmNlc3RvcnMuZm9yRWFjaChhbmNlc3RvciA9PiB7XG4gICAgICBhbmNlc3RvclNjcm9sbCAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB1cGRhdGUpO1xuICAgICAgYW5jZXN0b3JSZXNpemUgJiYgYW5jZXN0b3IucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlKTtcbiAgICB9KTtcbiAgICAoX29ic2VydmVyID0gb2JzZXJ2ZXIpID09IG51bGwgPyB2b2lkIDAgOiBfb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIG9ic2VydmVyID0gbnVsbDtcbiAgICBpZiAoYW5pbWF0aW9uRnJhbWUpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgYHhgIGFuZCBgeWAgY29vcmRpbmF0ZXMgdGhhdCB3aWxsIHBsYWNlIHRoZSBmbG9hdGluZyBlbGVtZW50XG4gKiBuZXh0IHRvIGEgcmVmZXJlbmNlIGVsZW1lbnQgd2hlbiBpdCBpcyBnaXZlbiBhIGNlcnRhaW4gQ1NTIHBvc2l0aW9uaW5nXG4gKiBzdHJhdGVneS5cbiAqL1xuY29uc3QgY29tcHV0ZVBvc2l0aW9uID0gKHJlZmVyZW5jZSwgZmxvYXRpbmcsIG9wdGlvbnMpID0+IHtcbiAgLy8gVGhpcyBjYWNoZXMgdGhlIGV4cGVuc2l2ZSBgZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzYCBmdW5jdGlvbiBzbyB0aGF0XG4gIC8vIG11bHRpcGxlIGxpZmVjeWNsZSByZXNldHMgcmUtdXNlIHRoZSBzYW1lIHJlc3VsdC4gSXQgb25seSBsaXZlcyBmb3IgYVxuICAvLyBzaW5nbGUgY2FsbC4gSWYgb3RoZXIgZnVuY3Rpb25zIGJlY29tZSBleHBlbnNpdmUsIHdlIGNhbiBhZGQgdGhlbSBhcyB3ZWxsLlxuICBjb25zdCBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHtcbiAgICBwbGF0Zm9ybSxcbiAgICAuLi5vcHRpb25zXG4gIH07XG4gIGNvbnN0IHBsYXRmb3JtV2l0aENhY2hlID0ge1xuICAgIC4uLm1lcmdlZE9wdGlvbnMucGxhdGZvcm0sXG4gICAgX2M6IGNhY2hlXG4gIH07XG4gIHJldHVybiBjb21wdXRlUG9zaXRpb24kMShyZWZlcmVuY2UsIGZsb2F0aW5nLCB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucyxcbiAgICBwbGF0Zm9ybTogcGxhdGZvcm1XaXRoQ2FjaGVcbiAgfSk7XG59O1xuXG5leHBvcnQgeyBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGdldE92ZXJmbG93QW5jZXN0b3JzLCBwbGF0Zm9ybSB9O1xuIiwiaW1wb3J0IHsgYXJyb3cgYXMgYXJyb3ckMSwgY29tcHV0ZVBvc2l0aW9uIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5leHBvcnQgeyBhdXRvUGxhY2VtZW50LCBhdXRvVXBkYXRlLCBjb21wdXRlUG9zaXRpb24sIGRldGVjdE92ZXJmbG93LCBmbGlwLCBnZXRPdmVyZmxvd0FuY2VzdG9ycywgaGlkZSwgaW5saW5lLCBsaW1pdFNoaWZ0LCBvZmZzZXQsIHBsYXRmb3JtLCBzaGlmdCwgc2l6ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlTGF5b3V0RWZmZWN0LCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIFRoaXMgd3JhcHMgdGhlIGNvcmUgYGFycm93YCBtaWRkbGV3YXJlIHRvIGFsbG93IFJlYWN0IHJlZnMgYXMgdGhlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXJyb3dcbiAqL1xuY29uc3QgYXJyb3cgPSBvcHRpb25zID0+IHtcbiAgZnVuY3Rpb24gaXNSZWYodmFsdWUpIHtcbiAgICByZXR1cm4ge30uaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgJ2N1cnJlbnQnKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdhcnJvdycsXG4gICAgb3B0aW9ucyxcbiAgICBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBlbGVtZW50LFxuICAgICAgICBwYWRkaW5nXG4gICAgICB9ID0gdHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicgPyBvcHRpb25zKHN0YXRlKSA6IG9wdGlvbnM7XG4gICAgICBpZiAoZWxlbWVudCAmJiBpc1JlZihlbGVtZW50KSkge1xuICAgICAgICBpZiAoZWxlbWVudC5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gYXJyb3ckMSh7XG4gICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50LmN1cnJlbnQsXG4gICAgICAgICAgICBwYWRkaW5nXG4gICAgICAgICAgfSkuZm4oc3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gYXJyb3ckMSh7XG4gICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICBwYWRkaW5nXG4gICAgICAgIH0pLmZuKHN0YXRlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG52YXIgaW5kZXggPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gdXNlTGF5b3V0RWZmZWN0IDogdXNlRWZmZWN0O1xuXG4vLyBGb3JrIG9mIGBmYXN0LWRlZXAtZXF1YWxgIHRoYXQgb25seSBkb2VzIHRoZSBjb21wYXJpc29ucyB3ZSBuZWVkIGFuZCBjb21wYXJlc1xuLy8gZnVuY3Rpb25zXG5mdW5jdGlvbiBkZWVwRXF1YWwoYSwgYikge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBhID09PSAnZnVuY3Rpb24nICYmIGEudG9TdHJpbmcoKSA9PT0gYi50b1N0cmluZygpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgbGV0IGxlbmd0aCwgaSwga2V5cztcbiAgaWYgKGEgJiYgYiAmJiB0eXBlb2YgYSA9PSAnb2JqZWN0Jykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgICBsZW5ndGggPSBhLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgICBpZiAoIWRlZXBFcXVhbChhW2ldLCBiW2ldKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhhKTtcbiAgICBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICBpZiAobGVuZ3RoICE9PSBPYmplY3Qua2V5cyhiKS5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICBpZiAoIXt9Lmhhc093blByb3BlcnR5LmNhbGwoYiwga2V5c1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICBpZiAoa2V5ID09PSAnX293bmVyJyAmJiBhLiQkdHlwZW9mKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGEgIT09IGEgJiYgYiAhPT0gYjtcbn1cblxuZnVuY3Rpb24gZ2V0RFBSKGVsZW1lbnQpIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgY29uc3Qgd2luID0gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgcmV0dXJuIHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDE7XG59XG5cbmZ1bmN0aW9uIHJvdW5kQnlEUFIoZWxlbWVudCwgdmFsdWUpIHtcbiAgY29uc3QgZHByID0gZ2V0RFBSKGVsZW1lbnQpO1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIGRwcikgLyBkcHI7XG59XG5cbmZ1bmN0aW9uIHVzZUxhdGVzdFJlZih2YWx1ZSkge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYodmFsdWUpO1xuICBpbmRleCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiByZWY7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhIGZsb2F0aW5nIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvcmVhY3RcbiAqL1xuZnVuY3Rpb24gdXNlRmxvYXRpbmcob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICBzdHJhdGVneSA9ICdhYnNvbHV0ZScsXG4gICAgbWlkZGxld2FyZSA9IFtdLFxuICAgIHBsYXRmb3JtLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICByZWZlcmVuY2U6IGV4dGVybmFsUmVmZXJlbmNlLFxuICAgICAgZmxvYXRpbmc6IGV4dGVybmFsRmxvYXRpbmdcbiAgICB9ID0ge30sXG4gICAgdHJhbnNmb3JtID0gdHJ1ZSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZCxcbiAgICBvcGVuXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgeDogMCxcbiAgICB5OiAwLFxuICAgIHN0cmF0ZWd5LFxuICAgIHBsYWNlbWVudCxcbiAgICBtaWRkbGV3YXJlRGF0YToge30sXG4gICAgaXNQb3NpdGlvbmVkOiBmYWxzZVxuICB9KTtcbiAgY29uc3QgW2xhdGVzdE1pZGRsZXdhcmUsIHNldExhdGVzdE1pZGRsZXdhcmVdID0gUmVhY3QudXNlU3RhdGUobWlkZGxld2FyZSk7XG4gIGlmICghZGVlcEVxdWFsKGxhdGVzdE1pZGRsZXdhcmUsIG1pZGRsZXdhcmUpKSB7XG4gICAgc2V0TGF0ZXN0TWlkZGxld2FyZShtaWRkbGV3YXJlKTtcbiAgfVxuICBjb25zdCBbX3JlZmVyZW5jZSwgX3NldFJlZmVyZW5jZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW19mbG9hdGluZywgX3NldEZsb2F0aW5nXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBzZXRSZWZlcmVuY2UgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPSByZWZlcmVuY2VSZWYuY3VycmVudCkge1xuICAgICAgcmVmZXJlbmNlUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgX3NldFJlZmVyZW5jZShub2RlKTtcbiAgICB9XG4gIH0sIFtfc2V0UmVmZXJlbmNlXSk7XG4gIGNvbnN0IHNldEZsb2F0aW5nID0gUmVhY3QudXNlQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgaWYgKG5vZGUgIT09IGZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBub2RlO1xuICAgICAgX3NldEZsb2F0aW5nKG5vZGUpO1xuICAgIH1cbiAgfSwgW19zZXRGbG9hdGluZ10pO1xuICBjb25zdCByZWZlcmVuY2VFbCA9IGV4dGVybmFsUmVmZXJlbmNlIHx8IF9yZWZlcmVuY2U7XG4gIGNvbnN0IGZsb2F0aW5nRWwgPSBleHRlcm5hbEZsb2F0aW5nIHx8IF9mbG9hdGluZztcbiAgY29uc3QgcmVmZXJlbmNlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBmbG9hdGluZ1JlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgZGF0YVJlZiA9IFJlYWN0LnVzZVJlZihkYXRhKTtcbiAgY29uc3Qgd2hpbGVFbGVtZW50c01vdW50ZWRSZWYgPSB1c2VMYXRlc3RSZWYod2hpbGVFbGVtZW50c01vdW50ZWQpO1xuICBjb25zdCBwbGF0Zm9ybVJlZiA9IHVzZUxhdGVzdFJlZihwbGF0Zm9ybSk7XG4gIGNvbnN0IHVwZGF0ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXJlZmVyZW5jZVJlZi5jdXJyZW50IHx8ICFmbG9hdGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZTogbGF0ZXN0TWlkZGxld2FyZVxuICAgIH07XG4gICAgaWYgKHBsYXRmb3JtUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbmZpZy5wbGF0Zm9ybSA9IHBsYXRmb3JtUmVmLmN1cnJlbnQ7XG4gICAgfVxuICAgIGNvbXB1dGVQb3NpdGlvbihyZWZlcmVuY2VSZWYuY3VycmVudCwgZmxvYXRpbmdSZWYuY3VycmVudCwgY29uZmlnKS50aGVuKGRhdGEgPT4ge1xuICAgICAgY29uc3QgZnVsbERhdGEgPSB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGlzUG9zaXRpb25lZDogdHJ1ZVxuICAgICAgfTtcbiAgICAgIGlmIChpc01vdW50ZWRSZWYuY3VycmVudCAmJiAhZGVlcEVxdWFsKGRhdGFSZWYuY3VycmVudCwgZnVsbERhdGEpKSB7XG4gICAgICAgIGRhdGFSZWYuY3VycmVudCA9IGZ1bGxEYXRhO1xuICAgICAgICBSZWFjdERPTS5mbHVzaFN5bmMoKCkgPT4ge1xuICAgICAgICAgIHNldERhdGEoZnVsbERhdGEpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW2xhdGVzdE1pZGRsZXdhcmUsIHBsYWNlbWVudCwgc3RyYXRlZ3ksIHBsYXRmb3JtUmVmXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAob3BlbiA9PT0gZmFsc2UgJiYgZGF0YVJlZi5jdXJyZW50LmlzUG9zaXRpb25lZCkge1xuICAgICAgZGF0YVJlZi5jdXJyZW50LmlzUG9zaXRpb25lZCA9IGZhbHNlO1xuICAgICAgc2V0RGF0YShkYXRhID0+ICh7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGlzUG9zaXRpb25lZDogZmFsc2VcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0sIFtvcGVuXSk7XG4gIGNvbnN0IGlzTW91bnRlZFJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpc01vdW50ZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgfTtcbiAgfSwgW10pO1xuICBpbmRleCgoKSA9PiB7XG4gICAgaWYgKHJlZmVyZW5jZUVsKSByZWZlcmVuY2VSZWYuY3VycmVudCA9IHJlZmVyZW5jZUVsO1xuICAgIGlmIChmbG9hdGluZ0VsKSBmbG9hdGluZ1JlZi5jdXJyZW50ID0gZmxvYXRpbmdFbDtcbiAgICBpZiAocmVmZXJlbmNlRWwgJiYgZmxvYXRpbmdFbCkge1xuICAgICAgaWYgKHdoaWxlRWxlbWVudHNNb3VudGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuIHdoaWxlRWxlbWVudHNNb3VudGVkUmVmLmN1cnJlbnQocmVmZXJlbmNlRWwsIGZsb2F0aW5nRWwsIHVwZGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cGRhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbCwgdXBkYXRlLCB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZl0pO1xuICBjb25zdCByZWZzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlUmVmLFxuICAgIGZsb2F0aW5nOiBmbG9hdGluZ1JlZixcbiAgICBzZXRSZWZlcmVuY2UsXG4gICAgc2V0RmxvYXRpbmdcbiAgfSksIFtzZXRSZWZlcmVuY2UsIHNldEZsb2F0aW5nXSk7XG4gIGNvbnN0IGVsZW1lbnRzID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlRWwsXG4gICAgZmxvYXRpbmc6IGZsb2F0aW5nRWxcbiAgfSksIFtyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbF0pO1xuICBjb25zdCBmbG9hdGluZ1N0eWxlcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxTdHlsZXMgPSB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3ksXG4gICAgICBsZWZ0OiAwLFxuICAgICAgdG9wOiAwXG4gICAgfTtcbiAgICBpZiAoIWVsZW1lbnRzLmZsb2F0aW5nKSB7XG4gICAgICByZXR1cm4gaW5pdGlhbFN0eWxlcztcbiAgICB9XG4gICAgY29uc3QgeCA9IHJvdW5kQnlEUFIoZWxlbWVudHMuZmxvYXRpbmcsIGRhdGEueCk7XG4gICAgY29uc3QgeSA9IHJvdW5kQnlEUFIoZWxlbWVudHMuZmxvYXRpbmcsIGRhdGEueSk7XG4gICAgaWYgKHRyYW5zZm9ybSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaW5pdGlhbFN0eWxlcyxcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZShcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4KVwiLFxuICAgICAgICAuLi4oZ2V0RFBSKGVsZW1lbnRzLmZsb2F0aW5nKSA+PSAxLjUgJiYge1xuICAgICAgICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LFxuICAgICAgbGVmdDogeCxcbiAgICAgIHRvcDogeVxuICAgIH07XG4gIH0sIFtzdHJhdGVneSwgdHJhbnNmb3JtLCBlbGVtZW50cy5mbG9hdGluZywgZGF0YS54LCBkYXRhLnldKTtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICAuLi5kYXRhLFxuICAgIHVwZGF0ZSxcbiAgICByZWZzLFxuICAgIGVsZW1lbnRzLFxuICAgIGZsb2F0aW5nU3R5bGVzXG4gIH0pLCBbZGF0YSwgdXBkYXRlLCByZWZzLCBlbGVtZW50cywgZmxvYXRpbmdTdHlsZXNdKTtcbn1cblxuZXhwb3J0IHsgYXJyb3csIHVzZUZsb2F0aW5nIH07XG4iLCJpbXBvcnQgJGpibkV4JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJGpibkV4JGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJGpibkV4JGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJGpibkV4JFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDdlOGY1Y2QwNzE4NzgwM2UkdmFyJE5BTUUgPSAnQXJyb3cnO1xuY29uc3QgJDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgPSAvKiNfX1BVUkVfXyovICRqYm5FeCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgY2hpbGRyZW46IGNoaWxkcmVuICwgd2lkdGg6IHdpZHRoID0gMTAgLCBoZWlnaHQ6IGhlaWdodCA9IDUgLCAuLi5hcnJvd1Byb3BzIH0gPSBwcm9wcztcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkamJuRXgkY3JlYXRlRWxlbWVudCgkamJuRXgkUHJpbWl0aXZlLnN2ZywgJGpibkV4JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBhcnJvd1Byb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICB3aWR0aDogd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICB2aWV3Qm94OiBcIjAgMCAzMCAxMFwiLFxuICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiBcIm5vbmVcIlxuICAgIH0pLCBwcm9wcy5hc0NoaWxkID8gY2hpbGRyZW4gOiAvKiNfX1BVUkVfXyovICRqYm5FeCRjcmVhdGVFbGVtZW50KFwicG9seWdvblwiLCB7XG4gICAgICAgIHBvaW50czogXCIwLDAgMzAsMCAxNSwxMFwiXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUsIHtcbiAgICBkaXNwbGF5TmFtZTogJDdlOGY1Y2QwNzE4NzgwM2UkdmFyJE5BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1O1xuXG5cblxuXG5leHBvcnQgeyQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1IGFzIEFycm93LCAkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAka1k5M1YkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7dXNlU3RhdGUgYXMgJGtZOTNWJHVzZVN0YXRlLCBjcmVhdGVFbGVtZW50IGFzICRrWTkzViRjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmIGFzICRrWTkzViRmb3J3YXJkUmVmLCB1c2VSZWYgYXMgJGtZOTNWJHVzZVJlZiwgdXNlRWZmZWN0IGFzICRrWTkzViR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHt1c2VGbG9hdGluZyBhcyAka1k5M1YkdXNlRmxvYXRpbmcsIGF1dG9VcGRhdGUgYXMgJGtZOTNWJGF1dG9VcGRhdGUsIG9mZnNldCBhcyAka1k5M1Ykb2Zmc2V0LCBzaGlmdCBhcyAka1k5M1Ykc2hpZnQsIGxpbWl0U2hpZnQgYXMgJGtZOTNWJGxpbWl0U2hpZnQsIGZsaXAgYXMgJGtZOTNWJGZsaXAsIHNpemUgYXMgJGtZOTNWJHNpemUsIGFycm93IGFzICRrWTkzViRhcnJvdywgaGlkZSBhcyAka1k5M1YkaGlkZX0gZnJvbSBcIkBmbG9hdGluZy11aS9yZWFjdC1kb21cIjtcbmltcG9ydCB7Um9vdCBhcyAka1k5M1YkUm9vdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1hcnJvd1wiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJGtZOTNWJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICRrWTkzViRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJGtZOTNWJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJGtZOTNWJHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcbmltcG9ydCB7dXNlTGF5b3V0RWZmZWN0IGFzICRrWTkzViR1c2VMYXlvdXRFZmZlY3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWxheW91dC1lZmZlY3RcIjtcbmltcG9ydCB7dXNlU2l6ZSBhcyAka1k5M1YkdXNlU2l6ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2Utc2l6ZVwiO1xuXG5cblxuXG5cblxuXG5cblxuXG5cbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQzNmYwMDg2ZGEwOWM0YjlmID0gW1xuICAgICd0b3AnLFxuICAgICdyaWdodCcsXG4gICAgJ2JvdHRvbScsXG4gICAgJ2xlZnQnXG5dO1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDM2NzFmZmFiN2IzMDJmYzkgPSBbXG4gICAgJ3N0YXJ0JyxcbiAgICAnY2VudGVyJyxcbiAgICAnZW5kJ1xuXTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUUgPSAnUG9wcGVyJztcbmNvbnN0IFskY2YxYWM1ZDlmZTBlODIwNiR2YXIkY3JlYXRlUG9wcGVyQ29udGV4dCwgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDcyMmFhYzE5NGFlOTIzXSA9ICRrWTkzViRjcmVhdGVDb250ZXh0U2NvcGUoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBPUFBFUl9OQU1FKTtcbmNvbnN0IFskY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyUHJvdmlkZXIsICRjZjFhYzVkOWZlMGU4MjA2JHZhciR1c2VQb3BwZXJDb250ZXh0XSA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRjcmVhdGVQb3BwZXJDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRQT1BQRVJfTkFNRSk7XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmFkYWM5YWRhM2EwYmRmOSA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQb3BwZXI6IF9fc2NvcGVQb3BwZXIgLCBjaGlsZHJlbjogY2hpbGRyZW4gIH0gPSBwcm9wcztcbiAgICBjb25zdCBbYW5jaG9yLCBzZXRBbmNob3JdID0gJGtZOTNWJHVzZVN0YXRlKG51bGwpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrWTkzViRjcmVhdGVFbGVtZW50KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRQb3BwZXJQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVBvcHBlcixcbiAgICAgICAgYW5jaG9yOiBhbmNob3IsXG4gICAgICAgIG9uQW5jaG9yQ2hhbmdlOiBzZXRBbmNob3JcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYWRhYzlhZGEzYTBiZGY5LCB7XG4gICAgZGlzcGxheU5hbWU6ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRQT1BQRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BwZXJBbmNob3JcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJEFOQ0hPUl9OQU1FID0gJ1BvcHBlckFuY2hvcic7XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkZWNkNGUxY2NhYjZlZDZkID0gLyojX19QVVJFX18qLyAka1k5M1YkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQb3BwZXI6IF9fc2NvcGVQb3BwZXIgLCB2aXJ0dWFsUmVmOiB2aXJ0dWFsUmVmICwgLi4uYW5jaG9yUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdXNlUG9wcGVyQ29udGV4dCgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQU5DSE9SX05BTUUsIF9fc2NvcGVQb3BwZXIpO1xuICAgIGNvbnN0IHJlZiA9ICRrWTkzViR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJGtZOTNWJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgJGtZOTNWJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAvLyBDb25zdW1lciBjYW4gYW5jaG9yIHRoZSBwb3BwZXIgdG8gc29tZXRoaW5nIHRoYXQgaXNuJ3RcbiAgICAgICAgLy8gYSBET00gbm9kZSBlLmcuIHBvaW50ZXIgcG9zaXRpb24sIHNvIHdlIG92ZXJyaWRlIHRoZVxuICAgICAgICAvLyBgYW5jaG9yUmVmYCB3aXRoIHRoZWlyIHZpcnR1YWwgcmVmIGluIHRoaXMgY2FzZS5cbiAgICAgICAgY29udGV4dC5vbkFuY2hvckNoYW5nZSgodmlydHVhbFJlZiA9PT0gbnVsbCB8fCB2aXJ0dWFsUmVmID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2aXJ0dWFsUmVmLmN1cnJlbnQpIHx8IHJlZi5jdXJyZW50KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdmlydHVhbFJlZiA/IG51bGwgOiAvKiNfX1BVUkVfXyovICRrWTkzViRjcmVhdGVFbGVtZW50KCRrWTkzViRQcmltaXRpdmUuZGl2LCAka1k5M1YkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGFuY2hvclByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGVjZDRlMWNjYWI2ZWQ2ZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQU5DSE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wcGVyQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQ09OVEVOVF9OQU1FID0gJ1BvcHBlckNvbnRlbnQnO1xuY29uc3QgWyRjZjFhYzVkOWZlMGU4MjA2JHZhciRQb3BwZXJDb250ZW50UHJvdmlkZXIsICRjZjFhYzVkOWZlMGU4MjA2JHZhciR1c2VDb250ZW50Q29udGV4dF0gPSAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkY3JlYXRlUG9wcGVyQ29udGV4dCgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQ09OVEVOVF9OQU1FKTtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYzRhZTU4NTVkM2M0ZmMgPSAvKiNfX1BVUkVfXyovICRrWTkzViRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIHZhciBfYXJyb3dTaXplJHdpZHRoLCBfYXJyb3dTaXplJGhlaWdodCwgX21pZGRsZXdhcmVEYXRhJGFycm93LCBfbWlkZGxld2FyZURhdGEkYXJyb3cyLCBfbWlkZGxld2FyZURhdGEkYXJyb3czLCBfbWlkZGxld2FyZURhdGEkdHJhbnMsIF9taWRkbGV3YXJlRGF0YSR0cmFuczIsIF9taWRkbGV3YXJlRGF0YSRoaWRlO1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIHNpZGU6IHNpZGUgPSAnYm90dG9tJyAsIHNpZGVPZmZzZXQ6IHNpZGVPZmZzZXQgPSAwICwgYWxpZ246IGFsaWduID0gJ2NlbnRlcicgLCBhbGlnbk9mZnNldDogYWxpZ25PZmZzZXQgPSAwICwgYXJyb3dQYWRkaW5nOiBhcnJvd1BhZGRpbmcgPSAwICwgY29sbGlzaW9uQm91bmRhcnk6IGNvbGxpc2lvbkJvdW5kYXJ5ID0gW10gLCBjb2xsaXNpb25QYWRkaW5nOiBjb2xsaXNpb25QYWRkaW5nUHJvcCA9IDAgLCBzdGlja3k6IHN0aWNreSA9ICdwYXJ0aWFsJyAsIGhpZGVXaGVuRGV0YWNoZWQ6IGhpZGVXaGVuRGV0YWNoZWQgPSBmYWxzZSAsIGF2b2lkQ29sbGlzaW9uczogYXZvaWRDb2xsaXNpb25zID0gdHJ1ZSAsIG9uUGxhY2VkOiBvblBsYWNlZCAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciR1c2VQb3BwZXJDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVQb3BwZXIpO1xuICAgIGNvbnN0IFtjb250ZW50LCBzZXRDb250ZW50XSA9ICRrWTkzViR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka1k5M1YkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXRDb250ZW50KG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBbYXJyb3csIHNldEFycm93XSA9ICRrWTkzViR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBhcnJvd1NpemUgPSAka1k5M1YkdXNlU2l6ZShhcnJvdyk7XG4gICAgY29uc3QgYXJyb3dXaWR0aCA9IChfYXJyb3dTaXplJHdpZHRoID0gYXJyb3dTaXplID09PSBudWxsIHx8IGFycm93U2l6ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJyb3dTaXplLndpZHRoKSAhPT0gbnVsbCAmJiBfYXJyb3dTaXplJHdpZHRoICE9PSB2b2lkIDAgPyBfYXJyb3dTaXplJHdpZHRoIDogMDtcbiAgICBjb25zdCBhcnJvd0hlaWdodCA9IChfYXJyb3dTaXplJGhlaWdodCA9IGFycm93U2l6ZSA9PT0gbnVsbCB8fCBhcnJvd1NpemUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGFycm93U2l6ZS5oZWlnaHQpICE9PSBudWxsICYmIF9hcnJvd1NpemUkaGVpZ2h0ICE9PSB2b2lkIDAgPyBfYXJyb3dTaXplJGhlaWdodCA6IDA7XG4gICAgY29uc3QgZGVzaXJlZFBsYWNlbWVudCA9IHNpZGUgKyAoYWxpZ24gIT09ICdjZW50ZXInID8gJy0nICsgYWxpZ24gOiAnJyk7XG4gICAgY29uc3QgY29sbGlzaW9uUGFkZGluZyA9IHR5cGVvZiBjb2xsaXNpb25QYWRkaW5nUHJvcCA9PT0gJ251bWJlcicgPyBjb2xsaXNpb25QYWRkaW5nUHJvcCA6IHtcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICByaWdodDogMCxcbiAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICAuLi5jb2xsaXNpb25QYWRkaW5nUHJvcFxuICAgIH07XG4gICAgY29uc3QgYm91bmRhcnkgPSBBcnJheS5pc0FycmF5KGNvbGxpc2lvbkJvdW5kYXJ5KSA/IGNvbGxpc2lvbkJvdW5kYXJ5IDogW1xuICAgICAgICBjb2xsaXNpb25Cb3VuZGFyeVxuICAgIF07XG4gICAgY29uc3QgaGFzRXhwbGljaXRCb3VuZGFyaWVzID0gYm91bmRhcnkubGVuZ3RoID4gMDtcbiAgICBjb25zdCBkZXRlY3RPdmVyZmxvd09wdGlvbnMgPSB7XG4gICAgICAgIHBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmcsXG4gICAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeS5maWx0ZXIoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGlzTm90TnVsbCksXG4gICAgICAgIC8vIHdpdGggYHN0cmF0ZWd5OiAnZml4ZWQnYCwgdGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IGl0IHRvIHJlc3BlY3QgYm91bmRhcmllc1xuICAgICAgICBhbHRCb3VuZGFyeTogaGFzRXhwbGljaXRCb3VuZGFyaWVzXG4gICAgfTtcbiAgICBjb25zdCB7IHJlZnM6IHJlZnMgLCBmbG9hdGluZ1N0eWxlczogZmxvYXRpbmdTdHlsZXMgLCBwbGFjZW1lbnQ6IHBsYWNlbWVudCAsIGlzUG9zaXRpb25lZDogaXNQb3NpdGlvbmVkICwgbWlkZGxld2FyZURhdGE6IG1pZGRsZXdhcmVEYXRhICB9ID0gJGtZOTNWJHVzZUZsb2F0aW5nKHtcbiAgICAgICAgLy8gZGVmYXVsdCB0byBgZml4ZWRgIHN0cmF0ZWd5IHNvIHVzZXJzIGRvbid0IGhhdmUgdG8gcGljayBhbmQgd2UgYWxzbyBhdm9pZCBmb2N1cyBzY3JvbGwgaXNzdWVzXG4gICAgICAgIHN0cmF0ZWd5OiAnZml4ZWQnLFxuICAgICAgICBwbGFjZW1lbnQ6IGRlc2lyZWRQbGFjZW1lbnQsXG4gICAgICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiAka1k5M1YkYXV0b1VwZGF0ZSxcbiAgICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgICAgIHJlZmVyZW5jZTogY29udGV4dC5hbmNob3JcbiAgICAgICAgfSxcbiAgICAgICAgbWlkZGxld2FyZTogW1xuICAgICAgICAgICAgJGtZOTNWJG9mZnNldCh7XG4gICAgICAgICAgICAgICAgbWFpbkF4aXM6IHNpZGVPZmZzZXQgKyBhcnJvd0hlaWdodCxcbiAgICAgICAgICAgICAgICBhbGlnbm1lbnRBeGlzOiBhbGlnbk9mZnNldFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhdm9pZENvbGxpc2lvbnMgJiYgJGtZOTNWJHNoaWZ0KHtcbiAgICAgICAgICAgICAgICBtYWluQXhpczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjcm9zc0F4aXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxpbWl0ZXI6IHN0aWNreSA9PT0gJ3BhcnRpYWwnID8gJGtZOTNWJGxpbWl0U2hpZnQoKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYXZvaWRDb2xsaXNpb25zICYmICRrWTkzViRmbGlwKHtcbiAgICAgICAgICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgJGtZOTNWJHNpemUoe1xuICAgICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgICBhcHBseTogKHsgZWxlbWVudHM6IGVsZW1lbnRzICwgcmVjdHM6IHJlY3RzICwgYXZhaWxhYmxlV2lkdGg6IGF2YWlsYWJsZVdpZHRoICwgYXZhaWxhYmxlSGVpZ2h0OiBhdmFpbGFibGVIZWlnaHQgIH0pPT57XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgd2lkdGg6IGFuY2hvcldpZHRoICwgaGVpZ2h0OiBhbmNob3JIZWlnaHQgIH0gPSByZWN0cy5yZWZlcmVuY2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRTdHlsZSA9IGVsZW1lbnRzLmZsb2F0aW5nLnN0eWxlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50U3R5bGUuc2V0UHJvcGVydHkoJy0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCcsIGAke2F2YWlsYWJsZVdpZHRofXB4YCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCcsIGAke2F2YWlsYWJsZUhlaWdodH1weGApO1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50U3R5bGUuc2V0UHJvcGVydHkoJy0tcmFkaXgtcG9wcGVyLWFuY2hvci13aWR0aCcsIGAke2FuY2hvcldpZHRofXB4YCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1wb3BwZXItYW5jaG9yLWhlaWdodCcsIGAke2FuY2hvckhlaWdodH1weGApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYXJyb3cgJiYgJGtZOTNWJGFycm93KHtcbiAgICAgICAgICAgICAgICBlbGVtZW50OiBhcnJvdyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiBhcnJvd1BhZGRpbmdcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHRyYW5zZm9ybU9yaWdpbih7XG4gICAgICAgICAgICAgICAgYXJyb3dXaWR0aDogYXJyb3dXaWR0aCxcbiAgICAgICAgICAgICAgICBhcnJvd0hlaWdodDogYXJyb3dIZWlnaHRcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaGlkZVdoZW5EZXRhY2hlZCAmJiAka1k5M1YkaGlkZSh7XG4gICAgICAgICAgICAgICAgc3RyYXRlZ3k6ICdyZWZlcmVuY2VIaWRkZW4nXG4gICAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgfSk7XG4gICAgY29uc3QgW3BsYWNlZFNpZGUsIHBsYWNlZEFsaWduXSA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRnZXRTaWRlQW5kQWxpZ25Gcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gICAgY29uc3QgaGFuZGxlUGxhY2VkID0gJGtZOTNWJHVzZUNhbGxiYWNrUmVmKG9uUGxhY2VkKTtcbiAgICAka1k5M1YkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChpc1Bvc2l0aW9uZWQpIGhhbmRsZVBsYWNlZCA9PT0gbnVsbCB8fCBoYW5kbGVQbGFjZWQgPT09IHZvaWQgMCB8fCBoYW5kbGVQbGFjZWQoKTtcbiAgICB9LCBbXG4gICAgICAgIGlzUG9zaXRpb25lZCxcbiAgICAgICAgaGFuZGxlUGxhY2VkXG4gICAgXSk7XG4gICAgY29uc3QgYXJyb3dYID0gKF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkYXJyb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdy54O1xuICAgIGNvbnN0IGFycm93WSA9IChfbWlkZGxld2FyZURhdGEkYXJyb3cyID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdzIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdzIueTtcbiAgICBjb25zdCBjYW5ub3RDZW50ZXJBcnJvdyA9ICgoX21pZGRsZXdhcmVEYXRhJGFycm93MyA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkYXJyb3czID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXJyb3czLmNlbnRlck9mZnNldCkgIT09IDA7XG4gICAgY29uc3QgW2NvbnRlbnRaSW5kZXgsIHNldENvbnRlbnRaSW5kZXhdID0gJGtZOTNWJHVzZVN0YXRlKCk7XG4gICAgJGtZOTNWJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGVudCkgc2V0Q29udGVudFpJbmRleCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjb250ZW50KS56SW5kZXgpO1xuICAgIH0sIFtcbiAgICAgICAgY29udGVudFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrWTkzViRjcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgcmVmOiByZWZzLnNldEZsb2F0aW5nLFxuICAgICAgICBcImRhdGEtcmFkaXgtcG9wcGVyLWNvbnRlbnQtd3JhcHBlclwiOiBcIlwiLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4uZmxvYXRpbmdTdHlsZXMsXG4gICAgICAgICAgICB0cmFuc2Zvcm06IGlzUG9zaXRpb25lZCA/IGZsb2F0aW5nU3R5bGVzLnRyYW5zZm9ybSA6ICd0cmFuc2xhdGUoMCwgLTIwMCUpJyxcbiAgICAgICAgICAgIC8vIGtlZXAgb2ZmIHRoZSBwYWdlIHdoZW4gbWVhc3VyaW5nXG4gICAgICAgICAgICBtaW5XaWR0aDogJ21heC1jb250ZW50JyxcbiAgICAgICAgICAgIHpJbmRleDogY29udGVudFpJbmRleCxcbiAgICAgICAgICAgIFsnLS1yYWRpeC1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiddOiBbXG4gICAgICAgICAgICAgICAgKF9taWRkbGV3YXJlRGF0YSR0cmFucyA9IG1pZGRsZXdhcmVEYXRhLnRyYW5zZm9ybU9yaWdpbikgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJHRyYW5zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkdHJhbnMueCxcbiAgICAgICAgICAgICAgICAoX21pZGRsZXdhcmVEYXRhJHRyYW5zMiA9IG1pZGRsZXdhcmVEYXRhLnRyYW5zZm9ybU9yaWdpbikgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJHRyYW5zMiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJHRyYW5zMi55XG4gICAgICAgICAgICBdLmpvaW4oJyAnKVxuICAgICAgICB9IC8vIEZsb2F0aW5nIFVJIGludGVyYWxseSBjYWxjdWxhdGVzIGxvZ2ljYWwgYWxpZ25tZW50IGJhc2VkIHRoZSBgZGlyYCBhdHRyaWJ1dGUgb25cbiAgICAgICAgLFxuICAgICAgICBkaXI6IHByb3BzLmRpclxuICAgIH0sIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlckNvbnRlbnRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVBvcHBlcixcbiAgICAgICAgcGxhY2VkU2lkZTogcGxhY2VkU2lkZSxcbiAgICAgICAgb25BcnJvd0NoYW5nZTogc2V0QXJyb3csXG4gICAgICAgIGFycm93WDogYXJyb3dYLFxuICAgICAgICBhcnJvd1k6IGFycm93WSxcbiAgICAgICAgc2hvdWxkSGlkZUFycm93OiBjYW5ub3RDZW50ZXJBcnJvd1xuICAgIH0sIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGtZOTNWJFByaW1pdGl2ZS5kaXYsICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiZGF0YS1zaWRlXCI6IHBsYWNlZFNpZGUsXG4gICAgICAgIFwiZGF0YS1hbGlnblwiOiBwbGFjZWRBbGlnblxuICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnRQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIC8vIGlmIHRoZSBQb3BwZXJDb250ZW50IGhhc24ndCBiZWVuIHBsYWNlZCB5ZXQgKG5vdCBhbGwgbWVhc3VyZW1lbnRzIGRvbmUpXG4gICAgICAgICAgICAvLyB3ZSBwcmV2ZW50IGFuaW1hdGlvbnMgc28gdGhhdCB1c2VycydzIGFuaW1hdGlvbiBkb24ndCBraWNrIGluIHRvbyBlYXJseSByZWZlcnJpbmcgd3Jvbmcgc2lkZXNcbiAgICAgICAgICAgIGFuaW1hdGlvbjogIWlzUG9zaXRpb25lZCA/ICdub25lJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIC8vIGhpZGUgdGhlIGNvbnRlbnQgaWYgdXNpbmcgdGhlIGhpZGUgbWlkZGxld2FyZSBhbmQgc2hvdWxkIGJlIGhpZGRlblxuICAgICAgICAgICAgb3BhY2l0eTogKF9taWRkbGV3YXJlRGF0YSRoaWRlID0gbWlkZGxld2FyZURhdGEuaGlkZSkgIT09IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGhpZGUgIT09IHZvaWQgMCAmJiBfbWlkZGxld2FyZURhdGEkaGlkZS5yZWZlcmVuY2VIaWRkZW4gPyAwIDogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYzRhZTU4NTVkM2M0ZmMsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BwZXJBcnJvd1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQVJST1dfTkFNRSA9ICdQb3BwZXJBcnJvdyc7XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkT1BQT1NJVEVfU0lERSA9IHtcbiAgICB0b3A6ICdib3R0b20nLFxuICAgIHJpZ2h0OiAnbGVmdCcsXG4gICAgYm90dG9tOiAndG9wJyxcbiAgICBsZWZ0OiAncmlnaHQnXG59O1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDc5ZDYyY2Q0ZTEwYTNmZDAgPSAvKiNfX1BVUkVfXyovICRrWTkzViRmb3J3YXJkUmVmKGZ1bmN0aW9uICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3OWQ2MmNkNGUxMGEzZmQwKHByb3BzLCBmb3J3YXJkZWRSZWYpIHtcbiAgICBjb25zdCB7IF9fc2NvcGVQb3BwZXI6IF9fc2NvcGVQb3BwZXIgLCAuLi5hcnJvd1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciR1c2VDb250ZW50Q29udGV4dCgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQVJST1dfTkFNRSwgX19zY29wZVBvcHBlcik7XG4gICAgY29uc3QgYmFzZVNpZGUgPSAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkT1BQT1NJVEVfU0lERVtjb250ZW50Q29udGV4dC5wbGFjZWRTaWRlXTtcbiAgICByZXR1cm4oLyojX19QVVJFX18qLyAvLyB3ZSBoYXZlIHRvIHVzZSBhbiBleHRyYSB3cmFwcGVyIGJlY2F1c2UgYFJlc2l6ZU9ic2VydmVyYCAodXNlZCBieSBgdXNlU2l6ZWApXG4gICAgLy8gZG9lc24ndCByZXBvcnQgc2l6ZSBhcyB3ZSdkIGV4cGVjdCBvbiBTVkcgZWxlbWVudHMuXG4gICAgLy8gaXQgcmVwb3J0cyB0aGVpciBib3VuZGluZyBib3ggd2hpY2ggaXMgZWZmZWN0aXZlbHkgdGhlIGxhcmdlc3QgcGF0aCBpbnNpZGUgdGhlIFNWRy5cbiAgICAka1k5M1YkY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICByZWY6IGNvbnRlbnRDb250ZXh0Lm9uQXJyb3dDaGFuZ2UsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGxlZnQ6IGNvbnRlbnRDb250ZXh0LmFycm93WCxcbiAgICAgICAgICAgIHRvcDogY29udGVudENvbnRleHQuYXJyb3dZLFxuICAgICAgICAgICAgW2Jhc2VTaWRlXTogMCxcbiAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjoge1xuICAgICAgICAgICAgICAgIHRvcDogJycsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICcwIDAnLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogJ2NlbnRlciAwJyxcbiAgICAgICAgICAgICAgICBsZWZ0OiAnMTAwJSAwJ1xuICAgICAgICAgICAgfVtjb250ZW50Q29udGV4dC5wbGFjZWRTaWRlXSxcbiAgICAgICAgICAgIHRyYW5zZm9ybToge1xuICAgICAgICAgICAgICAgIHRvcDogJ3RyYW5zbGF0ZVkoMTAwJSknLFxuICAgICAgICAgICAgICAgIHJpZ2h0OiAndHJhbnNsYXRlWSg1MCUpIHJvdGF0ZSg5MGRlZykgdHJhbnNsYXRlWCgtNTAlKScsXG4gICAgICAgICAgICAgICAgYm90dG9tOiBgcm90YXRlKDE4MGRlZylgLFxuICAgICAgICAgICAgICAgIGxlZnQ6ICd0cmFuc2xhdGVZKDUwJSkgcm90YXRlKC05MGRlZykgdHJhbnNsYXRlWCg1MCUpJ1xuICAgICAgICAgICAgfVtjb250ZW50Q29udGV4dC5wbGFjZWRTaWRlXSxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGNvbnRlbnRDb250ZXh0LnNob3VsZEhpZGVBcnJvdyA/ICdoaWRkZW4nIDogdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICB9LCAvKiNfX1BVUkVfXyovICRrWTkzViRjcmVhdGVFbGVtZW50KCRrWTkzViRSb290LCAka1k5M1YkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5hcnJvd1Byb3BzLnN0eWxlLFxuICAgICAgICAgICAgLy8gZW5zdXJlcyB0aGUgZWxlbWVudCBjYW4gYmUgbWVhc3VyZWQgY29ycmVjdGx5IChtb3N0bHkgZm9yIGlmIFNWRylcbiAgICAgICAgICAgIGRpc3BsYXk6ICdibG9jaydcbiAgICAgICAgfVxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDc5ZDYyY2Q0ZTEwYTNmZDAsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJEFSUk9XX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkaXNOb3ROdWxsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSBudWxsO1xufVxuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHRyYW5zZm9ybU9yaWdpbiA9IChvcHRpb25zKT0+KHtcbiAgICAgICAgbmFtZTogJ3RyYW5zZm9ybU9yaWdpbicsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgIGZuIChkYXRhKSB7XG4gICAgICAgICAgICB2YXIgX21pZGRsZXdhcmVEYXRhJGFycm93NCwgX21pZGRsZXdhcmVEYXRhJGFycm93NSwgX21pZGRsZXdhcmVEYXRhJGFycm93NiwgX21pZGRsZXdhcmVEYXRhJGFycm93NywgX21pZGRsZXdhcmVEYXRhJGFycm93ODtcbiAgICAgICAgICAgIGNvbnN0IHsgcGxhY2VtZW50OiBwbGFjZW1lbnQgLCByZWN0czogcmVjdHMgLCBtaWRkbGV3YXJlRGF0YTogbWlkZGxld2FyZURhdGEgIH0gPSBkYXRhO1xuICAgICAgICAgICAgY29uc3QgY2Fubm90Q2VudGVyQXJyb3cgPSAoKF9taWRkbGV3YXJlRGF0YSRhcnJvdzQgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93NCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93NC5jZW50ZXJPZmZzZXQpICE9PSAwO1xuICAgICAgICAgICAgY29uc3QgaXNBcnJvd0hpZGRlbiA9IGNhbm5vdENlbnRlckFycm93O1xuICAgICAgICAgICAgY29uc3QgYXJyb3dXaWR0aCA9IGlzQXJyb3dIaWRkZW4gPyAwIDogb3B0aW9ucy5hcnJvd1dpZHRoO1xuICAgICAgICAgICAgY29uc3QgYXJyb3dIZWlnaHQgPSBpc0Fycm93SGlkZGVuID8gMCA6IG9wdGlvbnMuYXJyb3dIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBbcGxhY2VkU2lkZSwgcGxhY2VkQWxpZ25dID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IG5vQXJyb3dBbGlnbiA9IHtcbiAgICAgICAgICAgICAgICBzdGFydDogJzAlJyxcbiAgICAgICAgICAgICAgICBjZW50ZXI6ICc1MCUnLFxuICAgICAgICAgICAgICAgIGVuZDogJzEwMCUnXG4gICAgICAgICAgICB9W3BsYWNlZEFsaWduXTtcbiAgICAgICAgICAgIGNvbnN0IGFycm93WENlbnRlciA9ICgoX21pZGRsZXdhcmVEYXRhJGFycm93NSA9IChfbWlkZGxld2FyZURhdGEkYXJyb3c2ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdzYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdzYueCkgIT09IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93NSAhPT0gdm9pZCAwID8gX21pZGRsZXdhcmVEYXRhJGFycm93NSA6IDApICsgYXJyb3dXaWR0aCAvIDI7XG4gICAgICAgICAgICBjb25zdCBhcnJvd1lDZW50ZXIgPSAoKF9taWRkbGV3YXJlRGF0YSRhcnJvdzcgPSAoX21pZGRsZXdhcmVEYXRhJGFycm93OCA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkYXJyb3c4ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXJyb3c4LnkpICE9PSBudWxsICYmIF9taWRkbGV3YXJlRGF0YSRhcnJvdzcgIT09IHZvaWQgMCA/IF9taWRkbGV3YXJlRGF0YSRhcnJvdzcgOiAwKSArIGFycm93SGVpZ2h0IC8gMjtcbiAgICAgICAgICAgIGxldCB4ID0gJyc7XG4gICAgICAgICAgICBsZXQgeSA9ICcnO1xuICAgICAgICAgICAgaWYgKHBsYWNlZFNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgeCA9IGlzQXJyb3dIaWRkZW4gPyBub0Fycm93QWxpZ24gOiBgJHthcnJvd1hDZW50ZXJ9cHhgO1xuICAgICAgICAgICAgICAgIHkgPSBgJHstYXJyb3dIZWlnaHR9cHhgO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwbGFjZWRTaWRlID09PSAndG9wJykge1xuICAgICAgICAgICAgICAgIHggPSBpc0Fycm93SGlkZGVuID8gbm9BcnJvd0FsaWduIDogYCR7YXJyb3dYQ2VudGVyfXB4YDtcbiAgICAgICAgICAgICAgICB5ID0gYCR7cmVjdHMuZmxvYXRpbmcuaGVpZ2h0ICsgYXJyb3dIZWlnaHR9cHhgO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwbGFjZWRTaWRlID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgeCA9IGAkey1hcnJvd0hlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgeSA9IGlzQXJyb3dIaWRkZW4gPyBub0Fycm93QWxpZ24gOiBgJHthcnJvd1lDZW50ZXJ9cHhgO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwbGFjZWRTaWRlID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgICAgICB4ID0gYCR7cmVjdHMuZmxvYXRpbmcud2lkdGggKyBhcnJvd0hlaWdodH1weGA7XG4gICAgICAgICAgICAgICAgeSA9IGlzQXJyb3dIaWRkZW4gPyBub0Fycm93QWxpZ24gOiBgJHthcnJvd1lDZW50ZXJ9cHhgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIHg6IHgsXG4gICAgICAgICAgICAgICAgICAgIHk6IHlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSlcbjtcbmZ1bmN0aW9uICRjZjFhYzVkOWZlMGU4MjA2JHZhciRnZXRTaWRlQW5kQWxpZ25Gcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICAgIGNvbnN0IFtzaWRlLCBhbGlnbiA9ICdjZW50ZXInXSA9IHBsYWNlbWVudC5zcGxpdCgnLScpO1xuICAgIHJldHVybiBbXG4gICAgICAgIHNpZGUsXG4gICAgICAgIGFsaWduXG4gICAgXTtcbn1cbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJhZGFjOWFkYTNhMGJkZjk7XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYjY4ODI1Mzk1OGI4ZGZlNyA9ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQ7XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiA9ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYzRhZTU4NTVkM2M0ZmM7XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3OWQ2MmNkNGUxMGEzZmQwO1xuXG5cblxuXG5leHBvcnQgeyRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3MjJhYWMxOTRhZTkyMyBhcyBjcmVhdGVQb3BwZXJTY29wZSwgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJhZGFjOWFkYTNhMGJkZjkgYXMgUG9wcGVyLCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkZWNkNGUxY2NhYjZlZDZkIGFzIFBvcHBlckFuY2hvciwgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYyBhcyBQb3BwZXJDb250ZW50LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzlkNjJjZDRlMTBhM2ZkMCBhcyBQb3BwZXJBcnJvdywgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGI2ODgyNTM5NThiOGRmZTcgYXMgQW5jaG9yLCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSBhcyBBcnJvdywgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDM2ZjAwODZkYTA5YzRiOWYgYXMgU0lERV9PUFRJT05TLCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMzY3MWZmYWI3YjMwMmZjOSBhcyBBTElHTl9PUFRJT05TfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkYW02Z20kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7dXNlUmVmIGFzICRhbTZnbSR1c2VSZWYsIHVzZVN0YXRlIGFzICRhbTZnbSR1c2VTdGF0ZSwgY3JlYXRlRWxlbWVudCBhcyAkYW02Z20kY3JlYXRlRWxlbWVudCwgdXNlQ2FsbGJhY2sgYXMgJGFtNmdtJHVzZUNhbGxiYWNrLCBmb3J3YXJkUmVmIGFzICRhbTZnbSRmb3J3YXJkUmVmLCB1c2VFZmZlY3QgYXMgJGFtNmdtJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICRhbTZnbSRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICRhbTZnbSR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkYW02Z20kY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7RGlzbWlzc2FibGVMYXllciBhcyAkYW02Z20kRGlzbWlzc2FibGVMYXllcn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaXNtaXNzYWJsZS1sYXllclwiO1xuaW1wb3J0IHt1c2VGb2N1c0d1YXJkcyBhcyAkYW02Z20kdXNlRm9jdXNHdWFyZHN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZm9jdXMtZ3VhcmRzXCI7XG5pbXBvcnQge0ZvY3VzU2NvcGUgYXMgJGFtNmdtJEZvY3VzU2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZm9jdXMtc2NvcGVcIjtcbmltcG9ydCB7dXNlSWQgYXMgJGFtNmdtJHVzZUlkfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWlkXCI7XG5pbXBvcnQge2NyZWF0ZVBvcHBlclNjb3BlIGFzICRhbTZnbSRjcmVhdGVQb3BwZXJTY29wZSwgUm9vdCBhcyAkYW02Z20kUm9vdCwgQW5jaG9yIGFzICRhbTZnbSRBbmNob3IsIENvbnRlbnQgYXMgJGFtNmdtJENvbnRlbnQsIEFycm93IGFzICRhbTZnbSRBcnJvd30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3BwZXJcIjtcbmltcG9ydCB7UG9ydGFsIGFzICRhbTZnbSRQb3J0YWx9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9ydGFsXCI7XG5pbXBvcnQge1ByZXNlbmNlIGFzICRhbTZnbSRQcmVzZW5jZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmVzZW5jZVwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJGFtNmdtJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7U2xvdCBhcyAkYW02Z20kU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICRhbTZnbSR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge2hpZGVPdGhlcnMgYXMgJGFtNmdtJGhpZGVPdGhlcnN9IGZyb20gXCJhcmlhLWhpZGRlblwiO1xuaW1wb3J0IHtSZW1vdmVTY3JvbGwgYXMgJGFtNmdtJFJlbW92ZVNjcm9sbH0gZnJvbSBcInJlYWN0LXJlbW92ZS1zY3JvbGxcIjtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wb3ZlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUE9QT1ZFUl9OQU1FID0gJ1BvcG92ZXInO1xuY29uc3QgWyRjYjVjYzI3MGI1MGM2ZmNkJHZhciRjcmVhdGVQb3BvdmVyQ29udGV4dCwgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGM4MzkzYzllNzMyODY5MzJdID0gJGFtNmdtJGNyZWF0ZUNvbnRleHRTY29wZSgkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUE9QT1ZFUl9OQU1FLCBbXG4gICAgJGFtNmdtJGNyZWF0ZVBvcHBlclNjb3BlXG5dKTtcbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BwZXJTY29wZSA9ICRhbTZnbSRjcmVhdGVQb3BwZXJTY29wZSgpO1xuY29uc3QgWyRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3BvdmVyUHJvdmlkZXIsICRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BvdmVyQ29udGV4dF0gPSAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkY3JlYXRlUG9wb3ZlckNvbnRleHQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBPUE9WRVJfTkFNRSk7XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkNWI2YjE5NDA1YTgzZmY5ZCA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQb3BvdmVyOiBfX3Njb3BlUG9wb3ZlciAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIG9wZW46IG9wZW5Qcm9wICwgZGVmYXVsdE9wZW46IGRlZmF1bHRPcGVuICwgb25PcGVuQ2hhbmdlOiBvbk9wZW5DaGFuZ2UgLCBtb2RhbDogbW9kYWwgPSBmYWxzZSAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVQb3BvdmVyKTtcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gJGFtNmdtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbaGFzQ3VzdG9tQW5jaG9yLCBzZXRIYXNDdXN0b21BbmNob3JdID0gJGFtNmdtJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbb3BlbiA9IGZhbHNlLCBzZXRPcGVuXSA9ICRhbTZnbSR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IG9wZW5Qcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdE9wZW4sXG4gICAgICAgIG9uQ2hhbmdlOiBvbk9wZW5DaGFuZ2VcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkYW02Z20kUm9vdCwgcG9wcGVyU2NvcGUsIC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBvcG92ZXJQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVBvcG92ZXIsXG4gICAgICAgIGNvbnRlbnRJZDogJGFtNmdtJHVzZUlkKCksXG4gICAgICAgIHRyaWdnZXJSZWY6IHRyaWdnZXJSZWYsXG4gICAgICAgIG9wZW46IG9wZW4sXG4gICAgICAgIG9uT3BlbkNoYW5nZTogc2V0T3BlbixcbiAgICAgICAgb25PcGVuVG9nZ2xlOiAkYW02Z20kdXNlQ2FsbGJhY2soKCk9PnNldE9wZW4oKHByZXZPcGVuKT0+IXByZXZPcGVuXG4gICAgICAgICAgICApXG4gICAgICAgICwgW1xuICAgICAgICAgICAgc2V0T3BlblxuICAgICAgICBdKSxcbiAgICAgICAgaGFzQ3VzdG9tQW5jaG9yOiBoYXNDdXN0b21BbmNob3IsXG4gICAgICAgIG9uQ3VzdG9tQW5jaG9yQWRkOiAkYW02Z20kdXNlQ2FsbGJhY2soKCk9PnNldEhhc0N1c3RvbUFuY2hvcih0cnVlKVxuICAgICAgICAsIFtdKSxcbiAgICAgICAgb25DdXN0b21BbmNob3JSZW1vdmU6ICRhbTZnbSR1c2VDYWxsYmFjaygoKT0+c2V0SGFzQ3VzdG9tQW5jaG9yKGZhbHNlKVxuICAgICAgICAsIFtdKSxcbiAgICAgICAgbW9kYWw6IG1vZGFsXG4gICAgfSwgY2hpbGRyZW4pKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDViNmIxOTQwNWE4M2ZmOWQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBPUE9WRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BvdmVyQW5jaG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRBTkNIT1JfTkFNRSA9ICdQb3BvdmVyQW5jaG9yJztcbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ5NmU1MzgxZjQyNTIxYTc5ID0gLyojX19QVVJFX18qLyAkYW02Z20kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQb3BvdmVyOiBfX3Njb3BlUG9wb3ZlciAsIC4uLmFuY2hvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcG92ZXJDb250ZXh0KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRBTkNIT1JfTkFNRSwgX19zY29wZVBvcG92ZXIpO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVQb3BvdmVyKTtcbiAgICBjb25zdCB7IG9uQ3VzdG9tQW5jaG9yQWRkOiBvbkN1c3RvbUFuY2hvckFkZCAsIG9uQ3VzdG9tQW5jaG9yUmVtb3ZlOiBvbkN1c3RvbUFuY2hvclJlbW92ZSAgfSA9IGNvbnRleHQ7XG4gICAgJGFtNmdtJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBvbkN1c3RvbUFuY2hvckFkZCgpO1xuICAgICAgICByZXR1cm4gKCk9Pm9uQ3VzdG9tQW5jaG9yUmVtb3ZlKClcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgb25DdXN0b21BbmNob3JBZGQsXG4gICAgICAgIG9uQ3VzdG9tQW5jaG9yUmVtb3ZlXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGFtNmdtJEFuY2hvciwgJGFtNmdtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwb3BwZXJTY29wZSwgYW5jaG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkOTZlNTM4MWY0MjUyMWE3OSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkQU5DSE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wb3ZlclRyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFRSSUdHRVJfTkFNRSA9ICdQb3BvdmVyVHJpZ2dlcic7XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkN2RhY2IwNWQyNjQ2NmMzID0gLyojX19QVVJFX18qLyAkYW02Z20kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQb3BvdmVyOiBfX3Njb3BlUG9wb3ZlciAsIC4uLnRyaWdnZXJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BvdmVyQ29udGV4dCgkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkVFJJR0dFUl9OQU1FLCBfX3Njb3BlUG9wb3Zlcik7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVBvcG92ZXIpO1xuICAgIGNvbnN0IGNvbXBvc2VkVHJpZ2dlclJlZiA9ICRhbTZnbSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZXh0LnRyaWdnZXJSZWYpO1xuICAgIGNvbnN0IHRyaWdnZXIgPSAvKiNfX1BVUkVfXyovICRhbTZnbSRjcmVhdGVFbGVtZW50KCRhbTZnbSRQcmltaXRpdmUuYnV0dG9uLCAkYW02Z20kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJkaWFsb2dcIixcbiAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGNvbnRleHQub3BlbixcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGNvbnRleHQuY29udGVudElkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogJGNiNWNjMjcwYjUwYzZmY2QkdmFyJGdldFN0YXRlKGNvbnRleHQub3BlbilcbiAgICB9LCB0cmlnZ2VyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFRyaWdnZXJSZWYsXG4gICAgICAgIG9uQ2xpY2s6ICRhbTZnbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCBjb250ZXh0Lm9uT3BlblRvZ2dsZSlcbiAgICB9KSk7XG4gICAgcmV0dXJuIGNvbnRleHQuaGFzQ3VzdG9tQW5jaG9yID8gdHJpZ2dlciA6IC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGFtNmdtJEFuY2hvciwgJGFtNmdtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZVxuICAgIH0sIHBvcHBlclNjb3BlKSwgdHJpZ2dlcik7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkN2RhY2IwNWQyNjQ2NmMzLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRUUklHR0VSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wb3ZlclBvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUE9SVEFMX05BTUUgPSAnUG9wb3ZlclBvcnRhbCc7XG5jb25zdCBbJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBvcnRhbFByb3ZpZGVyLCAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9ydGFsQ29udGV4dF0gPSAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkY3JlYXRlUG9wb3ZlckNvbnRleHQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBPUlRBTF9OQU1FLCB7XG4gICAgZm9yY2VNb3VudDogdW5kZWZpbmVkXG59KTtcbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRkZDY3OWZmYjQzNjJkMmQ0ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVBvcG92ZXI6IF9fc2NvcGVQb3BvdmVyICwgZm9yY2VNb3VudDogZm9yY2VNb3VudCAsIGNoaWxkcmVuOiBjaGlsZHJlbiAsIGNvbnRhaW5lcjogY29udGFpbmVyICB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3BvdmVyQ29udGV4dCgkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUE9SVEFMX05BTUUsIF9fc2NvcGVQb3BvdmVyKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUG9ydGFsUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVQb3BvdmVyLFxuICAgICAgICBmb3JjZU1vdW50OiBmb3JjZU1vdW50XG4gICAgfSwgLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkYW02Z20kUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBjb250ZXh0Lm9wZW5cbiAgICB9LCAvKiNfX1BVUkVfXyovICRhbTZnbSRjcmVhdGVFbGVtZW50KCRhbTZnbSRQb3J0YWwsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgY29udGFpbmVyOiBjb250YWluZXJcbiAgICB9LCBjaGlsZHJlbikpKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGRkNjc5ZmZiNDM2MmQyZDQsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBPUlRBTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcG92ZXJDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRDT05URU5UX05BTUUgPSAnUG9wb3ZlckNvbnRlbnQnO1xuY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGQ3ZTFmNDIwYjI1NTQ5ZmYgPSAvKiNfX1BVUkVfXyovICRhbTZnbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHBvcnRhbENvbnRleHQgPSAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9ydGFsQ29udGV4dCgkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlUG9wb3Zlcik7XG4gICAgY29uc3QgeyBmb3JjZU1vdW50OiBmb3JjZU1vdW50ID0gcG9ydGFsQ29udGV4dC5mb3JjZU1vdW50ICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcG92ZXJDb250ZXh0KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVQb3BvdmVyKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkYW02Z20kUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBjb250ZXh0Lm9wZW5cbiAgICB9LCBjb250ZXh0Lm1vZGFsID8gLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUG9wb3ZlckNvbnRlbnRNb2RhbCwgJGFtNmdtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkgOiAvKiNfX1BVUkVfXyovICRhbTZnbSRjcmVhdGVFbGVtZW50KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3BvdmVyQ29udGVudE5vbk1vZGFsLCAkYW02Z20kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZDdlMWY0MjBiMjU1NDlmZiwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBvcG92ZXJDb250ZW50TW9kYWwgPSAvKiNfX1BVUkVfXyovICRhbTZnbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9wb3ZlckNvbnRleHQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZVBvcG92ZXIpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSAkYW02Z20kdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRhbTZnbSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZW50UmVmKTtcbiAgICBjb25zdCBpc1JpZ2h0Q2xpY2tPdXRzaWRlUmVmID0gJGFtNmdtJHVzZVJlZihmYWxzZSk7IC8vIGFyaWEtaGlkZSBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgY29udGVudCAoYmV0dGVyIHN1cHBvcnRlZCBlcXVpdmFsZW50IHRvIHNldHRpbmcgYXJpYS1tb2RhbClcbiAgICAkYW02Z20kdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBjb250ZW50UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmIChjb250ZW50KSByZXR1cm4gJGFtNmdtJGhpZGVPdGhlcnMoY29udGVudCk7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRhbTZnbSRjcmVhdGVFbGVtZW50KCRhbTZnbSRSZW1vdmVTY3JvbGwsIHtcbiAgICAgICAgYXM6ICRhbTZnbSRTbG90LFxuICAgICAgICBhbGxvd1BpbmNoWm9vbTogdHJ1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJGFtNmdtJGNyZWF0ZUVsZW1lbnQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBvcG92ZXJDb250ZW50SW1wbCwgJGFtNmdtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyAvLyB3ZSBtYWtlIHN1cmUgd2UncmUgbm90IHRyYXBwaW5nIG9uY2UgaXQncyBiZWVuIGNsb3NlZFxuICAgICAgICAsXG4gICAgICAgIHRyYXBGb2N1czogY29udGV4dC5vcGVuLFxuICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IHRydWUsXG4gICAgICAgIG9uQ2xvc2VBdXRvRm9jdXM6ICRhbTZnbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsb3NlQXV0b0ZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX2NvbnRleHQkdHJpZ2dlclJlZiRjO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmICghaXNSaWdodENsaWNrT3V0c2lkZVJlZi5jdXJyZW50KSAoX2NvbnRleHQkdHJpZ2dlclJlZiRjID0gY29udGV4dC50cmlnZ2VyUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jb250ZXh0JHRyaWdnZXJSZWYkYyA9PT0gdm9pZCAwIHx8IF9jb250ZXh0JHRyaWdnZXJSZWYkYy5mb2N1cygpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyRG93bk91dHNpZGU6ICRhbTZnbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vblBvaW50ZXJEb3duT3V0c2lkZSwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxFdmVudCA9IGV2ZW50LmRldGFpbC5vcmlnaW5hbEV2ZW50O1xuICAgICAgICAgICAgY29uc3QgY3RybExlZnRDbGljayA9IG9yaWdpbmFsRXZlbnQuYnV0dG9uID09PSAwICYmIG9yaWdpbmFsRXZlbnQuY3RybEtleSA9PT0gdHJ1ZTtcbiAgICAgICAgICAgIGNvbnN0IGlzUmlnaHRDbGljayA9IG9yaWdpbmFsRXZlbnQuYnV0dG9uID09PSAyIHx8IGN0cmxMZWZ0Q2xpY2s7XG4gICAgICAgICAgICBpc1JpZ2h0Q2xpY2tPdXRzaWRlUmVmLmN1cnJlbnQgPSBpc1JpZ2h0Q2xpY2s7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZDogZmFsc2VcbiAgICAgICAgfSkgLy8gV2hlbiBmb2N1cyBpcyB0cmFwcGVkLCBhIGBmb2N1c291dGAgZXZlbnQgbWF5IHN0aWxsIGhhcHBlbi5cbiAgICAgICAgLFxuICAgICAgICBvbkZvY3VzT3V0c2lkZTogJGFtNmdtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXNPdXRzaWRlLCAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICwge1xuICAgICAgICAgICAgY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkOiBmYWxzZVxuICAgICAgICB9KVxuICAgIH0pKSk7XG59KTtcbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3BvdmVyQ29udGVudE5vbk1vZGFsID0gLyojX19QVVJFX18qLyAkYW02Z20kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcG92ZXJDb250ZXh0KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVQb3BvdmVyKTtcbiAgICBjb25zdCBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZiA9ICRhbTZnbSR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhc1BvaW50ZXJEb3duT3V0c2lkZVJlZiA9ICRhbTZnbSR1c2VSZWYoZmFsc2UpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRhbTZnbSRjcmVhdGVFbGVtZW50KCRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3BvdmVyQ29udGVudEltcGwsICRhbTZnbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHRyYXBGb2N1czogZmFsc2UsXG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICAgIG9uQ2xvc2VBdXRvRm9jdXM6IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25DbG9zZUF1dG9Gb2M7XG4gICAgICAgICAgICAoX3Byb3BzJG9uQ2xvc2VBdXRvRm9jID0gcHJvcHMub25DbG9zZUF1dG9Gb2N1cykgPT09IG51bGwgfHwgX3Byb3BzJG9uQ2xvc2VBdXRvRm9jID09PSB2b2lkIDAgfHwgX3Byb3BzJG9uQ2xvc2VBdXRvRm9jLmNhbGwocHJvcHMsIGV2ZW50KTtcbiAgICAgICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHZhciBfY29udGV4dCR0cmlnZ2VyUmVmJGMyO1xuICAgICAgICAgICAgICAgIGlmICghaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYuY3VycmVudCkgKF9jb250ZXh0JHRyaWdnZXJSZWYkYzIgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMiA9PT0gdm9pZCAwIHx8IF9jb250ZXh0JHRyaWdnZXJSZWYkYzIuZm9jdXMoKTsgLy8gQWx3YXlzIHByZXZlbnQgYXV0byBmb2N1cyBiZWNhdXNlIHdlIGVpdGhlciBmb2N1cyBtYW51YWxseSBvciB3YW50IHVzZXIgYWdlbnQgZm9jdXNcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgb25JbnRlcmFjdE91dHNpZGU6IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25JbnRlcmFjdE91dHMsIF9jb250ZXh0JHRyaWdnZXJSZWYkYzM7XG4gICAgICAgICAgICAoX3Byb3BzJG9uSW50ZXJhY3RPdXRzID0gcHJvcHMub25JbnRlcmFjdE91dHNpZGUpID09PSBudWxsIHx8IF9wcm9wcyRvbkludGVyYWN0T3V0cyA9PT0gdm9pZCAwIHx8IF9wcm9wcyRvbkludGVyYWN0T3V0cy5jYWxsKHByb3BzLCBldmVudCk7XG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGV0YWlsLm9yaWdpbmFsRXZlbnQudHlwZSA9PT0gJ3BvaW50ZXJkb3duJykgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfSAvLyBQcmV2ZW50IGRpc21pc3Npbmcgd2hlbiBjbGlja2luZyB0aGUgdHJpZ2dlci5cbiAgICAgICAgICAgIC8vIEFzIHRoZSB0cmlnZ2VyIGlzIGFscmVhZHkgc2V0dXAgdG8gY2xvc2UsIHdpdGhvdXQgZG9pbmcgc28gd291bGRcbiAgICAgICAgICAgIC8vIGNhdXNlIGl0IHRvIGNsb3NlIGFuZCBpbW1lZGlhdGVseSBvcGVuLlxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0SXNUcmlnZ2VyID0gKF9jb250ZXh0JHRyaWdnZXJSZWYkYzMgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRleHQkdHJpZ2dlclJlZiRjMy5jb250YWlucyh0YXJnZXQpO1xuICAgICAgICAgICAgaWYgKHRhcmdldElzVHJpZ2dlcikgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gT24gU2FmYXJpIGlmIHRoZSB0cmlnZ2VyIGlzIGluc2lkZSBhIGNvbnRhaW5lciB3aXRoIHRhYkluZGV4PXswfSwgd2hlbiBjbGlja2VkXG4gICAgICAgICAgICAvLyB3ZSB3aWxsIGdldCB0aGUgcG9pbnRlciBkb3duIG91dHNpZGUgZXZlbnQgb24gdGhlIHRyaWdnZXIsIGJ1dCB0aGVuIGEgc3Vic2VxdWVudFxuICAgICAgICAgICAgLy8gZm9jdXMgb3V0c2lkZSBldmVudCBvbiB0aGUgY29udGFpbmVyLCB3ZSBpZ25vcmUgYW55IGZvY3VzIG91dHNpZGUgZXZlbnQgd2hlbiB3ZSd2ZVxuICAgICAgICAgICAgLy8gYWxyZWFkeSBoYWQgYSBwb2ludGVyIGRvd24gb3V0c2lkZSBldmVudC5cbiAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlID09PSAnZm9jdXNpbicgJiYgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBvcG92ZXJDb250ZW50SW1wbCA9IC8qI19fUFVSRV9fKi8gJGFtNmdtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wb3ZlcjogX19zY29wZVBvcG92ZXIgLCB0cmFwRm9jdXM6IHRyYXBGb2N1cyAsIG9uT3BlbkF1dG9Gb2N1czogb25PcGVuQXV0b0ZvY3VzICwgb25DbG9zZUF1dG9Gb2N1czogb25DbG9zZUF1dG9Gb2N1cyAsIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzICwgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24gLCBvblBvaW50ZXJEb3duT3V0c2lkZTogb25Qb2ludGVyRG93bk91dHNpZGUgLCBvbkZvY3VzT3V0c2lkZTogb25Gb2N1c091dHNpZGUgLCBvbkludGVyYWN0T3V0c2lkZTogb25JbnRlcmFjdE91dHNpZGUgLCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9wb3ZlckNvbnRleHQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVBvcG92ZXIpO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVQb3BvdmVyKTsgLy8gTWFrZSBzdXJlIHRoZSB3aG9sZSB0cmVlIGhhcyBmb2N1cyBndWFyZHMgYXMgb3VyIGBQb3BvdmVyYCBtYXkgYmVcbiAgICAvLyB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBET00gKGJlYWN1c2Ugb2YgdGhlIGBQb3J0YWxgKVxuICAgICRhbTZnbSR1c2VGb2N1c0d1YXJkcygpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRhbTZnbSRjcmVhdGVFbGVtZW50KCRhbTZnbSRGb2N1c1Njb3BlLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGxvb3A6IHRydWUsXG4gICAgICAgIHRyYXBwZWQ6IHRyYXBGb2N1cyxcbiAgICAgICAgb25Nb3VudEF1dG9Gb2N1czogb25PcGVuQXV0b0ZvY3VzLFxuICAgICAgICBvblVubW91bnRBdXRvRm9jdXM6IG9uQ2xvc2VBdXRvRm9jdXNcbiAgICB9LCAvKiNfX1BVUkVfXyovICRhbTZnbSRjcmVhdGVFbGVtZW50KCRhbTZnbSREaXNtaXNzYWJsZUxheWVyLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLFxuICAgICAgICBvbkludGVyYWN0T3V0c2lkZTogb25JbnRlcmFjdE91dHNpZGUsXG4gICAgICAgIG9uRXNjYXBlS2V5RG93bjogb25Fc2NhcGVLZXlEb3duLFxuICAgICAgICBvblBvaW50ZXJEb3duT3V0c2lkZTogb25Qb2ludGVyRG93bk91dHNpZGUsXG4gICAgICAgIG9uRm9jdXNPdXRzaWRlOiBvbkZvY3VzT3V0c2lkZSxcbiAgICAgICAgb25EaXNtaXNzOiAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgfSwgLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkYW02Z20kQ29udGVudCwgJGFtNmdtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRnZXRTdGF0ZShjb250ZXh0Lm9wZW4pLFxuICAgICAgICByb2xlOiBcImRpYWxvZ1wiLFxuICAgICAgICBpZDogY29udGV4dC5jb250ZW50SWRcbiAgICB9LCBwb3BwZXJTY29wZSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4uY29udGVudFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgJy0tcmFkaXgtcG9wb3Zlci1jb250ZW50LXRyYW5zZm9ybS1vcmlnaW4nOiAndmFyKC0tcmFkaXgtcG9wcGVyLXRyYW5zZm9ybS1vcmlnaW4pJyxcbiAgICAgICAgICAgICctLXJhZGl4LXBvcG92ZXItY29udGVudC1hdmFpbGFibGUtd2lkdGgnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtcG9wb3Zlci1jb250ZW50LWF2YWlsYWJsZS1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS1oZWlnaHQpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXBvcG92ZXItdHJpZ2dlci13aWR0aCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYW5jaG9yLXdpZHRoKScsXG4gICAgICAgICAgICAnLS1yYWRpeC1wb3BvdmVyLXRyaWdnZXItaGVpZ2h0JzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3ItaGVpZ2h0KSdcbiAgICAgICAgfVxuICAgIH0pKSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BvdmVyQ2xvc2VcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkdmFyJENMT1NFX05BTUUgPSAnUG9wb3ZlckNsb3NlJztcbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRkNmFjNDNlYmFhNDBkNTNlID0gLyojX19QVVJFX18qLyAkYW02Z20kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQb3BvdmVyOiBfX3Njb3BlUG9wb3ZlciAsIC4uLmNsb3NlUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9wb3ZlckNvbnRleHQoJGNiNWNjMjcwYjUwYzZmY2QkdmFyJENMT1NFX05BTUUsIF9fc2NvcGVQb3BvdmVyKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkYW02Z20kUHJpbWl0aXZlLmJ1dHRvbiwgJGFtNmdtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIlxuICAgIH0sIGNsb3NlUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIG9uQ2xpY2s6ICRhbTZnbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgICAgIClcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZDZhYzQzZWJhYTQwZDUzZSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkQ0xPU0VfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BvdmVyQXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkdmFyJEFSUk9XX05BTUUgPSAnUG9wb3ZlckFycm93JztcbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQzMTUyODQxMTE1ZTA2MWIyID0gLyojX19QVVJFX18qLyAkYW02Z20kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQb3BvdmVyOiBfX3Njb3BlUG9wb3ZlciAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVQb3BvdmVyKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkYW02Z20kY3JlYXRlRWxlbWVudCgkYW02Z20kQXJyb3csICRhbTZnbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkMzE1Mjg0MTExNWUwNjFiMiwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkQVJST1dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRjYjVjYzI3MGI1MGM2ZmNkJHZhciRnZXRTdGF0ZShvcGVuKSB7XG4gICAgcmV0dXJuIG9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJztcbn1cbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDViNmIxOTQwNWE4M2ZmOWQ7XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkYjY4ODI1Mzk1OGI4ZGZlNyA9ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ5NmU1MzgxZjQyNTIxYTc5O1xuY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgPSAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkN2RhY2IwNWQyNjQ2NmMzO1xuY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZGQ2NzlmZmI0MzYyZDJkNDtcbmNvbnN0ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGQ3ZTFmNDIwYjI1NTQ5ZmY7XG5jb25zdCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZjM5YzJkMTY1Y2Q4NjFmZSA9ICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRkNmFjNDNlYmFhNDBkNTNlO1xuY29uc3QgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgPSAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkMzE1Mjg0MTExNWUwNjFiMjtcblxuXG5cblxuZXhwb3J0IHskY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkYzgzOTNjOWU3MzI4NjkzMiBhcyBjcmVhdGVQb3BvdmVyU2NvcGUsICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ1YjZiMTk0MDVhODNmZjlkIGFzIFBvcG92ZXIsICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ5NmU1MzgxZjQyNTIxYTc5IGFzIFBvcG92ZXJBbmNob3IsICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ3ZGFjYjA1ZDI2NDY2YzMgYXMgUG9wb3ZlclRyaWdnZXIsICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRkZDY3OWZmYjQzNjJkMmQ0IGFzIFBvcG92ZXJQb3J0YWwsICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRkN2UxZjQyMGIyNTU0OWZmIGFzIFBvcG92ZXJDb250ZW50LCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkZDZhYzQzZWJhYTQwZDUzZSBhcyBQb3BvdmVyQ2xvc2UsICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQzMTUyODQxMTE1ZTA2MWIyIGFzIFBvcG92ZXJBcnJvdywgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JGI2ODgyNTM5NThiOGRmZTcgYXMgQW5jaG9yLCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCBhcyBUcmlnZ2VyLCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyBhcyBQb3J0YWwsICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRmMzljMmQxNjVjZDg2MWZlIGFzIENsb3NlLCAkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSBhcyBBcnJvd307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLG51bGwsImltcG9ydCAkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkazAzd0kkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkazAzd0kkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkazAzd0kkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICRrMDN3SSRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUHJvZ3Jlc3NcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJFBST0dSRVNTX05BTUUgPSAnUHJvZ3Jlc3MnO1xuY29uc3QgJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYID0gMTAwO1xuY29uc3QgWyQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRjcmVhdGVQcm9ncmVzc0NvbnRleHQsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCQzODhlYjJkOGY2ZDMyNjFmXSA9ICRrMDN3SSRjcmVhdGVDb250ZXh0U2NvcGUoJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJFBST0dSRVNTX05BTUUpO1xuY29uc3QgWyQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQcm9ncmVzc1Byb3ZpZGVyLCAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkdXNlUHJvZ3Jlc3NDb250ZXh0XSA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRjcmVhdGVQcm9ncmVzc0NvbnRleHQoJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJFBST0dSRVNTX05BTUUpO1xuY29uc3QgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGIyNWEzMDRlYzdkNzQ2YmIgPSAvKiNfX1BVUkVfXyovICRrMDN3SSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVByb2dyZXNzOiBfX3Njb3BlUHJvZ3Jlc3MgLCB2YWx1ZTogdmFsdWVQcm9wICwgbWF4OiBtYXhQcm9wICwgZ2V0VmFsdWVMYWJlbDogZ2V0VmFsdWVMYWJlbCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRkZWZhdWx0R2V0VmFsdWVMYWJlbCAsIC4uLnByb2dyZXNzUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IG1heCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkTWF4TnVtYmVyKG1heFByb3ApID8gbWF4UHJvcCA6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRERUZBVUxUX01BWDtcbiAgICBjb25zdCB2YWx1ZSA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkVmFsdWVOdW1iZXIodmFsdWVQcm9wLCBtYXgpID8gdmFsdWVQcm9wIDogbnVsbDtcbiAgICBjb25zdCB2YWx1ZUxhYmVsID0gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzTnVtYmVyKHZhbHVlKSA/IGdldFZhbHVlTGFiZWwodmFsdWUsIG1heCkgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGswM3dJJGNyZWF0ZUVsZW1lbnQoJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJFByb2dyZXNzUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVQcm9ncmVzcyxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBtYXg6IG1heFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJGswM3dJJGNyZWF0ZUVsZW1lbnQoJGswM3dJJFByaW1pdGl2ZS5kaXYsICRrMDN3SSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiYXJpYS12YWx1ZW1heFwiOiBtYXgsXG4gICAgICAgIFwiYXJpYS12YWx1ZW1pblwiOiAwLFxuICAgICAgICBcImFyaWEtdmFsdWVub3dcIjogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzTnVtYmVyKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkLFxuICAgICAgICBcImFyaWEtdmFsdWV0ZXh0XCI6IHZhbHVlTGFiZWwsXG4gICAgICAgIHJvbGU6IFwicHJvZ3Jlc3NiYXJcIixcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRQcm9ncmVzc1N0YXRlKHZhbHVlLCBtYXgpLFxuICAgICAgICBcImRhdGEtdmFsdWVcIjogdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHZvaWQgMCA/IHZhbHVlIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtbWF4XCI6IG1heFxuICAgIH0sIHByb2dyZXNzUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGIyNWEzMDRlYzdkNzQ2YmIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJFBST0dSRVNTX05BTUVcbn0pO1xuJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGIyNWEzMDRlYzdkNzQ2YmIucHJvcFR5cGVzID0ge1xuICAgIG1heCAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAgICAgIGNvbnN0IHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgY29uc3Qgc3RyVmFsID0gU3RyaW5nKHByb3BWYWx1ZSk7XG4gICAgICAgIGlmIChwcm9wVmFsdWUgJiYgISQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkTWF4TnVtYmVyKHByb3BWYWx1ZSkpIHJldHVybiBuZXcgRXJyb3IoJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldEludmFsaWRNYXhFcnJvcihzdHJWYWwsIGNvbXBvbmVudE5hbWUpKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgICB2YWx1ZSAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlUHJvcCA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgY29uc3Qgc3RyVmFsID0gU3RyaW5nKHZhbHVlUHJvcCk7XG4gICAgICAgIGNvbnN0IG1heCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkTWF4TnVtYmVyKHByb3BzLm1heCkgPyBwcm9wcy5tYXggOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVg7XG4gICAgICAgIGlmICh2YWx1ZVByb3AgIT0gbnVsbCAmJiAhJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzVmFsaWRWYWx1ZU51bWJlcih2YWx1ZVByb3AsIG1heCkpIHJldHVybiBuZXcgRXJyb3IoJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldEludmFsaWRWYWx1ZUVycm9yKHN0clZhbCwgY29tcG9uZW50TmFtZSkpO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59O1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUHJvZ3Jlc3NJbmRpY2F0b3JcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJElORElDQVRPUl9OQU1FID0gJ1Byb2dyZXNzSW5kaWNhdG9yJztcbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCQyYjc3NmY3ZTdlZTYwZGJkID0gLyojX19QVVJFX18qLyAkazAzd0kkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICB2YXIgX2NvbnRleHQkdmFsdWU7XG4gICAgY29uc3QgeyBfX3Njb3BlUHJvZ3Jlc3M6IF9fc2NvcGVQcm9ncmVzcyAsIC4uLmluZGljYXRvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJHVzZVByb2dyZXNzQ29udGV4dCgkNjc4MjRkOTgyNDUyMDhhMCR2YXIkSU5ESUNBVE9SX05BTUUsIF9fc2NvcGVQcm9ncmVzcyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGswM3dJJGNyZWF0ZUVsZW1lbnQoJGswM3dJJFByaW1pdGl2ZS5kaXYsICRrMDN3SSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0UHJvZ3Jlc3NTdGF0ZShjb250ZXh0LnZhbHVlLCBjb250ZXh0Lm1heCksXG4gICAgICAgIFwiZGF0YS12YWx1ZVwiOiAoX2NvbnRleHQkdmFsdWUgPSBjb250ZXh0LnZhbHVlKSAhPT0gbnVsbCAmJiBfY29udGV4dCR2YWx1ZSAhPT0gdm9pZCAwID8gX2NvbnRleHQkdmFsdWUgOiB1bmRlZmluZWQsXG4gICAgICAgIFwiZGF0YS1tYXhcIjogY29udGV4dC5tYXhcbiAgICB9LCBpbmRpY2F0b3JQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCQyYjc3NmY3ZTdlZTYwZGJkLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRJTkRJQ0FUT1JfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRkZWZhdWx0R2V0VmFsdWVMYWJlbCh2YWx1ZSwgbWF4KSB7XG4gICAgcmV0dXJuIGAke01hdGgucm91bmQodmFsdWUgLyBtYXggKiAxMDApfSVgO1xufVxuZnVuY3Rpb24gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldFByb2dyZXNzU3RhdGUodmFsdWUsIG1heFZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnaW5kZXRlcm1pbmF0ZScgOiB2YWx1ZSA9PT0gbWF4VmFsdWUgPyAnY29tcGxldGUnIDogJ2xvYWRpbmcnO1xufVxuZnVuY3Rpb24gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzTnVtYmVyKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcic7XG59XG5mdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihtYXgpIHtcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICByZXR1cm4gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzTnVtYmVyKG1heCkgJiYgIWlzTmFOKG1heCkgJiYgbWF4ID4gMDtcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkVmFsdWVOdW1iZXIodmFsdWUsIG1heCkge1xuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIHJldHVybiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNOdW1iZXIodmFsdWUpICYmICFpc05hTih2YWx1ZSkgJiYgdmFsdWUgPD0gbWF4ICYmIHZhbHVlID49IDA7XG59IC8vIFNwbGl0IHRoaXMgb3V0IGZvciBjbGVhcmVyIHJlYWRhYmlsaXR5IG9mIHRoZSBlcnJvciBtZXNzYWdlLlxuZnVuY3Rpb24gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldEludmFsaWRNYXhFcnJvcihwcm9wVmFsdWUsIGNvbXBvbmVudE5hbWUpIHtcbiAgICByZXR1cm4gYEludmFsaWQgcHJvcCBcXGBtYXhcXGAgb2YgdmFsdWUgXFxgJHtwcm9wVmFsdWV9XFxgIHN1cHBsaWVkIHRvIFxcYCR7Y29tcG9uZW50TmFtZX1cXGAuIE9ubHkgbnVtYmVycyBncmVhdGVyIHRoYW4gMCBhcmUgdmFsaWQgbWF4IHZhbHVlcy4gRGVmYXVsdGluZyB0byBcXGAkeyQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRERUZBVUxUX01BWH1cXGAuYDtcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkVmFsdWVFcnJvcihwcm9wVmFsdWUsIGNvbXBvbmVudE5hbWUpIHtcbiAgICByZXR1cm4gYEludmFsaWQgcHJvcCBcXGB2YWx1ZVxcYCBvZiB2YWx1ZSBcXGAke3Byb3BWYWx1ZX1cXGAgc3VwcGxpZWQgdG8gXFxgJHtjb21wb25lbnROYW1lfVxcYC4gVGhlIFxcYHZhbHVlXFxgIHByb3AgbXVzdCBiZTpcbiAgLSBhIHBvc2l0aXZlIG51bWJlclxuICAtIGxlc3MgdGhhbiB0aGUgdmFsdWUgcGFzc2VkIHRvIFxcYG1heFxcYCAob3IgJHskNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVh9IGlmIG5vIFxcYG1heFxcYCBwcm9wIGlzIHNldClcbiAgLSBcXGBudWxsXFxgIGlmIHRoZSBwcm9ncmVzcyBpcyBpbmRldGVybWluYXRlLlxuXG5EZWZhdWx0aW5nIHRvIFxcYG51bGxcXGAuYDtcbn1cbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGIyNWEzMDRlYzdkNzQ2YmI7XG5jb25zdCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYWRiNTg0NzM3ZDcxMmI3MCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCQyYjc3NmY3ZTdlZTYwZGJkO1xuXG5cblxuXG5leHBvcnQgeyQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCQzODhlYjJkOGY2ZDMyNjFmIGFzIGNyZWF0ZVByb2dyZXNzU2NvcGUsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiIGFzIFByb2dyZXNzLCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZCBhcyBQcm9ncmVzc0luZGljYXRvciwgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAgYXMgSW5kaWNhdG9yfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsbnVsbCwiaW1wb3J0ICQ2dlloVSRyZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ2dlloVSRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDZ2WWhVJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7U2xvdCBhcyAkNnZZaFUkU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5cblxuXG5cblxuLy8gV2UgaGF2ZSByZXNvcnRlZCB0byByZXR1cm5pbmcgc2xvdHMgZGlyZWN0bHkgcmF0aGVyIHRoYW4gZXhwb3NpbmcgcHJpbWl0aXZlcyB0aGF0IGNhbiB0aGVuXG4vLyBiZSBzbG90dGVkIGxpa2UgYDxDb2xsZWN0aW9uSXRlbSBhcz17U2xvdH0+4oCmPC9Db2xsZWN0aW9uSXRlbT5gLlxuLy8gVGhpcyBpcyBiZWNhdXNlIHdlIGVuY291bnRlcmVkIGlzc3VlcyB3aXRoIGdlbmVyaWMgdHlwZXMgdGhhdCBjYW5ub3QgYmUgc3RhdGljYWxseSBhbmFseXNlZFxuLy8gZHVlIHRvIGNyZWF0aW5nIHRoZW0gZHluYW1pY2FsbHkgdmlhIGNyZWF0ZUNvbGxlY3Rpb24uXG5mdW5jdGlvbiAkZTAyYTdkOWNiMWRjMTI4YyRleHBvcnQkYzc0MTI1YThlM2FmNmJiMihuYW1lKSB7XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQ29sbGVjdGlvblByb3ZpZGVyXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0IFBST1ZJREVSX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25Qcm92aWRlcic7XG4gICAgY29uc3QgW2NyZWF0ZUNvbGxlY3Rpb25Db250ZXh0LCBjcmVhdGVDb2xsZWN0aW9uU2NvcGVdID0gJDZ2WWhVJGNyZWF0ZUNvbnRleHRTY29wZShQUk9WSURFUl9OQU1FKTtcbiAgICBjb25zdCBbQ29sbGVjdGlvblByb3ZpZGVySW1wbCwgdXNlQ29sbGVjdGlvbkNvbnRleHRdID0gY3JlYXRlQ29sbGVjdGlvbkNvbnRleHQoUFJPVklERVJfTkFNRSwge1xuICAgICAgICBjb2xsZWN0aW9uUmVmOiB7XG4gICAgICAgICAgICBjdXJyZW50OiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIGl0ZW1NYXA6IG5ldyBNYXAoKVxuICAgIH0pO1xuICAgIGNvbnN0IENvbGxlY3Rpb25Qcm92aWRlciA9IChwcm9wcyk9PntcbiAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgcmVmID0gJDZ2WWhVJHJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAgICAgY29uc3QgaXRlbU1hcCA9ICQ2dlloVSRyZWFjdC51c2VSZWYobmV3IE1hcCgpKS5jdXJyZW50O1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuY3JlYXRlRWxlbWVudChDb2xsZWN0aW9uUHJvdmlkZXJJbXBsLCB7XG4gICAgICAgICAgICBzY29wZTogc2NvcGUsXG4gICAgICAgICAgICBpdGVtTWFwOiBpdGVtTWFwLFxuICAgICAgICAgICAgY29sbGVjdGlvblJlZjogcmVmXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9O1xuICAgIC8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbihDb2xsZWN0aW9uUHJvdmlkZXIsIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IFBST1ZJREVSX05BTUVcbiAgICB9KTtcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBDb2xsZWN0aW9uU2xvdFxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBDT0xMRUNUSU9OX1NMT1RfTkFNRSA9IG5hbWUgKyAnQ29sbGVjdGlvblNsb3QnO1xuICAgIGNvbnN0IENvbGxlY3Rpb25TbG90ID0gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHVzZUNvbGxlY3Rpb25Db250ZXh0KENPTExFQ1RJT05fU0xPVF9OQU1FLCBzY29wZSk7XG4gICAgICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2dlloVSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZXh0LmNvbGxlY3Rpb25SZWYpO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuY3JlYXRlRWxlbWVudCgkNnZZaFUkU2xvdCwge1xuICAgICAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH0pO1xuICAgIC8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbihDb2xsZWN0aW9uU2xvdCwge1xuICAgICAgICBkaXNwbGF5TmFtZTogQ09MTEVDVElPTl9TTE9UX05BTUVcbiAgICB9KTtcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBDb2xsZWN0aW9uSXRlbVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBJVEVNX1NMT1RfTkFNRSA9IG5hbWUgKyAnQ29sbGVjdGlvbkl0ZW1TbG90JztcbiAgICBjb25zdCBJVEVNX0RBVEFfQVRUUiA9ICdkYXRhLXJhZGl4LWNvbGxlY3Rpb24taXRlbSc7XG4gICAgY29uc3QgQ29sbGVjdGlvbkl0ZW1TbG90ID0gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5pdGVtRGF0YSB9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IHJlZiA9ICQ2dlloVSRyZWFjdC51c2VSZWYobnVsbCk7XG4gICAgICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2dlloVSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdXNlQ29sbGVjdGlvbkNvbnRleHQoSVRFTV9TTE9UX05BTUUsIHNjb3BlKTtcbiAgICAgICAgJDZ2WWhVJHJlYWN0LnVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAgICAgY29udGV4dC5pdGVtTWFwLnNldChyZWYsIHtcbiAgICAgICAgICAgICAgICByZWY6IHJlZixcbiAgICAgICAgICAgICAgICAuLi5pdGVtRGF0YVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PnZvaWQgY29udGV4dC5pdGVtTWFwLmRlbGV0ZShyZWYpXG4gICAgICAgICAgICA7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuY3JlYXRlRWxlbWVudCgkNnZZaFUkU2xvdCwge1xuICAgICAgICAgICAgW0lURU1fREFUQV9BVFRSXTogJycsXG4gICAgICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgICAgICB9LCBjaGlsZHJlbik7XG4gICAgfSk7XG4gICAgLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKENvbGxlY3Rpb25JdGVtU2xvdCwge1xuICAgICAgICBkaXNwbGF5TmFtZTogSVRFTV9TTE9UX05BTUVcbiAgICB9KTtcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiB1c2VDb2xsZWN0aW9uXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uIHVzZUNvbGxlY3Rpb24oc2NvcGUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHVzZUNvbGxlY3Rpb25Db250ZXh0KG5hbWUgKyAnQ29sbGVjdGlvbkNvbnN1bWVyJywgc2NvcGUpO1xuICAgICAgICBjb25zdCBnZXRJdGVtcyA9ICQ2dlloVSRyZWFjdC51c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbk5vZGUgPSBjb250ZXh0LmNvbGxlY3Rpb25SZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmICghY29sbGVjdGlvbk5vZGUpIHJldHVybiBbXTtcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyZWROb2RlcyA9IEFycmF5LmZyb20oY29sbGVjdGlvbk5vZGUucXVlcnlTZWxlY3RvckFsbChgWyR7SVRFTV9EQVRBX0FUVFJ9XWApKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuZnJvbShjb250ZXh0Lml0ZW1NYXAudmFsdWVzKCkpO1xuICAgICAgICAgICAgY29uc3Qgb3JkZXJlZEl0ZW1zID0gaXRlbXMuc29ydCgoYSwgYik9Pm9yZGVyZWROb2Rlcy5pbmRleE9mKGEucmVmLmN1cnJlbnQpIC0gb3JkZXJlZE5vZGVzLmluZGV4T2YoYi5yZWYuY3VycmVudClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gb3JkZXJlZEl0ZW1zO1xuICAgICAgICB9LCBbXG4gICAgICAgICAgICBjb250ZXh0LmNvbGxlY3Rpb25SZWYsXG4gICAgICAgICAgICBjb250ZXh0Lml0ZW1NYXBcbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiBnZXRJdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgUHJvdmlkZXI6IENvbGxlY3Rpb25Qcm92aWRlcixcbiAgICAgICAgICAgIFNsb3Q6IENvbGxlY3Rpb25TbG90LFxuICAgICAgICAgICAgSXRlbVNsb3Q6IENvbGxlY3Rpb25JdGVtU2xvdFxuICAgICAgICB9LFxuICAgICAgICB1c2VDb2xsZWN0aW9uLFxuICAgICAgICBjcmVhdGVDb2xsZWN0aW9uU2NvcGVcbiAgICBdO1xufVxuXG5cblxuXG5leHBvcnQgeyRlMDJhN2Q5Y2IxZGMxMjhjJGV4cG9ydCRjNzQxMjVhOGUzYWY2YmIyIGFzIGNyZWF0ZUNvbGxlY3Rpb259O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHtjcmVhdGVDb250ZXh0IGFzICQ3R2pjZCRjcmVhdGVDb250ZXh0LCBjcmVhdGVFbGVtZW50IGFzICQ3R2pjZCRjcmVhdGVFbGVtZW50LCB1c2VDb250ZXh0IGFzICQ3R2pjZCR1c2VDb250ZXh0fSBmcm9tIFwicmVhY3RcIjtcblxuXG5jb25zdCAkZjYzMTY2M2RiMzI5NGFjZSR2YXIkRGlyZWN0aW9uQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJDdHamNkJGNyZWF0ZUNvbnRleHQodW5kZWZpbmVkKTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpcmVjdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYzc2MGMwOWZkZDU1ODM1MSA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IGRpcjogZGlyICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDdHamNkJGNyZWF0ZUVsZW1lbnQoJGY2MzE2NjNkYjMyOTRhY2UkdmFyJERpcmVjdGlvbkNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IGRpclxuICAgIH0sIGNoaWxkcmVuKTtcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRiMzkxMjZkNTFkOTRlNmYzKGxvY2FsRGlyKSB7XG4gICAgY29uc3QgZ2xvYmFsRGlyID0gJDdHamNkJHVzZUNvbnRleHQoJGY2MzE2NjNkYjMyOTRhY2UkdmFyJERpcmVjdGlvbkNvbnRleHQpO1xuICAgIHJldHVybiBsb2NhbERpciB8fCBnbG9iYWxEaXIgfHwgJ2x0cic7XG59XG5jb25zdCAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkMjg4MTQ5OWUzN2I3NWI5YSA9ICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRjNzYwYzA5ZmRkNTU4MzUxO1xuXG5cblxuXG5leHBvcnQgeyRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRiMzkxMjZkNTFkOTRlNmYzIGFzIHVzZURpcmVjdGlvbiwgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgYXMgUHJvdmlkZXIsICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRjNzYwYzA5ZmRkNTU4MzUxIGFzIERpcmVjdGlvblByb3ZpZGVyfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkOThJeWUkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkOThJeWUkY3JlYXRlRWxlbWVudCwgdXNlUmVmIGFzICQ5OEl5ZSR1c2VSZWYsIHVzZVN0YXRlIGFzICQ5OEl5ZSR1c2VTdGF0ZSwgdXNlRWZmZWN0IGFzICQ5OEl5ZSR1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIGFzICQ5OEl5ZSR1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7Y3JlYXRlQ29sbGVjdGlvbiBhcyAkOThJeWUkY3JlYXRlQ29sbGVjdGlvbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb2xsZWN0aW9uXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkOThJeWUkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJDk4SXllJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge3VzZUlkIGFzICQ5OEl5ZSR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDk4SXllJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJDk4SXllJHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDk4SXllJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7dXNlRGlyZWN0aW9uIGFzICQ5OEl5ZSR1c2VEaXJlY3Rpb259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlyZWN0aW9uXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMgPSAncm92aW5nRm9jdXNHcm91cC5vbkVudHJ5Rm9jdXMnO1xuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVWRU5UX09QVElPTlMgPSB7XG4gICAgYnViYmxlczogZmFsc2UsXG4gICAgY2FuY2VsYWJsZTogdHJ1ZVxufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFJvdmluZ0ZvY3VzR3JvdXBcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEdST1VQX05BTUUgPSAnUm92aW5nRm9jdXNHcm91cCc7XG5jb25zdCBbJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24sICRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VDb2xsZWN0aW9uLCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlXSA9ICQ5OEl5ZSRjcmVhdGVDb2xsZWN0aW9uKCRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FKTtcbmNvbnN0IFskZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlUm92aW5nRm9jdXNHcm91cENvbnRleHQsICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRjNzEwOTQ4OTU1MWE0ZjRdID0gJDk4SXllJGNyZWF0ZUNvbnRleHRTY29wZSgkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRSwgW1xuICAgICRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVDb2xsZWN0aW9uU2NvcGVcbl0pO1xuY29uc3QgWyRkN2JkZmI5ZWIwZmRmMzExJHZhciRSb3ZpbmdGb2N1c1Byb3ZpZGVyLCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlUm92aW5nRm9jdXNDb250ZXh0XSA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRSk7XG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzOCA9IC8qI19fUFVSRV9fKi8gJDk4SXllJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24uUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IHByb3BzLl9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwXG4gICAgfSwgLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkQ29sbGVjdGlvbi5TbG90LCB7XG4gICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlUm92aW5nRm9jdXNHcm91cFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzR3JvdXBJbXBsLCAkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzOCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRSb3ZpbmdGb2N1c0dyb3VwSW1wbCA9IC8qI19fUFVSRV9fKi8gJDk4SXllJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUm92aW5nRm9jdXNHcm91cDogX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAgLCBvcmllbnRhdGlvbjogb3JpZW50YXRpb24gLCBsb29wOiBsb29wID0gZmFsc2UgLCBkaXI6IGRpciAsIGN1cnJlbnRUYWJTdG9wSWQ6IGN1cnJlbnRUYWJTdG9wSWRQcm9wICwgZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQ6IGRlZmF1bHRDdXJyZW50VGFiU3RvcElkICwgb25DdXJyZW50VGFiU3RvcElkQ2hhbmdlOiBvbkN1cnJlbnRUYWJTdG9wSWRDaGFuZ2UgLCBvbkVudHJ5Rm9jdXM6IG9uRW50cnlGb2N1cyAsIC4uLmdyb3VwUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHJlZiA9ICQ5OEl5ZSR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDk4SXllJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gJDk4SXllJHVzZURpcmVjdGlvbihkaXIpO1xuICAgIGNvbnN0IFtjdXJyZW50VGFiU3RvcElkID0gbnVsbCwgc2V0Q3VycmVudFRhYlN0b3BJZF0gPSAkOThJeWUkdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBjdXJyZW50VGFiU3RvcElkUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRDdXJyZW50VGFiU3RvcElkLFxuICAgICAgICBvbkNoYW5nZTogb25DdXJyZW50VGFiU3RvcElkQ2hhbmdlXG4gICAgfSk7XG4gICAgY29uc3QgW2lzVGFiYmluZ0JhY2tPdXQsIHNldElzVGFiYmluZ0JhY2tPdXRdID0gJDk4SXllJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBoYW5kbGVFbnRyeUZvY3VzID0gJDk4SXllJHVzZUNhbGxiYWNrUmVmKG9uRW50cnlGb2N1cyk7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlUm92aW5nRm9jdXNHcm91cCk7XG4gICAgY29uc3QgaXNDbGlja0ZvY3VzUmVmID0gJDk4SXllJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgW2ZvY3VzYWJsZUl0ZW1zQ291bnQsIHNldEZvY3VzYWJsZUl0ZW1zQ291bnRdID0gJDk4SXllJHVzZVN0YXRlKDApO1xuICAgICQ5OEl5ZSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgbm9kZSA9IHJlZi5jdXJyZW50O1xuICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCRkN2JkZmI5ZWIwZmRmMzExJHZhciRFTlRSWV9GT0NVUywgaGFuZGxlRW50cnlGb2N1cyk7XG4gICAgICAgICAgICByZXR1cm4gKCk9Pm5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMsIGhhbmRsZUVudHJ5Rm9jdXMpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZUVudHJ5Rm9jdXNcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAsXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbixcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIGxvb3A6IGxvb3AsXG4gICAgICAgIGN1cnJlbnRUYWJTdG9wSWQ6IGN1cnJlbnRUYWJTdG9wSWQsXG4gICAgICAgIG9uSXRlbUZvY3VzOiAkOThJeWUkdXNlQ2FsbGJhY2soKHRhYlN0b3BJZCk9PnNldEN1cnJlbnRUYWJTdG9wSWQodGFiU3RvcElkKVxuICAgICAgICAsIFtcbiAgICAgICAgICAgIHNldEN1cnJlbnRUYWJTdG9wSWRcbiAgICAgICAgXSksXG4gICAgICAgIG9uSXRlbVNoaWZ0VGFiOiAkOThJeWUkdXNlQ2FsbGJhY2soKCk9PnNldElzVGFiYmluZ0JhY2tPdXQodHJ1ZSlcbiAgICAgICAgLCBbXSksXG4gICAgICAgIG9uRm9jdXNhYmxlSXRlbUFkZDogJDk4SXllJHVzZUNhbGxiYWNrKCgpPT5zZXRGb2N1c2FibGVJdGVtc0NvdW50KChwcmV2Q291bnQpPT5wcmV2Q291bnQgKyAxXG4gICAgICAgICAgICApXG4gICAgICAgICwgW10pLFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1SZW1vdmU6ICQ5OEl5ZSR1c2VDYWxsYmFjaygoKT0+c2V0Rm9jdXNhYmxlSXRlbXNDb3VudCgocHJldkNvdW50KT0+cHJldkNvdW50IC0gMVxuICAgICAgICAgICAgKVxuICAgICAgICAsIFtdKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJDk4SXllJFByaW1pdGl2ZS5kaXYsICQ5OEl5ZSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHRhYkluZGV4OiBpc1RhYmJpbmdCYWNrT3V0IHx8IGZvY3VzYWJsZUl0ZW1zQ291bnQgPT09IDAgPyAtMSA6IDAsXG4gICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBvcmllbnRhdGlvblxuICAgIH0sIGdyb3VwUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvbk1vdXNlRG93bjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uTW91c2VEb3duLCAoKT0+e1xuICAgICAgICAgICAgaXNDbGlja0ZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Gb2N1czogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXMsIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIFdlIG5vcm1hbGx5IHdvdWxkbid0IG5lZWQgdGhpcyBjaGVjaywgYmVjYXVzZSB3ZSBhbHJlYWR5IGNoZWNrXG4gICAgICAgICAgICAvLyB0aGF0IHRoZSBmb2N1cyBpcyBvbiB0aGUgY3VycmVudCB0YXJnZXQgYW5kIG5vdCBidWJibGluZyB0byBpdC5cbiAgICAgICAgICAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSBTYWZhcmkgZG9lc24ndCBmb2N1cyBidXR0b25zIHdoZW4gY2xpY2tlZCwgYW5kXG4gICAgICAgICAgICAvLyBpbnN0ZWFkLCB0aGUgd3JhcHBlciB3aWxsIGdldCBmb2N1c2VkIGFuZCBub3QgdGhyb3VnaCBhIGJ1YmJsaW5nIGV2ZW50LlxuICAgICAgICAgICAgY29uc3QgaXNLZXlib2FyZEZvY3VzID0gIWlzQ2xpY2tGb2N1c1JlZi5jdXJyZW50O1xuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiBpc0tleWJvYXJkRm9jdXMgJiYgIWlzVGFiYmluZ0JhY2tPdXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeUZvY3VzRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVOVFJZX0ZPQ1VTLCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkRVZFTlRfT1BUSU9OUyk7XG4gICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5kaXNwYXRjaEV2ZW50KGVudHJ5Rm9jdXNFdmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKCFlbnRyeUZvY3VzRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKT0+aXRlbS5mb2N1c2FibGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLmFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLmlkID09PSBjdXJyZW50VGFiU3RvcElkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZUl0ZW1zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgXS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZU5vZGVzID0gY2FuZGlkYXRlSXRlbXMubWFwKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZm9jdXNGaXJzdChjYW5kaWRhdGVOb2Rlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNDbGlja0ZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uQmx1cjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQmx1ciwgKCk9PnNldElzVGFiYmluZ0JhY2tPdXQoZmFsc2UpXG4gICAgICAgIClcbiAgICB9KSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBSb3ZpbmdGb2N1c0dyb3VwSXRlbVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkSVRFTV9OQU1FID0gJ1JvdmluZ0ZvY3VzR3JvdXBJdGVtJztcbmNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRhYjlkZjdjNTNmZTg0NTQgPSAvKiNfX1BVUkVfXyovICQ5OEl5ZSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVJvdmluZ0ZvY3VzR3JvdXA6IF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwICwgZm9jdXNhYmxlOiBmb2N1c2FibGUgPSB0cnVlICwgYWN0aXZlOiBhY3RpdmUgPSBmYWxzZSAsIHRhYlN0b3BJZDogdGFiU3RvcElkICwgLi4uaXRlbVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBhdXRvSWQgPSAkOThJeWUkdXNlSWQoKTtcbiAgICBjb25zdCBpZCA9IHRhYlN0b3BJZCB8fCBhdXRvSWQ7XG4gICAgY29uc3QgY29udGV4dCA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VSb3ZpbmdGb2N1c0NvbnRleHQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJElURU1fTkFNRSwgX19zY29wZVJvdmluZ0ZvY3VzR3JvdXApO1xuICAgIGNvbnN0IGlzQ3VycmVudFRhYlN0b3AgPSBjb250ZXh0LmN1cnJlbnRUYWJTdG9wSWQgPT09IGlkO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVJvdmluZ0ZvY3VzR3JvdXApO1xuICAgIGNvbnN0IHsgb25Gb2N1c2FibGVJdGVtQWRkOiBvbkZvY3VzYWJsZUl0ZW1BZGQgLCBvbkZvY3VzYWJsZUl0ZW1SZW1vdmU6IG9uRm9jdXNhYmxlSXRlbVJlbW92ZSAgfSA9IGNvbnRleHQ7XG4gICAgJDk4SXllJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICBvbkZvY3VzYWJsZUl0ZW1BZGQoKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+b25Gb2N1c2FibGVJdGVtUmVtb3ZlKClcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgZm9jdXNhYmxlLFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1BZGQsXG4gICAgICAgIG9uRm9jdXNhYmxlSXRlbVJlbW92ZVxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRDb2xsZWN0aW9uLkl0ZW1TbG90LCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUm92aW5nRm9jdXNHcm91cCxcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBmb2N1c2FibGU6IGZvY3VzYWJsZSxcbiAgICAgICAgYWN0aXZlOiBhY3RpdmVcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCQ5OEl5ZSRQcmltaXRpdmUuc3BhbiwgJDk4SXllJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdGFiSW5kZXg6IGlzQ3VycmVudFRhYlN0b3AgPyAwIDogLTEsXG4gICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBjb250ZXh0Lm9yaWVudGF0aW9uXG4gICAgfSwgaXRlbVByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBvbk1vdXNlRG93bjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uTW91c2VEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBXZSBwcmV2ZW50IGZvY3VzaW5nIG5vbi1mb2N1c2FibGUgaXRlbXMgb24gYG1vdXNlZG93bmAuXG4gICAgICAgICAgICAvLyBFdmVuIHRob3VnaCB0aGUgaXRlbSBoYXMgdGFiSW5kZXg9ey0xfSwgdGhhdCBvbmx5IG1lYW5zIHRha2UgaXQgb3V0IG9mIHRoZSB0YWIgb3JkZXIuXG4gICAgICAgICAgICBpZiAoIWZvY3VzYWJsZSkgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gU2FmYXJpIGRvZXNuJ3QgZm9jdXMgYSBidXR0b24gd2hlbiBjbGlja2VkIHNvIHdlIHJ1biBvdXIgbG9naWMgb24gbW91c2Vkb3duIGFsc29cbiAgICAgICAgICAgIGVsc2UgY29udGV4dC5vbkl0ZW1Gb2N1cyhpZCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkOThJeWUkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCk9PmNvbnRleHQub25JdGVtRm9jdXMoaWQpXG4gICAgICAgICksXG4gICAgICAgIG9uS2V5RG93bjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uSXRlbVNoaWZ0VGFiKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCkgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgZm9jdXNJbnRlbnQgPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0Rm9jdXNJbnRlbnQoZXZlbnQsIGNvbnRleHQub3JpZW50YXRpb24sIGNvbnRleHQuZGlyKTtcbiAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKT0+aXRlbS5mb2N1c2FibGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxldCBjYW5kaWRhdGVOb2RlcyA9IGl0ZW1zLm1hcCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCA9PT0gJ2xhc3QnKSBjYW5kaWRhdGVOb2Rlcy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9jdXNJbnRlbnQgPT09ICdwcmV2JyB8fCBmb2N1c0ludGVudCA9PT0gJ25leHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCA9PT0gJ3ByZXYnKSBjYW5kaWRhdGVOb2Rlcy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGNhbmRpZGF0ZU5vZGVzLmluZGV4T2YoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVzID0gY29udGV4dC5sb29wID8gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHdyYXBBcnJheShjYW5kaWRhdGVOb2RlcywgY3VycmVudEluZGV4ICsgMSkgOiBjYW5kaWRhdGVOb2Rlcy5zbGljZShjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGVyYXRpdmUgZm9jdXMgZHVyaW5nIGtleWRvd24gaXMgcmlza3kgc28gd2UgcHJldmVudCBSZWFjdCdzIGJhdGNoaW5nIHVwZGF0ZXNcbiAgICAgICAgICogdG8gYXZvaWQgcG90ZW50aWFsIGJ1Z3MuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8yMDMzMlxuICAgICAgICAgKi8gc2V0VGltZW91dCgoKT0+JGQ3YmRmYjllYjBmZGYzMTEkdmFyJGZvY3VzRmlyc3QoY2FuZGlkYXRlTm9kZXMpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkSVRFTV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gLy8gcHJldHRpZXItaWdub3JlXG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkTUFQX0tFWV9UT19GT0NVU19JTlRFTlQgPSB7XG4gICAgQXJyb3dMZWZ0OiAncHJldicsXG4gICAgQXJyb3dVcDogJ3ByZXYnLFxuICAgIEFycm93UmlnaHQ6ICduZXh0JyxcbiAgICBBcnJvd0Rvd246ICduZXh0JyxcbiAgICBQYWdlVXA6ICdmaXJzdCcsXG4gICAgSG9tZTogJ2ZpcnN0JyxcbiAgICBQYWdlRG93bjogJ2xhc3QnLFxuICAgIEVuZDogJ2xhc3QnXG59O1xuZnVuY3Rpb24gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldERpcmVjdGlvbkF3YXJlS2V5KGtleSwgZGlyKSB7XG4gICAgaWYgKGRpciAhPT0gJ3J0bCcpIHJldHVybiBrZXk7XG4gICAgcmV0dXJuIGtleSA9PT0gJ0Fycm93TGVmdCcgPyAnQXJyb3dSaWdodCcgOiBrZXkgPT09ICdBcnJvd1JpZ2h0JyA/ICdBcnJvd0xlZnQnIDoga2V5O1xufVxuZnVuY3Rpb24gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldEZvY3VzSW50ZW50KGV2ZW50LCBvcmllbnRhdGlvbiwgZGlyKSB7XG4gICAgY29uc3Qga2V5ID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldERpcmVjdGlvbkF3YXJlS2V5KGV2ZW50LmtleSwgZGlyKTtcbiAgICBpZiAob3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYgW1xuICAgICAgICAnQXJyb3dMZWZ0JyxcbiAgICAgICAgJ0Fycm93UmlnaHQnXG4gICAgXS5pbmNsdWRlcyhrZXkpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnICYmIFtcbiAgICAgICAgJ0Fycm93VXAnLFxuICAgICAgICAnQXJyb3dEb3duJ1xuICAgIF0uaW5jbHVkZXMoa2V5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJE1BUF9LRVlfVE9fRk9DVVNfSU5URU5UW2tleV07XG59XG5mdW5jdGlvbiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZm9jdXNGaXJzdChjYW5kaWRhdGVzKSB7XG4gICAgY29uc3QgUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpe1xuICAgICAgICAvLyBpZiBmb2N1cyBpcyBhbHJlYWR5IHdoZXJlIHdlIHdhbnQgdG8gZ28sIHdlIGRvbid0IHdhbnQgdG8ga2VlcCBnb2luZyB0aHJvdWdoIHRoZSBjYW5kaWRhdGVzXG4gICAgICAgIGlmIChjYW5kaWRhdGUgPT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgICAgIGNhbmRpZGF0ZS5mb2N1cygpO1xuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQpIHJldHVybjtcbiAgICB9XG59XG4vKipcbiAqIFdyYXBzIGFuIGFycmF5IGFyb3VuZCBpdHNlbGYgYXQgYSBnaXZlbiBzdGFydCBpbmRleFxuICogRXhhbXBsZTogYHdyYXBBcnJheShbJ2EnLCAnYicsICdjJywgJ2QnXSwgMikgPT09IFsnYycsICdkJywgJ2EnLCAnYiddYFxuICovIGZ1bmN0aW9uICRkN2JkZmI5ZWIwZmRmMzExJHZhciR3cmFwQXJyYXkoYXJyYXksIHN0YXJ0SW5kZXgpIHtcbiAgICByZXR1cm4gYXJyYXkubWFwKChfLCBpbmRleCk9PmFycmF5WyhzdGFydEluZGV4ICsgaW5kZXgpICUgYXJyYXkubGVuZ3RoXVxuICAgICk7XG59XG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCQ4Njk5ZjdjOGFmMTQ4MzM4O1xuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIgPSAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYWI5ZGY3YzUzZmU4NDU0O1xuXG5cblxuXG5leHBvcnQgeyRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRjNzEwOTQ4OTU1MWE0ZjQgYXMgY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlLCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzOCBhcyBSb3ZpbmdGb2N1c0dyb3VwLCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYWI5ZGY3YzUzZmU4NDU0IGFzIFJvdmluZ0ZvY3VzR3JvdXBJdGVtLCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiBhcyBJdGVtfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkOFdvbHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkOFdvbHYkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkOFdvbHYkY3JlYXRlRWxlbWVudCwgdXNlUmVmIGFzICQ4V29sdiR1c2VSZWYsIHVzZUVmZmVjdCBhcyAkOFdvbHYkdXNlRWZmZWN0LCB1c2VTdGF0ZSBhcyAkOFdvbHYkdXNlU3RhdGV9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkOFdvbHYkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkOFdvbHYkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJDhXb2x2JGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkOFdvbHYkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHtjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUgYXMgJDhXb2x2JGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSwgUm9vdCBhcyAkOFdvbHYkUm9vdCwgSXRlbSBhcyAkOFdvbHYkSXRlbX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1yb3ZpbmctZm9jdXNcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDhXb2x2JHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7dXNlRGlyZWN0aW9uIGFzICQ4V29sdiR1c2VEaXJlY3Rpb259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlyZWN0aW9uXCI7XG5pbXBvcnQge3VzZVNpemUgYXMgJDhXb2x2JHVzZVNpemV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLXNpemVcIjtcbmltcG9ydCB7dXNlUHJldmlvdXMgYXMgJDhXb2x2JHVzZVByZXZpb3VzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1wcmV2aW91c1wiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkOFdvbHYkUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBSYWRpb1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkUkFESU9fTkFNRSA9ICdSYWRpbyc7XG5jb25zdCBbJGNlNzdhODk2MWI0MWJlOWUkdmFyJGNyZWF0ZVJhZGlvQ29udGV4dCwgJGNlNzdhODk2MWI0MWJlOWUkZXhwb3J0JDY3ZDIyOTY0NjBmMWIwMDJdID0gJDhXb2x2JGNyZWF0ZUNvbnRleHRTY29wZSgkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkUkFESU9fTkFNRSk7XG5jb25zdCBbJGNlNzdhODk2MWI0MWJlOWUkdmFyJFJhZGlvUHJvdmlkZXIsICRjZTc3YTg5NjFiNDFiZTllJHZhciR1c2VSYWRpb0NvbnRleHRdID0gJGNlNzdhODk2MWI0MWJlOWUkdmFyJGNyZWF0ZVJhZGlvQ29udGV4dCgkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkUkFESU9fTkFNRSk7XG5jb25zdCAkY2U3N2E4OTYxYjQxYmU5ZSRleHBvcnQkZDdiMTJjNDEwN2JlMGQ2MSA9IC8qI19fUFVSRV9fKi8gJDhXb2x2JGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUmFkaW86IF9fc2NvcGVSYWRpbyAsIG5hbWU6IG5hbWUgLCBjaGVja2VkOiBjaGVja2VkID0gZmFsc2UgLCByZXF1aXJlZDogcmVxdWlyZWQgLCBkaXNhYmxlZDogZGlzYWJsZWQgLCB2YWx1ZTogdmFsdWUgPSAnb24nICwgb25DaGVjazogb25DaGVjayAsIC4uLnJhZGlvUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtidXR0b24sIHNldEJ1dHRvbl0gPSAkOFdvbHYkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDhXb2x2JHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0QnV0dG9uKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZiA9ICQ4V29sdiR1c2VSZWYoZmFsc2UpOyAvLyBXZSBzZXQgdGhpcyB0byB0cnVlIGJ5IGRlZmF1bHQgc28gdGhhdCBldmVudHMgYnViYmxlIHRvIGZvcm1zIHdpdGhvdXQgSlMgKFNTUilcbiAgICBjb25zdCBpc0Zvcm1Db250cm9sID0gYnV0dG9uID8gQm9vbGVhbihidXR0b24uY2xvc2VzdCgnZm9ybScpKSA6IHRydWU7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDhXb2x2JGNyZWF0ZUVsZW1lbnQoJGNlNzdhODk2MWI0MWJlOWUkdmFyJFJhZGlvUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVSYWRpbyxcbiAgICAgICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkXG4gICAgfSwgLyojX19QVVJFX18qLyAkOFdvbHYkY3JlYXRlRWxlbWVudCgkOFdvbHYkUHJpbWl0aXZlLmJ1dHRvbiwgJDhXb2x2JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgcm9sZTogXCJyYWRpb1wiLFxuICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiBjaGVja2VkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogJGNlNzdhODk2MWI0MWJlOWUkdmFyJGdldFN0YXRlKGNoZWNrZWQpLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICB9LCByYWRpb1Byb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkNsaWNrOiAkOFdvbHYkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgLy8gcmFkaW9zIGNhbm5vdCBiZSB1bmNoZWNrZWQgc28gd2Ugb25seSBjb21tdW5pY2F0ZSBhIGNoZWNrZWQgc3RhdGVcbiAgICAgICAgICAgIGlmICghY2hlY2tlZCkgb25DaGVjayA9PT0gbnVsbCB8fCBvbkNoZWNrID09PSB2b2lkIDAgfHwgb25DaGVjaygpO1xuICAgICAgICAgICAgaWYgKGlzRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZi5jdXJyZW50ID0gZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTsgLy8gaWYgcmFkaW8gaXMgaW4gYSBmb3JtLCBzdG9wIHByb3BhZ2F0aW9uIGZyb20gdGhlIGJ1dHRvbiBzbyB0aGF0IHdlIG9ubHkgcHJvcGFnYXRlXG4gICAgICAgICAgICAgICAgLy8gb25lIGNsaWNrIGV2ZW50IChmcm9tIHRoZSBpbnB1dCkuIFdlIHByb3BhZ2F0ZSBjaGFuZ2VzIGZyb20gYW4gaW5wdXQgc28gdGhhdCBuYXRpdmVcbiAgICAgICAgICAgICAgICAvLyBmb3JtIHZhbGlkYXRpb24gd29ya3MgYW5kIGZvcm0gZXZlbnRzIHJlZmxlY3QgcmFkaW8gdXBkYXRlcy5cbiAgICAgICAgICAgICAgICBpZiAoIWhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH0pKSwgaXNGb3JtQ29udHJvbCAmJiAvKiNfX1BVUkVfXyovICQ4V29sdiRjcmVhdGVFbGVtZW50KCRjZTc3YTg5NjFiNDFiZTllJHZhciRCdWJibGVJbnB1dCwge1xuICAgICAgICBjb250cm9sOiBidXR0b24sXG4gICAgICAgIGJ1YmJsZXM6ICFoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZi5jdXJyZW50LFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGNoZWNrZWQ6IGNoZWNrZWQsXG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkIC8vIFdlIHRyYW5zZm9ybSBiZWNhdXNlIHRoZSBpbnB1dCBpcyBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYnV0IHdlIGhhdmVcbiAgICAgICAgLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgtMTAwJSknXG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2U3N2E4OTYxYjQxYmU5ZSRleHBvcnQkZDdiMTJjNDEwN2JlMGQ2MSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkUkFESU9fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBSYWRpb0luZGljYXRvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkSU5ESUNBVE9SX05BTUUgPSAnUmFkaW9JbmRpY2F0b3InO1xuY29uc3QgJGNlNzdhODk2MWI0MWJlOWUkZXhwb3J0JGQzNWE5ZmZhOWEwNGY5ZTcgPSAvKiNfX1BVUkVfXyovICQ4V29sdiRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVJhZGlvOiBfX3Njb3BlUmFkaW8gLCBmb3JjZU1vdW50OiBmb3JjZU1vdW50ICwgLi4uaW5kaWNhdG9yUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkdXNlUmFkaW9Db250ZXh0KCRjZTc3YTg5NjFiNDFiZTllJHZhciRJTkRJQ0FUT1JfTkFNRSwgX19zY29wZVJhZGlvKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOFdvbHYkY3JlYXRlRWxlbWVudCgkOFdvbHYkUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBjb250ZXh0LmNoZWNrZWRcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ4V29sdiRjcmVhdGVFbGVtZW50KCQ4V29sdiRQcmltaXRpdmUuc3BhbiwgJDhXb2x2JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICRjZTc3YTg5NjFiNDFiZTllJHZhciRnZXRTdGF0ZShjb250ZXh0LmNoZWNrZWQpLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogY29udGV4dC5kaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkXG4gICAgfSwgaW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNlNzdhODk2MWI0MWJlOWUkZXhwb3J0JGQzNWE5ZmZhOWEwNGY5ZTcsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNlNzdhODk2MWI0MWJlOWUkdmFyJElORElDQVRPUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8gY29uc3QgJGNlNzdhODk2MWI0MWJlOWUkdmFyJEJ1YmJsZUlucHV0ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgY29udHJvbDogY29udHJvbCAsIGNoZWNrZWQ6IGNoZWNrZWQgLCBidWJibGVzOiBidWJibGVzID0gdHJ1ZSAsIC4uLmlucHV0UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHJlZiA9ICQ4V29sdiR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJldkNoZWNrZWQgPSAkOFdvbHYkdXNlUHJldmlvdXMoY2hlY2tlZCk7XG4gICAgY29uc3QgY29udHJvbFNpemUgPSAkOFdvbHYkdXNlU2l6ZShjb250cm9sKTsgLy8gQnViYmxlIGNoZWNrZWQgY2hhbmdlIHRvIHBhcmVudHMgKGUuZyBmb3JtIGNoYW5nZSBldmVudClcbiAgICAkOFdvbHYkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGlucHV0UHJvdG8gPSB3aW5kb3cuSFRNTElucHV0RWxlbWVudC5wcm90b3R5cGU7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGlucHV0UHJvdG8sICdjaGVja2VkJyk7XG4gICAgICAgIGNvbnN0IHNldENoZWNrZWQgPSBkZXNjcmlwdG9yLnNldDtcbiAgICAgICAgaWYgKHByZXZDaGVja2VkICE9PSBjaGVja2VkICYmIHNldENoZWNrZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdjbGljaycsIHtcbiAgICAgICAgICAgICAgICBidWJibGVzOiBidWJibGVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldENoZWNrZWQuY2FsbChpbnB1dCwgY2hlY2tlZCk7XG4gICAgICAgICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcHJldkNoZWNrZWQsXG4gICAgICAgIGNoZWNrZWQsXG4gICAgICAgIGJ1YmJsZXNcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOFdvbHYkY3JlYXRlRWxlbWVudChcImlucHV0XCIsICQ4V29sdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwicmFkaW9cIixcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICBkZWZhdWx0Q2hlY2tlZDogY2hlY2tlZFxuICAgIH0sIGlucHV0UHJvcHMsIHtcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICByZWY6IHJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlLFxuICAgICAgICAgICAgLi4uY29udHJvbFNpemUsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICBtYXJnaW46IDBcbiAgICAgICAgfVxuICAgIH0pKTtcbn07XG5mdW5jdGlvbiAkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkZ2V0U3RhdGUoY2hlY2tlZCkge1xuICAgIHJldHVybiBjaGVja2VkID8gJ2NoZWNrZWQnIDogJ3VuY2hlY2tlZCc7XG59XG5cblxuY29uc3QgJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJEFSUk9XX0tFWVMgPSBbXG4gICAgJ0Fycm93VXAnLFxuICAgICdBcnJvd0Rvd24nLFxuICAgICdBcnJvd0xlZnQnLFxuICAgICdBcnJvd1JpZ2h0J1xuXTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFJhZGlvR3JvdXBcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJFJBRElPX0dST1VQX05BTUUgPSAnUmFkaW9Hcm91cCc7XG5jb25zdCBbJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJGNyZWF0ZVJhZGlvR3JvdXBDb250ZXh0LCAkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkYzU0NzA5M2YxMWI3NmRhMl0gPSAkOFdvbHYkY3JlYXRlQ29udGV4dFNjb3BlKCRmOTlhOGM3ODUwNzE2NWY3JHZhciRSQURJT19HUk9VUF9OQU1FLCBbXG4gICAgJDhXb2x2JGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSxcbiAgICAkY2U3N2E4OTYxYjQxYmU5ZSRleHBvcnQkNjdkMjI5NjQ2MGYxYjAwMlxuXSk7XG5jb25zdCAkZjk5YThjNzg1MDcxNjVmNyR2YXIkdXNlUm92aW5nRm9jdXNHcm91cFNjb3BlID0gJDhXb2x2JGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSgpO1xuY29uc3QgJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJHVzZVJhZGlvU2NvcGUgPSAkY2U3N2E4OTYxYjQxYmU5ZSRleHBvcnQkNjdkMjI5NjQ2MGYxYjAwMigpO1xuY29uc3QgWyRmOTlhOGM3ODUwNzE2NWY3JHZhciRSYWRpb0dyb3VwUHJvdmlkZXIsICRmOTlhOGM3ODUwNzE2NWY3JHZhciR1c2VSYWRpb0dyb3VwQ29udGV4dF0gPSAkZjk5YThjNzg1MDcxNjVmNyR2YXIkY3JlYXRlUmFkaW9Hcm91cENvbnRleHQoJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJFJBRElPX0dST1VQX05BTUUpO1xuY29uc3QgJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JGE5OGYwZGNiNDNhNjhhMjUgPSAvKiNfX1BVUkVfXyovICQ4V29sdiRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVJhZGlvR3JvdXA6IF9fc2NvcGVSYWRpb0dyb3VwICwgbmFtZTogbmFtZSAsIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlICwgdmFsdWU6IHZhbHVlUHJvcCAsIHJlcXVpcmVkOiByZXF1aXJlZCA9IGZhbHNlICwgZGlzYWJsZWQ6IGRpc2FibGVkID0gZmFsc2UgLCBvcmllbnRhdGlvbjogb3JpZW50YXRpb24gLCBkaXI6IGRpciAsIGxvb3A6IGxvb3AgPSB0cnVlICwgb25WYWx1ZUNoYW5nZTogb25WYWx1ZUNoYW5nZSAsIC4uLmdyb3VwUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9ICRmOTlhOGM3ODUwNzE2NWY3JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUoX19zY29wZVJhZGlvR3JvdXApO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9ICQ4V29sdiR1c2VEaXJlY3Rpb24oZGlyKTtcbiAgICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9ICQ4V29sdiR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IHZhbHVlUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgb25DaGFuZ2U6IG9uVmFsdWVDaGFuZ2VcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOFdvbHYkY3JlYXRlRWxlbWVudCgkZjk5YThjNzg1MDcxNjVmNyR2YXIkUmFkaW9Hcm91cFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUmFkaW9Hcm91cCxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgb25WYWx1ZUNoYW5nZTogc2V0VmFsdWVcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ4V29sdiRjcmVhdGVFbGVtZW50KCQ4V29sdiRSb290LCAkOFdvbHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcm92aW5nRm9jdXNHcm91cFNjb3BlLCB7XG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbixcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIGxvb3A6IGxvb3BcbiAgICB9KSwgLyojX19QVVJFX18qLyAkOFdvbHYkY3JlYXRlRWxlbWVudCgkOFdvbHYkUHJpbWl0aXZlLmRpdiwgJDhXb2x2JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJyYWRpb2dyb3VwXCIsXG4gICAgICAgIFwiYXJpYS1yZXF1aXJlZFwiOiByZXF1aXJlZCxcbiAgICAgICAgXCJhcmlhLW9yaWVudGF0aW9uXCI6IG9yaWVudGF0aW9uLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGlyOiBkaXJlY3Rpb25cbiAgICB9LCBncm91cFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkYTk4ZjBkY2I0M2E2OGEyNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkZjk5YThjNzg1MDcxNjVmNyR2YXIkUkFESU9fR1JPVVBfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBSYWRpb0dyb3VwSXRlbVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjk5YThjNzg1MDcxNjVmNyR2YXIkSVRFTV9OQU1FID0gJ1JhZGlvR3JvdXBJdGVtJztcbmNvbnN0ICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCQ5Zjg2NmMxMDBlZjUxOWU0ID0gLyojX19QVVJFX18qLyAkOFdvbHYkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVSYWRpb0dyb3VwOiBfX3Njb3BlUmFkaW9Hcm91cCAsIGRpc2FibGVkOiBkaXNhYmxlZCAsIC4uLml0ZW1Qcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRmOTlhOGM3ODUwNzE2NWY3JHZhciR1c2VSYWRpb0dyb3VwQ29udGV4dCgkZjk5YThjNzg1MDcxNjVmNyR2YXIkSVRFTV9OQU1FLCBfX3Njb3BlUmFkaW9Hcm91cCk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IGNvbnRleHQuZGlzYWJsZWQgfHwgZGlzYWJsZWQ7XG4gICAgY29uc3Qgcm92aW5nRm9jdXNHcm91cFNjb3BlID0gJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJHVzZVJvdmluZ0ZvY3VzR3JvdXBTY29wZShfX3Njb3BlUmFkaW9Hcm91cCk7XG4gICAgY29uc3QgcmFkaW9TY29wZSA9ICRmOTlhOGM3ODUwNzE2NWY3JHZhciR1c2VSYWRpb1Njb3BlKF9fc2NvcGVSYWRpb0dyb3VwKTtcbiAgICBjb25zdCByZWYgPSAkOFdvbHYkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ4V29sdiR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgIGNvbnN0IGNoZWNrZWQgPSBjb250ZXh0LnZhbHVlID09PSBpdGVtUHJvcHMudmFsdWU7XG4gICAgY29uc3QgaXNBcnJvd0tleVByZXNzZWRSZWYgPSAkOFdvbHYkdXNlUmVmKGZhbHNlKTtcbiAgICAkOFdvbHYkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJEFSUk9XX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSkgaXNBcnJvd0tleVByZXNzZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGhhbmRsZUtleVVwID0gKCk9PmlzQXJyb3dLZXlQcmVzc2VkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICA7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVLZXlVcCk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBoYW5kbGVLZXlVcCk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4V29sdiRjcmVhdGVFbGVtZW50KCQ4V29sdiRJdGVtLCAkOFdvbHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcm92aW5nRm9jdXNHcm91cFNjb3BlLCB7XG4gICAgICAgIGZvY3VzYWJsZTogIWlzRGlzYWJsZWQsXG4gICAgICAgIGFjdGl2ZTogY2hlY2tlZFxuICAgIH0pLCAvKiNfX1BVUkVfXyovICQ4V29sdiRjcmVhdGVFbGVtZW50KCRjZTc3YTg5NjFiNDFiZTllJGV4cG9ydCRkN2IxMmM0MTA3YmUwZDYxLCAkOFdvbHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBkaXNhYmxlZDogaXNEaXNhYmxlZCxcbiAgICAgICAgcmVxdWlyZWQ6IGNvbnRleHQucmVxdWlyZWQsXG4gICAgICAgIGNoZWNrZWQ6IGNoZWNrZWRcbiAgICB9LCByYWRpb1Njb3BlLCBpdGVtUHJvcHMsIHtcbiAgICAgICAgbmFtZTogY29udGV4dC5uYW1lLFxuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25DaGVjazogKCk9PmNvbnRleHQub25WYWx1ZUNoYW5nZShpdGVtUHJvcHMudmFsdWUpXG4gICAgICAgICxcbiAgICAgICAgb25LZXlEb3duOiAkOFdvbHYkY29tcG9zZUV2ZW50SGFuZGxlcnMoKGV2ZW50KT0+e1xuICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIFdBSSBBUklBLCByYWRpbyBncm91cHMgZG9uJ3QgYWN0aXZhdGUgaXRlbXMgb24gZW50ZXIga2V5cHJlc3NcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkOFdvbHYkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uRm9jdXMsICgpPT57XG4gICAgICAgICAgICB2YXIgX3JlZiRjdXJyZW50O1xuICAgICAgICAgICAgLyoqXG4gICAgICAgKiBPdXIgYFJvdmluZ0ZvY3VzR3JvdXBgIHdpbGwgZm9jdXMgdGhlIHJhZGlvIHdoZW4gbmF2aWdhdGluZyB3aXRoIGFycm93IGtleXNcbiAgICAgICAqIGFuZCB3ZSBuZWVkIHRvIFwiY2hlY2tcIiBpdCBpbiB0aGF0IGNhc2UuIFdlIGNsaWNrIGl0IHRvIFwiY2hlY2tcIiBpdCAoaW5zdGVhZFxuICAgICAgICogb2YgdXBkYXRpbmcgYGNvbnRleHQudmFsdWVgKSBzbyB0aGF0IHRoZSByYWRpbyBjaGFuZ2UgZXZlbnQgZmlyZXMuXG4gICAgICAgKi8gaWYgKGlzQXJyb3dLZXlQcmVzc2VkUmVmLmN1cnJlbnQpIChfcmVmJGN1cnJlbnQgPSByZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3JlZiRjdXJyZW50ID09PSB2b2lkIDAgfHwgX3JlZiRjdXJyZW50LmNsaWNrKCk7XG4gICAgICAgIH0pXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCQ5Zjg2NmMxMDBlZjUxOWU0LCB7XG4gICAgZGlzcGxheU5hbWU6ICRmOTlhOGM3ODUwNzE2NWY3JHZhciRJVEVNX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUmFkaW9Hcm91cEluZGljYXRvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjk5YThjNzg1MDcxNjVmNyR2YXIkSU5ESUNBVE9SX05BTUUgPSAnUmFkaW9Hcm91cEluZGljYXRvcic7XG5jb25zdCAkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkNWZiNTRjNjcxYTY1Yzg4ID0gLyojX19QVVJFX18qLyAkOFdvbHYkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVSYWRpb0dyb3VwOiBfX3Njb3BlUmFkaW9Hcm91cCAsIC4uLmluZGljYXRvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCByYWRpb1Njb3BlID0gJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJHVzZVJhZGlvU2NvcGUoX19zY29wZVJhZGlvR3JvdXApO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4V29sdiRjcmVhdGVFbGVtZW50KCRjZTc3YTg5NjFiNDFiZTllJGV4cG9ydCRkMzVhOWZmYTlhMDRmOWU3LCAkOFdvbHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHJhZGlvU2NvcGUsIGluZGljYXRvclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JDVmYjU0YzY3MWE2NWM4OCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZjk5YThjNzg1MDcxNjVmNyR2YXIkSU5ESUNBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLyBjb25zdCAkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCRhOThmMGRjYjQzYTY4YTI1O1xuY29uc3QgJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIgPSAkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkOWY4NjZjMTAwZWY1MTllNDtcbmNvbnN0ICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCRhZGI1ODQ3MzdkNzEyYjcwID0gJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JDVmYjU0YzY3MWE2NWM4ODtcblxuXG5cblxuZXhwb3J0IHskZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkYzU0NzA5M2YxMWI3NmRhMiBhcyBjcmVhdGVSYWRpb0dyb3VwU2NvcGUsICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCRhOThmMGRjYjQzYTY4YTI1IGFzIFJhZGlvR3JvdXAsICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCQ5Zjg2NmMxMDBlZjUxOWU0IGFzIFJhZGlvR3JvdXBJdGVtLCAkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkNWZiNTRjNjcxYTY1Yzg4IGFzIFJhZGlvR3JvdXBJbmRpY2F0b3IsICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyIGFzIEl0ZW0sICRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCRhZGI1ODQ3MzdkNzEyYjcwIGFzIEluZGljYXRvcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLG51bGwsImltcG9ydCAkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkaXJQSWwkZm9yd2FyZFJlZiwgdXNlU3RhdGUgYXMgJGlyUElsJHVzZVN0YXRlLCB1c2VSZWYgYXMgJGlyUElsJHVzZVJlZiwgY3JlYXRlRWxlbWVudCBhcyAkaXJQSWwkY3JlYXRlRWxlbWVudCwgdXNlRWZmZWN0IGFzICRpclBJbCR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjb21wb3NlRXZlbnRIYW5kbGVycyBhcyAkaXJQSWwkY29tcG9zZUV2ZW50SGFuZGxlcnN9IGZyb20gXCJAcmFkaXgtdWkvcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkaXJQSWwkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGlyUElsJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICRpclBJbCR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge3VzZVByZXZpb3VzIGFzICRpclBJbCR1c2VQcmV2aW91c30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtcHJldmlvdXNcIjtcbmltcG9ydCB7dXNlU2l6ZSBhcyAkaXJQSWwkdXNlU2l6ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2Utc2l6ZVwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJGlyUElsJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcblxuXG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU3dpdGNoXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRSA9ICdTd2l0Y2gnO1xuY29uc3QgWyQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRjcmVhdGVTd2l0Y2hDb250ZXh0LCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkY2Y3ZjVmMTdmNjljYmQ0M10gPSAkaXJQSWwkY3JlYXRlQ29udGV4dFNjb3BlKCQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRSk7XG5jb25zdCBbJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFN3aXRjaFByb3ZpZGVyLCAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkdXNlU3dpdGNoQ29udGV4dF0gPSAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkY3JlYXRlU3dpdGNoQ29udGV4dCgkNmJlNDk2NmZkOWJiYzY5OCR2YXIkU1dJVENIX05BTUUpO1xuY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGI1ZDVjZjg5MjdhYjcyNjIgPSAvKiNfX1BVUkVfXyovICRpclBJbCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVN3aXRjaDogX19zY29wZVN3aXRjaCAsIG5hbWU6IG5hbWUgLCBjaGVja2VkOiBjaGVja2VkUHJvcCAsIGRlZmF1bHRDaGVja2VkOiBkZWZhdWx0Q2hlY2tlZCAsIHJlcXVpcmVkOiByZXF1aXJlZCAsIGRpc2FibGVkOiBkaXNhYmxlZCAsIHZhbHVlOiB2YWx1ZSA9ICdvbicgLCBvbkNoZWNrZWRDaGFuZ2U6IG9uQ2hlY2tlZENoYW5nZSAsIC4uLnN3aXRjaFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBbYnV0dG9uLCBzZXRCdXR0b25dID0gJGlyUElsJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRpclBJbCR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldEJ1dHRvbihub2RlKVxuICAgICk7XG4gICAgY29uc3QgaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYgPSAkaXJQSWwkdXNlUmVmKGZhbHNlKTsgLy8gV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBieSBkZWZhdWx0IHNvIHRoYXQgZXZlbnRzIGJ1YmJsZSB0byBmb3JtcyB3aXRob3V0IEpTIChTU1IpXG4gICAgY29uc3QgaXNGb3JtQ29udHJvbCA9IGJ1dHRvbiA/IEJvb2xlYW4oYnV0dG9uLmNsb3Nlc3QoJ2Zvcm0nKSkgOiB0cnVlO1xuICAgIGNvbnN0IFtjaGVja2VkID0gZmFsc2UsIHNldENoZWNrZWRdID0gJGlyUElsJHVzZUNvbnRyb2xsYWJsZVN0YXRlKHtcbiAgICAgICAgcHJvcDogY2hlY2tlZFByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0Q2hlY2tlZCxcbiAgICAgICAgb25DaGFuZ2U6IG9uQ2hlY2tlZENoYW5nZVxuICAgIH0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRpclBJbCRjcmVhdGVFbGVtZW50KCQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTd2l0Y2hQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVN3aXRjaCxcbiAgICAgICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkXG4gICAgfSwgLyojX19QVVJFX18qLyAkaXJQSWwkY3JlYXRlRWxlbWVudCgkaXJQSWwkUHJpbWl0aXZlLmJ1dHRvbiwgJGlyUElsJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgcm9sZTogXCJzd2l0Y2hcIixcbiAgICAgICAgXCJhcmlhLWNoZWNrZWRcIjogY2hlY2tlZCxcbiAgICAgICAgXCJhcmlhLXJlcXVpcmVkXCI6IHJlcXVpcmVkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDZiZTQ5NjZmZDliYmM2OTgkdmFyJGdldFN0YXRlKGNoZWNrZWQpLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICB9LCBzd2l0Y2hQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25DbGljazogJGlyUElsJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQ2xpY2ssIChldmVudCk9PntcbiAgICAgICAgICAgIHNldENoZWNrZWQoKHByZXZDaGVja2VkKT0+IXByZXZDaGVja2VkXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGlzRm9ybUNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZi5jdXJyZW50ID0gZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTsgLy8gaWYgc3dpdGNoIGlzIGluIGEgZm9ybSwgc3RvcCBwcm9wYWdhdGlvbiBmcm9tIHRoZSBidXR0b24gc28gdGhhdCB3ZSBvbmx5IHByb3BhZ2F0ZVxuICAgICAgICAgICAgICAgIC8vIG9uZSBjbGljayBldmVudCAoZnJvbSB0aGUgaW5wdXQpLiBXZSBwcm9wYWdhdGUgY2hhbmdlcyBmcm9tIGFuIGlucHV0IHNvIHRoYXQgbmF0aXZlXG4gICAgICAgICAgICAgICAgLy8gZm9ybSB2YWxpZGF0aW9uIHdvcmtzIGFuZCBmb3JtIGV2ZW50cyByZWZsZWN0IHN3aXRjaCB1cGRhdGVzLlxuICAgICAgICAgICAgICAgIGlmICghaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYuY3VycmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpLCBpc0Zvcm1Db250cm9sICYmIC8qI19fUFVSRV9fKi8gJGlyUElsJGNyZWF0ZUVsZW1lbnQoJDZiZTQ5NjZmZDliYmM2OTgkdmFyJEJ1YmJsZUlucHV0LCB7XG4gICAgICAgIGNvbnRyb2w6IGJ1dHRvbixcbiAgICAgICAgYnViYmxlczogIWhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQsXG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgY2hlY2tlZDogY2hlY2tlZCxcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQgLy8gV2UgdHJhbnNmb3JtIGJlY2F1c2UgdGhlIGlucHV0IGlzIGFic29sdXRlbHkgcG9zaXRpb25lZCBidXQgd2UgaGF2ZVxuICAgICAgICAsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0xMDAlKSdcbiAgICAgICAgfVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiNWQ1Y2Y4OTI3YWI3MjYyLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTd2l0Y2hUaHVtYlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkVEhVTUJfTkFNRSA9ICdTd2l0Y2hUaHVtYic7XG5jb25zdCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNGQwN2JmNjUzZWE2OTEwNiA9IC8qI19fUFVSRV9fKi8gJGlyUElsJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU3dpdGNoOiBfX3Njb3BlU3dpdGNoICwgLi4udGh1bWJQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciR1c2VTd2l0Y2hDb250ZXh0KCQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRUSFVNQl9OQU1FLCBfX3Njb3BlU3dpdGNoKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkaXJQSWwkY3JlYXRlRWxlbWVudCgkaXJQSWwkUHJpbWl0aXZlLnNwYW4sICRpclBJbCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkZ2V0U3RhdGUoY29udGV4dC5jaGVja2VkKSxcbiAgICAgICAgXCJkYXRhLWRpc2FibGVkXCI6IGNvbnRleHQuZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZFxuICAgIH0sIHRodW1iUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNGQwN2JmNjUzZWE2OTEwNiwge1xuICAgIGRpc3BsYXlOYW1lOiAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkVEhVTUJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRCdWJibGVJbnB1dCA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IGNvbnRyb2w6IGNvbnRyb2wgLCBjaGVja2VkOiBjaGVja2VkICwgYnViYmxlczogYnViYmxlcyA9IHRydWUgLCAuLi5pbnB1dFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCByZWYgPSAkaXJQSWwkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHByZXZDaGVja2VkID0gJGlyUElsJHVzZVByZXZpb3VzKGNoZWNrZWQpO1xuICAgIGNvbnN0IGNvbnRyb2xTaXplID0gJGlyUElsJHVzZVNpemUoY29udHJvbCk7IC8vIEJ1YmJsZSBjaGVja2VkIGNoYW5nZSB0byBwYXJlbnRzIChlLmcgZm9ybSBjaGFuZ2UgZXZlbnQpXG4gICAgJGlyUElsJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBpbnB1dCA9IHJlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCBpbnB1dFByb3RvID0gd2luZG93LkhUTUxJbnB1dEVsZW1lbnQucHJvdG90eXBlO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpbnB1dFByb3RvLCAnY2hlY2tlZCcpO1xuICAgICAgICBjb25zdCBzZXRDaGVja2VkID0gZGVzY3JpcHRvci5zZXQ7XG4gICAgICAgIGlmIChwcmV2Q2hlY2tlZCAhPT0gY2hlY2tlZCAmJiBzZXRDaGVja2VkKSB7XG4gICAgICAgICAgICBjb25zdCBldmVudCA9IG5ldyBFdmVudCgnY2xpY2snLCB7XG4gICAgICAgICAgICAgICAgYnViYmxlczogYnViYmxlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZXRDaGVja2VkLmNhbGwoaW5wdXQsIGNoZWNrZWQpO1xuICAgICAgICAgICAgaW5wdXQuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHByZXZDaGVja2VkLFxuICAgICAgICBjaGVja2VkLFxuICAgICAgICBidWJibGVzXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGlyUElsJGNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCAkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICAgICAgZGVmYXVsdENoZWNrZWQ6IGNoZWNrZWRcbiAgICB9LCBpbnB1dFByb3BzLCB7XG4gICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgcmVmOiByZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIC4uLmNvbnRyb2xTaXplLFxuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgbWFyZ2luOiAwXG4gICAgICAgIH1cbiAgICB9KSk7XG59O1xuZnVuY3Rpb24gJDZiZTQ5NjZmZDliYmM2OTgkdmFyJGdldFN0YXRlKGNoZWNrZWQpIHtcbiAgICByZXR1cm4gY2hlY2tlZCA/ICdjaGVja2VkJyA6ICd1bmNoZWNrZWQnO1xufVxuY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2MjtcbmNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ2NTIxNDMzZWQxNWEzNGRiID0gJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDRkMDdiZjY1M2VhNjkxMDY7XG5cblxuXG5cbmV4cG9ydCB7JDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGNmN2Y1ZjE3ZjY5Y2JkNDMgYXMgY3JlYXRlU3dpdGNoU2NvcGUsICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiNWQ1Y2Y4OTI3YWI3MjYyIGFzIFN3aXRjaCwgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDRkMDdiZjY1M2VhNjkxMDYgYXMgU3dpdGNoVGh1bWIsICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ2NTIxNDMzZWQxNWEzNGRiIGFzIFRodW1ifTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsbnVsbCwiaW1wb3J0ICRrVndudyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICRrVndudyRmb3J3YXJkUmVmLCBjcmVhdGVFbGVtZW50IGFzICRrVndudyRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICRrVndudyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFZpc3VhbGx5SGlkZGVuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJHZhciROQU1FID0gJ1Zpc3VhbGx5SGlkZGVuJztcbmNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0ID0gLyojX19QVVJFX18qLyAka1Z3bnckZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAka1Z3bnckY3JlYXRlRWxlbWVudCgka1Z3bnckUHJpbWl0aXZlLnNwYW4sICRrVndudyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9zY3NzL21peGlucy9fc2NyZWVuLXJlYWRlci5zY3NzXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICBjbGlwOiAncmVjdCgwLCAwLCAwLCAwKScsXG4gICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgICAgIHdvcmRXcmFwOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZWExZWY1OTRjZjU3MGQ4MyRleHBvcnQkNDM5ZDI5YTRlMTEwYTE2NCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZWExZWY1OTRjZjU3MGQ4MyR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JDQzOWQyOWE0ZTExMGExNjQ7XG5cblxuXG5cbmV4cG9ydCB7JGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JDQzOWQyOWE0ZTExMGExNjQgYXMgVmlzdWFsbHlIaWRkZW4sICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHt1c2VTdGF0ZSBhcyAkOHdlcEskdXNlU3RhdGUsIHVzZVJlZiBhcyAkOHdlcEskdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDh3ZXBLJHVzZUVmZmVjdCwgY3JlYXRlRWxlbWVudCBhcyAkOHdlcEskY3JlYXRlRWxlbWVudCwgdXNlQ2FsbGJhY2sgYXMgJDh3ZXBLJHVzZUNhbGxiYWNrLCB1c2VNZW1vIGFzICQ4d2VwSyR1c2VNZW1vLCBmb3J3YXJkUmVmIGFzICQ4d2VwSyRmb3J3YXJkUmVmfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDh3ZXBLJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHtEaXNtaXNzYWJsZUxheWVyIGFzICQ4d2VwSyREaXNtaXNzYWJsZUxheWVyfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpc21pc3NhYmxlLWxheWVyXCI7XG5pbXBvcnQge3VzZUlkIGFzICQ4d2VwSyR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtjcmVhdGVQb3BwZXJTY29wZSBhcyAkOHdlcEskY3JlYXRlUG9wcGVyU2NvcGUsIFJvb3QgYXMgJDh3ZXBLJFJvb3QsIEFuY2hvciBhcyAkOHdlcEskQW5jaG9yLCBDb250ZW50IGFzICQ4d2VwSyRDb250ZW50LCBBcnJvdyBhcyAkOHdlcEskQXJyb3d9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wcGVyXCI7XG5pbXBvcnQge1BvcnRhbCBhcyAkOHdlcEskUG9ydGFsfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcnRhbFwiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkOHdlcEskUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ4d2VwSyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3R0YWJsZSBhcyAkOHdlcEskU2xvdHRhYmxlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDh3ZXBLJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7Um9vdCBhcyAkOHdlcEskUm9vdDF9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQxYzU0MGEyMjI0ZjBkODY1XSA9ICQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGUoJ1Rvb2x0aXAnLCBbXG4gICAgJDh3ZXBLJGNyZWF0ZVBvcHBlclNjb3BlXG5dKTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZSA9ICQ4d2VwSyRjcmVhdGVQb3BwZXJTY29wZSgpO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcFByb3ZpZGVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQUk9WSURFUl9OQU1FID0gJ1Rvb2x0aXBQcm92aWRlcic7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkREVGQVVMVF9ERUxBWV9EVVJBVElPTiA9IDcwMDtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4gPSAndG9vbHRpcC5vcGVuJztcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcFByb3ZpZGVyQ29udGV4dF0gPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBST1ZJREVSX05BTUUpO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGY3ODY0OWZiOWNhNTY2YjggPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCBkZWxheUR1cmF0aW9uOiBkZWxheUR1cmF0aW9uID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJERFRkFVTFRfREVMQVlfRFVSQVRJT04gLCBza2lwRGVsYXlEdXJhdGlvbjogc2tpcERlbGF5RHVyYXRpb24gPSAzMDAgLCBkaXNhYmxlSG92ZXJhYmxlQ29udGVudDogZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQgPSBmYWxzZSAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtpc09wZW5EZWxheWVkLCBzZXRJc09wZW5EZWxheWVkXSA9ICQ4d2VwSyR1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBpc1BvaW50ZXJJblRyYW5zaXRSZWYgPSAkOHdlcEskdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBza2lwRGVsYXlUaW1lclJlZiA9ICQ4d2VwSyR1c2VSZWYoMCk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBza2lwRGVsYXlUaW1lciA9IHNraXBEZWxheVRpbWVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIHJldHVybiAoKT0+d2luZG93LmNsZWFyVGltZW91dChza2lwRGVsYXlUaW1lcilcbiAgICAgICAgO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgaXNPcGVuRGVsYXllZDogaXNPcGVuRGVsYXllZCxcbiAgICAgICAgZGVsYXlEdXJhdGlvbjogZGVsYXlEdXJhdGlvbixcbiAgICAgICAgb25PcGVuOiAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc2tpcERlbGF5VGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBzZXRJc09wZW5EZWxheWVkKGZhbHNlKTtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBvbkNsb3NlOiAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc2tpcERlbGF5VGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBza2lwRGVsYXlUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PnNldElzT3BlbkRlbGF5ZWQodHJ1ZSlcbiAgICAgICAgICAgICwgc2tpcERlbGF5RHVyYXRpb24pO1xuICAgICAgICB9LCBbXG4gICAgICAgICAgICBza2lwRGVsYXlEdXJhdGlvblxuICAgICAgICBdKSxcbiAgICAgICAgaXNQb2ludGVySW5UcmFuc2l0UmVmOiBpc1BvaW50ZXJJblRyYW5zaXRSZWYsXG4gICAgICAgIG9uUG9pbnRlckluVHJhbnNpdENoYW5nZTogJDh3ZXBLJHVzZUNhbGxiYWNrKChpblRyYW5zaXQpPT57XG4gICAgICAgICAgICBpc1BvaW50ZXJJblRyYW5zaXRSZWYuY3VycmVudCA9IGluVHJhbnNpdDtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBkaXNhYmxlSG92ZXJhYmxlQ29udGVudDogZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRmNzg2NDlmYjljYTU2NmI4LCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQUk9WSURFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSA9ICdUb29sdGlwJztcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcENvbnRleHRQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0XSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRjcmVhdGVUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FKTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyOGM2NjBjNjNiNzkyZGVhID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gPSBmYWxzZSAsIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCAsIGRlbGF5RHVyYXRpb246IGRlbGF5RHVyYXRpb25Qcm9wICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcHJvdmlkZXJDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBbdHJpZ2dlciwgc2V0VHJpZ2dlcl0gPSAkOHdlcEskdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29udGVudElkID0gJDh3ZXBLJHVzZUlkKCk7XG4gICAgY29uc3Qgb3BlblRpbWVyUmVmID0gJDh3ZXBLJHVzZVJlZigwKTtcbiAgICBjb25zdCBkaXNhYmxlSG92ZXJhYmxlQ29udGVudCA9IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCAhPT0gbnVsbCAmJiBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFByb3AgIT09IHZvaWQgMCA/IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCA6IHByb3ZpZGVyQ29udGV4dC5kaXNhYmxlSG92ZXJhYmxlQ29udGVudDtcbiAgICBjb25zdCBkZWxheUR1cmF0aW9uID0gZGVsYXlEdXJhdGlvblByb3AgIT09IG51bGwgJiYgZGVsYXlEdXJhdGlvblByb3AgIT09IHZvaWQgMCA/IGRlbGF5RHVyYXRpb25Qcm9wIDogcHJvdmlkZXJDb250ZXh0LmRlbGF5RHVyYXRpb247XG4gICAgY29uc3Qgd2FzT3BlbkRlbGF5ZWRSZWYgPSAkOHdlcEskdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBbb3BlbjEgPSBmYWxzZSwgc2V0T3Blbl0gPSAkOHdlcEskdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBvcGVuUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRPcGVuLFxuICAgICAgICBvbkNoYW5nZTogKG9wZW4pPT57XG4gICAgICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgICAgIHByb3ZpZGVyQ29udGV4dC5vbk9wZW4oKTsgLy8gYXMgYG9uQ2hhbmdlYCBpcyBjYWxsZWQgd2l0aGluIGEgbGlmZWN5Y2xlIG1ldGhvZCB3ZVxuICAgICAgICAgICAgICAgIC8vIGF2b2lkIGRpc3BhdGNoaW5nIHZpYSBgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50YC5cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOKSk7XG4gICAgICAgICAgICB9IGVsc2UgcHJvdmlkZXJDb250ZXh0Lm9uQ2xvc2UoKTtcbiAgICAgICAgICAgIG9uT3BlbkNoYW5nZSA9PT0gbnVsbCB8fCBvbk9wZW5DaGFuZ2UgPT09IHZvaWQgMCB8fCBvbk9wZW5DaGFuZ2Uob3Blbik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzdGF0ZUF0dHJpYnV0ZSA9ICQ4d2VwSyR1c2VNZW1vKCgpPT57XG4gICAgICAgIHJldHVybiBvcGVuMSA/IHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPyAnZGVsYXllZC1vcGVuJyA6ICdpbnN0YW50LW9wZW4nIDogJ2Nsb3NlZCc7XG4gICAgfSwgW1xuICAgICAgICBvcGVuMVxuICAgIF0pO1xuICAgIGNvbnN0IGhhbmRsZU9wZW4gPSAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICB9LCBbXG4gICAgICAgIHNldE9wZW5cbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KG9wZW5UaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgfSwgW1xuICAgICAgICBzZXRPcGVuXG4gICAgXSk7XG4gICAgY29uc3QgaGFuZGxlRGVsYXllZE9wZW4gPSAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIG9wZW5UaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICAgICAgfSwgZGVsYXlEdXJhdGlvbik7XG4gICAgfSwgW1xuICAgICAgICBkZWxheUR1cmF0aW9uLFxuICAgICAgICBzZXRPcGVuXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICByZXR1cm4gKCk9PndpbmRvdy5jbGVhclRpbWVvdXQob3BlblRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFJvb3QsIHBvcHBlclNjb3BlLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgY29udGVudElkOiBjb250ZW50SWQsXG4gICAgICAgIG9wZW46IG9wZW4xLFxuICAgICAgICBzdGF0ZUF0dHJpYnV0ZTogc3RhdGVBdHRyaWJ1dGUsXG4gICAgICAgIHRyaWdnZXI6IHRyaWdnZXIsXG4gICAgICAgIG9uVHJpZ2dlckNoYW5nZTogc2V0VHJpZ2dlcixcbiAgICAgICAgb25UcmlnZ2VyRW50ZXI6ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVyQ29udGV4dC5pc09wZW5EZWxheWVkKSBoYW5kbGVEZWxheWVkT3BlbigpO1xuICAgICAgICAgICAgZWxzZSBoYW5kbGVPcGVuKCk7XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIHByb3ZpZGVyQ29udGV4dC5pc09wZW5EZWxheWVkLFxuICAgICAgICAgICAgaGFuZGxlRGVsYXllZE9wZW4sXG4gICAgICAgICAgICBoYW5kbGVPcGVuXG4gICAgICAgIF0pLFxuICAgICAgICBvblRyaWdnZXJMZWF2ZTogJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgICAgICBpZiAoZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQpIGhhbmRsZUNsb3NlKCk7XG4gICAgICAgICAgICBlbHNlIC8vIENsZWFyIHRoZSB0aW1lciBpbiBjYXNlIHRoZSBwb2ludGVyIGxlYXZlcyB0aGUgdHJpZ2dlciBiZWZvcmUgdGhlIHRvb2x0aXAgaXMgb3BlbmVkLlxuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlLFxuICAgICAgICAgICAgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRcbiAgICAgICAgXSksXG4gICAgICAgIG9uT3BlbjogaGFuZGxlT3BlbixcbiAgICAgICAgb25DbG9zZTogaGFuZGxlQ2xvc2UsXG4gICAgICAgIGRpc2FibGVIb3ZlcmFibGVDb250ZW50OiBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFxuICAgIH0sIGNoaWxkcmVuKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyOGM2NjBjNjNiNzkyZGVhLCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcFRyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRSA9ICdUb29sdGlwVHJpZ2dlcic7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCA9IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHByb3ZpZGVyQ29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwUHJvdmlkZXJDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUUklHR0VSX05BTUUsIF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcmVmID0gJDh3ZXBLJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOHdlcEskdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmLCBjb250ZXh0Lm9uVHJpZ2dlckNoYW5nZSk7XG4gICAgY29uc3QgaXNQb2ludGVyRG93blJlZiA9ICQ4d2VwSyR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhc1BvaW50ZXJNb3ZlT3BlbmVkUmVmID0gJDh3ZXBLJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaGFuZGxlUG9pbnRlclVwID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT5pc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICwgW10pO1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBoYW5kbGVQb2ludGVyVXApXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZVBvaW50ZXJVcFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRBbmNob3IsICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCBwb3BwZXJTY29wZSksIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByaW1pdGl2ZS5idXR0b24sICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIC8vIFdlIHB1cnBvc2VmdWxseSBhdm9pZCBhZGRpbmcgYHR5cGU9YnV0dG9uYCBoZXJlIGJlY2F1c2UgdG9vbHRpcCB0cmlnZ2VycyBhcmUgYWxzb1xuICAgICAgICAvLyBjb21tb25seSBhbmNob3JzIGFuZCB0aGUgYW5jaG9yIGB0eXBlYCBhdHRyaWJ1dGUgc2lnbmlmaWVzIE1JTUUgdHlwZS5cbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGNvbnRleHQub3BlbiA/IGNvbnRleHQuY29udGVudElkIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5zdGF0ZUF0dHJpYnV0ZVxuICAgIH0sIHRyaWdnZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25Qb2ludGVyTW92ZTogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlck1vdmUsIChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCFoYXNQb2ludGVyTW92ZU9wZW5lZFJlZi5jdXJyZW50ICYmICFwcm92aWRlckNvbnRleHQuaXNQb2ludGVySW5UcmFuc2l0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uVHJpZ2dlckVudGVyKCk7XG4gICAgICAgICAgICAgICAgaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckxlYXZlLCAoKT0+e1xuICAgICAgICAgICAgY29udGV4dC5vblRyaWdnZXJMZWF2ZSgpO1xuICAgICAgICAgICAgaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyRG93bjogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd24sICgpPT57XG4gICAgICAgICAgICBpc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwLCB7XG4gICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCk9PntcbiAgICAgICAgICAgIGlmICghaXNQb2ludGVyRG93blJlZi5jdXJyZW50KSBjb250ZXh0Lm9uT3BlbigpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25CbHVyOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25CbHVyLCBjb250ZXh0Lm9uQ2xvc2UpLFxuICAgICAgICBvbkNsaWNrOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgY29udGV4dC5vbkNsb3NlKVxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVFJJR0dFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FID0gJ1Rvb2x0aXBQb3J0YWwnO1xuY29uc3QgWyRhMDkzYzdlMWVjMjVhMDU3JHZhciRQb3J0YWxQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHRdID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGNyZWF0ZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRSwge1xuICAgIGZvcmNlTW91bnQ6IHVuZGVmaW5lZFxufSk7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2IzNmI4ZjkyNWFiNzQ5NyA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBjb250YWluZXI6IGNvbnRhaW5lciAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FLCBfX3Njb3BlVG9vbHRpcCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBvcnRhbFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgZm9yY2VNb3VudDogZm9yY2VNb3VudFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskUG9ydGFsLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyXG4gICAgfSwgY2hpbGRyZW4pKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YjM2YjhmOTI1YWI3NDk3LCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FID0gJ1Rvb2x0aXBDb250ZW50JztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRlOTAwM2UyYmUzN2VjMDYwID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBwb3J0YWxDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIHNpZGU6IHNpZGUgPSAndG9wJyAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlVG9vbHRpcCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgY29udGV4dC5kaXNhYmxlSG92ZXJhYmxlQ29udGVudCA/IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgc2lkZTogc2lkZVxuICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSA6IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SG92ZXJhYmxlLCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBzaWRlOiBzaWRlXG4gICAgfSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SG92ZXJhYmxlID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwcm92aWRlckNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcFByb3ZpZGVyQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcmVmID0gJDh3ZXBLJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOHdlcEskdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICBjb25zdCBbcG9pbnRlckdyYWNlQXJlYSwgc2V0UG9pbnRlckdyYWNlQXJlYV0gPSAkOHdlcEskdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgeyB0cmlnZ2VyOiB0cmlnZ2VyICwgb25DbG9zZTogb25DbG9zZSAgfSA9IGNvbnRleHQ7XG4gICAgY29uc3QgY29udGVudCA9IHJlZi5jdXJyZW50O1xuICAgIGNvbnN0IHsgb25Qb2ludGVySW5UcmFuc2l0Q2hhbmdlOiBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2UgIH0gPSBwcm92aWRlckNvbnRleHQ7XG4gICAgY29uc3QgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIHNldFBvaW50ZXJHcmFjZUFyZWEobnVsbCk7XG4gICAgICAgIG9uUG9pbnRlckluVHJhbnNpdENoYW5nZShmYWxzZSk7XG4gICAgfSwgW1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2VcbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVDcmVhdGVHcmFjZUFyZWEgPSAkOHdlcEskdXNlQ2FsbGJhY2soKGV2ZW50LCBob3ZlclRhcmdldCk9PntcbiAgICAgICAgY29uc3QgY3VycmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIGNvbnN0IGV4aXRQb2ludCA9IHtcbiAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV4aXRTaWRlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEV4aXRTaWRlRnJvbVJlY3QoZXhpdFBvaW50LCBjdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICAgICAgY29uc3QgcGFkZGVkRXhpdFBvaW50cyA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQYWRkZWRFeGl0UG9pbnRzKGV4aXRQb2ludCwgZXhpdFNpZGUpO1xuICAgICAgICBjb25zdCBob3ZlclRhcmdldFBvaW50cyA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQb2ludHNGcm9tUmVjdChob3ZlclRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgICAgIGNvbnN0IGdyYWNlQXJlYSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsKFtcbiAgICAgICAgICAgIC4uLnBhZGRlZEV4aXRQb2ludHMsXG4gICAgICAgICAgICAuLi5ob3ZlclRhcmdldFBvaW50c1xuICAgICAgICBdKTtcbiAgICAgICAgc2V0UG9pbnRlckdyYWNlQXJlYShncmFjZUFyZWEpO1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2UodHJ1ZSk7XG4gICAgfSwgW1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2VcbiAgICBdKTtcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHJldHVybiAoKT0+aGFuZGxlUmVtb3ZlR3JhY2VBcmVhKClcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAodHJpZ2dlciAmJiBjb250ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVUcmlnZ2VyTGVhdmUgPSAoZXZlbnQpPT5oYW5kbGVDcmVhdGVHcmFjZUFyZWEoZXZlbnQsIGNvbnRlbnQpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVDb250ZW50TGVhdmUgPSAoZXZlbnQpPT5oYW5kbGVDcmVhdGVHcmFjZUFyZWEoZXZlbnQsIHRyaWdnZXIpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZVRyaWdnZXJMZWF2ZSk7XG4gICAgICAgICAgICBjb250ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZUNvbnRlbnRMZWF2ZSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICB0cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZVRyaWdnZXJMZWF2ZSk7XG4gICAgICAgICAgICAgICAgY29udGVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBoYW5kbGVDb250ZW50TGVhdmUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgaGFuZGxlQ3JlYXRlR3JhY2VBcmVhLFxuICAgICAgICBoYW5kbGVSZW1vdmVHcmFjZUFyZWFcbiAgICBdKTtcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChwb2ludGVyR3JhY2VBcmVhKSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRlclBvc2l0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNFbnRlcmVkVGFyZ2V0ID0gKHRyaWdnZXIgPT09IG51bGwgfHwgdHJpZ2dlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogdHJpZ2dlci5jb250YWlucyh0YXJnZXQpKSB8fCAoY29udGVudCA9PT0gbnVsbCB8fCBjb250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZW50LmNvbnRhaW5zKHRhcmdldCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUG9pbnRlck91dHNpZGVHcmFjZUFyZWEgPSAhJGEwOTNjN2UxZWMyNWEwNTckdmFyJGlzUG9pbnRJblBvbHlnb24ocG9pbnRlclBvc2l0aW9uLCBwb2ludGVyR3JhY2VBcmVhKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRW50ZXJlZFRhcmdldCkgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQb2ludGVyT3V0c2lkZUdyYWNlQXJlYSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVSZW1vdmVHcmFjZUFyZWEoKTtcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIGhhbmRsZVRyYWNrUG9pbnRlckdyYWNlKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSlcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgcG9pbnRlckdyYWNlQXJlYSxcbiAgICAgICAgb25DbG9zZSxcbiAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgIH0pKTtcbn0pO1xuY29uc3QgWyRhMDkzYzdlMWVjMjVhMDU3JHZhciRWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0UHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0XSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRjcmVhdGVUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FLCB7XG4gICAgaXNJbnNpZGU6IGZhbHNlXG59KTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEltcGwgPSAvKiNfX1BVUkVfXyovICQ4d2VwSyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgY2hpbGRyZW46IGNoaWxkcmVuICwgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwgLCBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93biAsIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHsgb25DbG9zZTogb25DbG9zZSAgfSA9IGNvbnRleHQ7IC8vIENsb3NlIHRoaXMgdG9vbHRpcCBpZiBhbm90aGVyIG9uZSBvcGVuc1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOLCBvbkNsb3NlKTtcbiAgICAgICAgcmV0dXJuICgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4sIG9uQ2xvc2UpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG9uQ2xvc2VcbiAgICBdKTsgLy8gQ2xvc2UgdGhlIHRvb2x0aXAgaWYgdGhlIHRyaWdnZXIgaXMgc2Nyb2xsZWRcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZXh0LnRyaWdnZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09IHZvaWQgMCAmJiB0YXJnZXQuY29udGFpbnMoY29udGV4dC50cmlnZ2VyKSkgb25DbG9zZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHtcbiAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwge1xuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGV4dC50cmlnZ2VyLFxuICAgICAgICBvbkNsb3NlXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJERpc21pc3NhYmxlTGF5ZXIsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiBmYWxzZSxcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSxcbiAgICAgICAgb25Gb2N1c091dHNpZGU6IChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgLFxuICAgICAgICBvbkRpc21pc3M6IG9uQ2xvc2VcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRDb250ZW50LCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5zdGF0ZUF0dHJpYnV0ZVxuICAgIH0sIHBvcHBlclNjb3BlLCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5jb250ZW50UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAnLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbic6ICd2YXIoLS1yYWRpeC1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiknLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKScsXG4gICAgICAgICAgICAnLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC10cmlnZ2VyLXdpZHRoJzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3Itd2lkdGgpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXRvb2x0aXAtdHJpZ2dlci1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci1oZWlnaHQpJ1xuICAgICAgICB9XG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFNsb3R0YWJsZSwgbnVsbCwgY2hpbGRyZW4pLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVUb29sdGlwLFxuICAgICAgICBpc0luc2lkZTogdHJ1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFJvb3QxLCB7XG4gICAgICAgIGlkOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgcm9sZTogXCJ0b29sdGlwXCJcbiAgICB9LCBhcmlhTGFiZWwgfHwgY2hpbGRyZW4pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAsIHtcbiAgICBkaXNwbGF5TmFtZTogJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwQXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJEFSUk9XX05BTUUgPSAnVG9vbHRpcEFycm93JztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5ID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCB2aXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJEFSUk9XX05BTUUsIF9fc2NvcGVUb29sdGlwKTsgLy8gaWYgdGhlIGFycm93IGlzIGluc2lkZSB0aGUgYFZpc3VhbGx5SGlkZGVuYCwgd2UgZG9uJ3Qgd2FudCB0byByZW5kZXIgaXQgYWxsIHRvXG4gICAgLy8gcHJldmVudCBpc3N1ZXMgaW4gcG9zaXRpb25pbmcgdGhlIGFycm93IGR1ZSB0byB0aGUgZHVwbGljYXRlXG4gICAgcmV0dXJuIHZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHQuaXNJbnNpZGUgPyBudWxsIDogLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskQXJyb3csICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkYzI3ZWUwYWQ3MTBmNzU1OSwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQVJST1dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0KHBvaW50LCByZWN0KSB7XG4gICAgY29uc3QgdG9wID0gTWF0aC5hYnMocmVjdC50b3AgLSBwb2ludC55KTtcbiAgICBjb25zdCBib3R0b20gPSBNYXRoLmFicyhyZWN0LmJvdHRvbSAtIHBvaW50LnkpO1xuICAgIGNvbnN0IHJpZ2h0ID0gTWF0aC5hYnMocmVjdC5yaWdodCAtIHBvaW50LngpO1xuICAgIGNvbnN0IGxlZnQgPSBNYXRoLmFicyhyZWN0LmxlZnQgLSBwb2ludC54KTtcbiAgICBzd2l0Y2goTWF0aC5taW4odG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0KSl7XG4gICAgICAgIGNhc2UgbGVmdDpcbiAgICAgICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICAgIGNhc2UgcmlnaHQ6XG4gICAgICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgICAgY2FzZSB0b3A6XG4gICAgICAgICAgICByZXR1cm4gJ3RvcCc7XG4gICAgICAgIGNhc2UgYm90dG9tOlxuICAgICAgICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgIH1cbn1cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQYWRkZWRFeGl0UG9pbnRzKGV4aXRQb2ludCwgZXhpdFNpZGUsIHBhZGRpbmcgPSA1KSB7XG4gICAgY29uc3QgcGFkZGVkRXhpdFBvaW50cyA9IFtdO1xuICAgIHN3aXRjaChleGl0U2lkZSl7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54IC0gcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSArIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCArIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgcGFkZGVkRXhpdFBvaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgLSBwYWRkaW5nXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgeDogZXhpdFBvaW50LnggKyBwYWRkaW5nLFxuICAgICAgICAgICAgICAgIHk6IGV4aXRQb2ludC55IC0gcGFkZGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54ICsgcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSAtIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCArIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54IC0gcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSAtIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcGFkZGVkRXhpdFBvaW50cztcbn1cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQb2ludHNGcm9tUmVjdChyZWN0KSB7XG4gICAgY29uc3QgeyB0b3A6IHRvcCAsIHJpZ2h0OiByaWdodCAsIGJvdHRvbTogYm90dG9tICwgbGVmdDogbGVmdCAgfSA9IHJlY3Q7XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiByaWdodCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiByaWdodCxcbiAgICAgICAgICAgIHk6IGJvdHRvbVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogYm90dG9tXG4gICAgICAgIH1cbiAgICBdO1xufSAvLyBEZXRlcm1pbmUgaWYgYSBwb2ludCBpcyBpbnNpZGUgb2YgYSBwb2x5Z29uLlxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3N1YnN0YWNrL3BvaW50LWluLXBvbHlnb25cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uKHBvaW50LCBwb2x5Z29uKSB7XG4gICAgY29uc3QgeyB4OiB4ICwgeTogeSAgfSA9IHBvaW50O1xuICAgIGxldCBpbnNpZGUgPSBmYWxzZTtcbiAgICBmb3IobGV0IGkgPSAwLCBqID0gcG9seWdvbi5sZW5ndGggLSAxOyBpIDwgcG9seWdvbi5sZW5ndGg7IGogPSBpKyspe1xuICAgICAgICBjb25zdCB4aSA9IHBvbHlnb25baV0ueDtcbiAgICAgICAgY29uc3QgeWkgPSBwb2x5Z29uW2ldLnk7XG4gICAgICAgIGNvbnN0IHhqID0gcG9seWdvbltqXS54O1xuICAgICAgICBjb25zdCB5aiA9IHBvbHlnb25bal0ueTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICAgIGNvbnN0IGludGVyc2VjdCA9IHlpID4geSAhPT0geWogPiB5ICYmIHggPCAoeGogLSB4aSkgKiAoeSAtIHlpKSAvICh5aiAtIHlpKSArIHhpO1xuICAgICAgICBpZiAoaW50ZXJzZWN0KSBpbnNpZGUgPSAhaW5zaWRlO1xuICAgIH1cbiAgICByZXR1cm4gaW5zaWRlO1xufSAvLyBSZXR1cm5zIGEgbmV3IGFycmF5IG9mIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIGNvbnZleCBodWxsIG9mIHRoZSBnaXZlbiBzZXQgb2YgcG9pbnRzLlxuLy8gaHR0cHM6Ly93d3cubmF5dWtpLmlvL3BhZ2UvY29udmV4LWh1bGwtYWxnb3JpdGhtXG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0SHVsbChwb2ludHMpIHtcbiAgICBjb25zdCBuZXdQb2ludHMgPSBwb2ludHMuc2xpY2UoKTtcbiAgICBuZXdQb2ludHMuc29ydCgoYSwgYik9PntcbiAgICAgICAgaWYgKGEueCA8IGIueCkgcmV0dXJuIC0xO1xuICAgICAgICBlbHNlIGlmIChhLnggPiBiLngpIHJldHVybiAxO1xuICAgICAgICBlbHNlIGlmIChhLnkgPCBiLnkpIHJldHVybiAtMTtcbiAgICAgICAgZWxzZSBpZiAoYS55ID4gYi55KSByZXR1cm4gMTtcbiAgICAgICAgZWxzZSByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGxQcmVzb3J0ZWQobmV3UG9pbnRzKTtcbn0gLy8gUmV0dXJucyB0aGUgY29udmV4IGh1bGwsIGFzc3VtaW5nIHRoYXQgZWFjaCBwb2ludHNbaV0gPD0gcG9pbnRzW2kgKyAxXS4gUnVucyBpbiBPKG4pIHRpbWUuXG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0SHVsbFByZXNvcnRlZChwb2ludHMpIHtcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA8PSAxKSByZXR1cm4gcG9pbnRzLnNsaWNlKCk7XG4gICAgY29uc3QgdXBwZXJIdWxsID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICAgIHdoaWxlKHVwcGVySHVsbC5sZW5ndGggPj0gMil7XG4gICAgICAgICAgICBjb25zdCBxID0gdXBwZXJIdWxsW3VwcGVySHVsbC5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IHIgPSB1cHBlckh1bGxbdXBwZXJIdWxsLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgaWYgKChxLnggLSByLngpICogKHAueSAtIHIueSkgPj0gKHEueSAtIHIueSkgKiAocC54IC0gci54KSkgdXBwZXJIdWxsLnBvcCgpO1xuICAgICAgICAgICAgZWxzZSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB1cHBlckh1bGwucHVzaChwKTtcbiAgICB9XG4gICAgdXBwZXJIdWxsLnBvcCgpO1xuICAgIGNvbnN0IGxvd2VySHVsbCA9IFtdO1xuICAgIGZvcihsZXQgaTEgPSBwb2ludHMubGVuZ3RoIC0gMTsgaTEgPj0gMDsgaTEtLSl7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaTFdO1xuICAgICAgICB3aGlsZShsb3dlckh1bGwubGVuZ3RoID49IDIpe1xuICAgICAgICAgICAgY29uc3QgcSA9IGxvd2VySHVsbFtsb3dlckh1bGwubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCByID0gbG93ZXJIdWxsW2xvd2VySHVsbC5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgIGlmICgocS54IC0gci54KSAqIChwLnkgLSByLnkpID49IChxLnkgLSByLnkpICogKHAueCAtIHIueCkpIGxvd2VySHVsbC5wb3AoKTtcbiAgICAgICAgICAgIGVsc2UgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgbG93ZXJIdWxsLnB1c2gocCk7XG4gICAgfVxuICAgIGxvd2VySHVsbC5wb3AoKTtcbiAgICBpZiAodXBwZXJIdWxsLmxlbmd0aCA9PT0gMSAmJiBsb3dlckh1bGwubGVuZ3RoID09PSAxICYmIHVwcGVySHVsbFswXS54ID09PSBsb3dlckh1bGxbMF0ueCAmJiB1cHBlckh1bGxbMF0ueSA9PT0gbG93ZXJIdWxsWzBdLnkpIHJldHVybiB1cHBlckh1bGw7XG4gICAgZWxzZSByZXR1cm4gdXBwZXJIdWxsLmNvbmNhdChsb3dlckh1bGwpO1xufVxuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkZjc4NjQ5ZmI5Y2E1NjZiODtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4YzY2MGM2M2I3OTJkZWE7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ4YzYxMDc0NGVmY2Y4YTFkO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2IzNmI4ZjkyNWFiNzQ5NztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjA7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5O1xuXG5cblxuXG5leHBvcnQgeyRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQxYzU0MGEyMjI0ZjBkODY1IGFzIGNyZWF0ZVRvb2x0aXBTY29wZSwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGY3ODY0OWZiOWNhNTY2YjggYXMgVG9vbHRpcFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjhjNjYwYzYzYjc5MmRlYSBhcyBUb29sdGlwLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCBhcyBUb29sdGlwVHJpZ2dlciwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdiMzZiOGY5MjVhYjc0OTcgYXMgVG9vbHRpcFBvcnRhbCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAgYXMgVG9vbHRpcENvbnRlbnQsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5IGFzIFRvb2x0aXBBcnJvdywgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgYXMgUHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IGFzIFRyaWdnZXIsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIGFzIFBvcnRhbCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgYXMgQ29udGVudCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3d9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsLCJmdW5jdGlvbiAkYWU2OTMzZTUzNTI0N2QzZCRleHBvcnQkN2QxNWI2NGNmNWEzYTRjNCh2YWx1ZSwgW21pbiwgbWF4XSkge1xuICAgIHJldHVybiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgdmFsdWUpKTtcbn1cblxuXG5cblxuZXhwb3J0IHskYWU2OTMzZTUzNTI0N2QzZCRleHBvcnQkN2QxNWI2NGNmNWEzYTRjNCBhcyBjbGFtcH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge3VzZVN0YXRlIGFzICQwMWI5YyR1c2VTdGF0ZSwgdXNlUmVmIGFzICQwMWI5YyR1c2VSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDAxYjljJGNyZWF0ZUVsZW1lbnQsIHVzZUNhbGxiYWNrIGFzICQwMWI5YyR1c2VDYWxsYmFjaywgZm9yd2FyZFJlZiBhcyAkMDFiOWMkZm9yd2FyZFJlZiwgdXNlRWZmZWN0IGFzICQwMWI5YyR1c2VFZmZlY3QsIEZyYWdtZW50IGFzICQwMWI5YyRGcmFnbWVudCwgdXNlTWVtbyBhcyAkMDFiOWMkdXNlTWVtb30gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NyZWF0ZVBvcnRhbCBhcyAkMDFiOWMkY3JlYXRlUG9ydGFsfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge2NsYW1wIGFzICQwMWI5YyRjbGFtcH0gZnJvbSBcIkByYWRpeC11aS9udW1iZXJcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHtjcmVhdGVDb2xsZWN0aW9uIGFzICQwMWI5YyRjcmVhdGVDb2xsZWN0aW9ufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbGxlY3Rpb25cIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQwMWI5YyR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkMDFiOWMkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlRGlyZWN0aW9uIGFzICQwMWI5YyR1c2VEaXJlY3Rpb259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlyZWN0aW9uXCI7XG5pbXBvcnQge0Rpc21pc3NhYmxlTGF5ZXIgYXMgJDAxYjljJERpc21pc3NhYmxlTGF5ZXJ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXJcIjtcbmltcG9ydCB7dXNlRm9jdXNHdWFyZHMgYXMgJDAxYjljJHVzZUZvY3VzR3VhcmRzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWZvY3VzLWd1YXJkc1wiO1xuaW1wb3J0IHtGb2N1c1Njb3BlIGFzICQwMWI5YyRGb2N1c1Njb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWZvY3VzLXNjb3BlXCI7XG5pbXBvcnQge3VzZUlkIGFzICQwMWI5YyR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtjcmVhdGVQb3BwZXJTY29wZSBhcyAkMDFiOWMkY3JlYXRlUG9wcGVyU2NvcGUsIFJvb3QgYXMgJDAxYjljJFJvb3QsIEFuY2hvciBhcyAkMDFiOWMkQW5jaG9yLCBDb250ZW50IGFzICQwMWI5YyRDb250ZW50LCBBcnJvdyBhcyAkMDFiOWMkQXJyb3d9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wcGVyXCI7XG5pbXBvcnQge1BvcnRhbCBhcyAkMDFiOWMkUG9ydGFsfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcnRhbFwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDAxYjljJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7U2xvdCBhcyAkMDFiOWMkU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICQwMWI5YyR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICQwMWI5YyR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5pbXBvcnQge3VzZVByZXZpb3VzIGFzICQwMWI5YyR1c2VQcmV2aW91c30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtcHJldmlvdXNcIjtcbmltcG9ydCB7VmlzdWFsbHlIaWRkZW4gYXMgJDAxYjljJFZpc3VhbGx5SGlkZGVufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXZpc3VhbGx5LWhpZGRlblwiO1xuaW1wb3J0IHtoaWRlT3RoZXJzIGFzICQwMWI5YyRoaWRlT3RoZXJzfSBmcm9tIFwiYXJpYS1oaWRkZW5cIjtcbmltcG9ydCB7UmVtb3ZlU2Nyb2xsIGFzICQwMWI5YyRSZW1vdmVTY3JvbGx9IGZyb20gXCJyZWFjdC1yZW1vdmUtc2Nyb2xsXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJE9QRU5fS0VZUyA9IFtcbiAgICAnICcsXG4gICAgJ0VudGVyJyxcbiAgICAnQXJyb3dVcCcsXG4gICAgJ0Fycm93RG93bidcbl07XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUSU9OX0tFWVMgPSBbXG4gICAgJyAnLFxuICAgICdFbnRlcidcbl07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FID0gJ1NlbGVjdCc7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24sICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlXSA9ICQwMWI5YyRjcmVhdGVDb2xsZWN0aW9uKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSk7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyODY3MjdhNzVkYzAzOWJkXSA9ICQwMWI5YyRjcmVhdGVDb250ZXh0U2NvcGUoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FLCBbXG4gICAgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZUNvbGxlY3Rpb25TY29wZSxcbiAgICAkMDFiOWMkY3JlYXRlUG9wcGVyU2NvcGVcbl0pO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVBvcHBlclNjb3BlID0gJDAxYjljJGNyZWF0ZVBvcHBlclNjb3BlKCk7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUpO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3ROYXRpdmVPcHRpb25zUHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3ROYXRpdmVPcHRpb25zQ29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUpO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVmOWIxYTU5ZTU5MjI4OGYgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gLCBvbk9wZW5DaGFuZ2U6IG9uT3BlbkNoYW5nZSAsIHZhbHVlOiB2YWx1ZVByb3AgLCBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSAsIG9uVmFsdWVDaGFuZ2U6IG9uVmFsdWVDaGFuZ2UgLCBkaXI6IGRpciAsIG5hbWU6IG5hbWUgLCBhdXRvQ29tcGxldGU6IGF1dG9Db21wbGV0ZSAsIGRpc2FibGVkOiBkaXNhYmxlZCAsIHJlcXVpcmVkOiByZXF1aXJlZCAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFt0cmlnZ2VyLCBzZXRUcmlnZ2VyXSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdmFsdWVOb2RlLCBzZXRWYWx1ZU5vZGVdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2YWx1ZU5vZGVIYXNDaGlsZHJlbiwgc2V0VmFsdWVOb2RlSGFzQ2hpbGRyZW5dID0gJDAxYjljJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSAkMDFiOWMkdXNlRGlyZWN0aW9uKGRpcik7XG4gICAgY29uc3QgW29wZW4gPSBmYWxzZSwgc2V0T3Blbl0gPSAkMDFiOWMkdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBvcGVuUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRPcGVuLFxuICAgICAgICBvbkNoYW5nZTogb25PcGVuQ2hhbmdlXG4gICAgfSk7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSAkMDFiOWMkdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiB2YWx1ZVByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0VmFsdWUsXG4gICAgICAgIG9uQ2hhbmdlOiBvblZhbHVlQ2hhbmdlXG4gICAgfSk7XG4gICAgY29uc3QgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmID0gJDAxYjljJHVzZVJlZihudWxsKTsgLy8gV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBieSBkZWZhdWx0IHNvIHRoYXQgZXZlbnRzIGJ1YmJsZSB0byBmb3JtcyB3aXRob3V0IEpTIChTU1IpXG4gICAgY29uc3QgaXNGb3JtQ29udHJvbCA9IHRyaWdnZXIgPyBCb29sZWFuKHRyaWdnZXIuY2xvc2VzdCgnZm9ybScpKSA6IHRydWU7XG4gICAgY29uc3QgW25hdGl2ZU9wdGlvbnNTZXQsIHNldE5hdGl2ZU9wdGlvbnNTZXRdID0gJDAxYjljJHVzZVN0YXRlKG5ldyBTZXQoKSk7IC8vIFRoZSBuYXRpdmUgYHNlbGVjdGAgb25seSBhc3NvY2lhdGVzIHRoZSBjb3JyZWN0IGRlZmF1bHQgdmFsdWUgaWYgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAvLyBgb3B0aW9uYCBpcyByZW5kZXJlZCBhcyBhIGNoaWxkICoqYXQgdGhlIHNhbWUgdGltZSoqIGFzIGl0c2VsZi5cbiAgICAvLyBCZWNhdXNlIGl0IG1pZ2h0IHRha2UgYSBmZXcgcmVuZGVycyBmb3Igb3VyIGl0ZW1zIHRvIGdhdGhlciB0aGUgaW5mb3JtYXRpb24gdG8gYnVpbGRcbiAgICAvLyB0aGUgbmF0aXZlIGBvcHRpb25gKHMpLCB3ZSBnZW5lcmF0ZSBhIGtleSBvbiB0aGUgYHNlbGVjdGAgdG8gbWFrZSBzdXJlIFJlYWN0IHJlLWJ1aWxkcyBpdFxuICAgIC8vIGVhY2ggdGltZSB0aGUgb3B0aW9ucyBjaGFuZ2UuXG4gICAgY29uc3QgbmF0aXZlU2VsZWN0S2V5ID0gQXJyYXkuZnJvbShuYXRpdmVPcHRpb25zU2V0KS5tYXAoKG9wdGlvbik9Pm9wdGlvbi5wcm9wcy52YWx1ZVxuICAgICkuam9pbignOycpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRSb290LCBwb3BwZXJTY29wZSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UHJvdmlkZXIsIHtcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgdHJpZ2dlcjogdHJpZ2dlcixcbiAgICAgICAgb25UcmlnZ2VyQ2hhbmdlOiBzZXRUcmlnZ2VyLFxuICAgICAgICB2YWx1ZU5vZGU6IHZhbHVlTm9kZSxcbiAgICAgICAgb25WYWx1ZU5vZGVDaGFuZ2U6IHNldFZhbHVlTm9kZSxcbiAgICAgICAgdmFsdWVOb2RlSGFzQ2hpbGRyZW46IHZhbHVlTm9kZUhhc0NoaWxkcmVuLFxuICAgICAgICBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlOiBzZXRWYWx1ZU5vZGVIYXNDaGlsZHJlbixcbiAgICAgICAgY29udGVudElkOiAkMDFiOWMkdXNlSWQoKSxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBvblZhbHVlQ2hhbmdlOiBzZXRWYWx1ZSxcbiAgICAgICAgb3Blbjogb3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlOiBzZXRPcGVuLFxuICAgICAgICBkaXI6IGRpcmVjdGlvbixcbiAgICAgICAgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmOiB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24uUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3RcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3ROYXRpdmVPcHRpb25zUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IHByb3BzLl9fc2NvcGVTZWxlY3QsXG4gICAgICAgIG9uTmF0aXZlT3B0aW9uQWRkOiAkMDFiOWMkdXNlQ2FsbGJhY2soKG9wdGlvbik9PntcbiAgICAgICAgICAgIHNldE5hdGl2ZU9wdGlvbnNTZXQoKHByZXYpPT5uZXcgU2V0KHByZXYpLmFkZChvcHRpb24pXG4gICAgICAgICAgICApO1xuICAgICAgICB9LCBbXSksXG4gICAgICAgIG9uTmF0aXZlT3B0aW9uUmVtb3ZlOiAkMDFiOWMkdXNlQ2FsbGJhY2soKG9wdGlvbik9PntcbiAgICAgICAgICAgIHNldE5hdGl2ZU9wdGlvbnNTZXQoKHByZXYpPT57XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uc1NldCA9IG5ldyBTZXQocHJldik7XG4gICAgICAgICAgICAgICAgb3B0aW9uc1NldC5kZWxldGUob3B0aW9uKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uc1NldDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBbXSlcbiAgICB9LCBjaGlsZHJlbikpLCBpc0Zvcm1Db250cm9sID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQnViYmxlU2VsZWN0LCB7XG4gICAgICAgIGtleTogbmF0aXZlU2VsZWN0S2V5LFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICBhdXRvQ29tcGxldGU6IGF1dG9Db21wbGV0ZSxcbiAgICAgICAgdmFsdWU6IHZhbHVlIC8vIGVuYWJsZSBmb3JtIGF1dG9maWxsXG4gICAgICAgICxcbiAgICAgICAgb25DaGFuZ2U6IChldmVudCk9PnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICB9LCB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcIm9wdGlvblwiLCB7XG4gICAgICAgIHZhbHVlOiBcIlwiXG4gICAgfSkgOiBudWxsLCBBcnJheS5mcm9tKG5hdGl2ZU9wdGlvbnNTZXQpKSA6IG51bGwpKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVmOWIxYTU5ZTU5MjI4OGYsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFRyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFRSSUdHRVJfTkFNRSA9ICdTZWxlY3RUcmlnZ2VyJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGRpc2FibGVkOiBkaXNhYmxlZCA9IGZhbHNlICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IGNvbnRleHQuZGlzYWJsZWQgfHwgZGlzYWJsZWQ7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQub25UcmlnZ2VyQ2hhbmdlKTtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtzZWFyY2hSZWYsIGhhbmRsZVR5cGVhaGVhZFNlYXJjaCwgcmVzZXRUeXBlYWhlYWRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVR5cGVhaGVhZFNlYXJjaCgoc2VhcmNoKT0+e1xuICAgICAgICBjb25zdCBlbmFibGVkSXRlbXMgPSBnZXRJdGVtcygpLmZpbHRlcigoaXRlbSk9PiFpdGVtLmRpc2FibGVkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gZW5hYmxlZEl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLnZhbHVlID09PSBjb250ZXh0LnZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG5leHRJdGVtID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGZpbmROZXh0SXRlbShlbmFibGVkSXRlbXMsIHNlYXJjaCwgY3VycmVudEl0ZW0pO1xuICAgICAgICBpZiAobmV4dEl0ZW0gIT09IHVuZGVmaW5lZCkgY29udGV4dC5vblZhbHVlQ2hhbmdlKG5leHRJdGVtLnZhbHVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVPcGVuID0gKCk9PntcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICBjb250ZXh0Lm9uT3BlbkNoYW5nZSh0cnVlKTsgLy8gcmVzZXQgdHlwZWFoZWFkIHdoZW4gd2Ugb3BlblxuICAgICAgICAgICAgcmVzZXRUeXBlYWhlYWQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEFuY2hvciwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZVxuICAgIH0sIHBvcHBlclNjb3BlKSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmJ1dHRvbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgcm9sZTogXCJjb21ib2JveFwiLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBjb250ZXh0Lm9wZW4sXG4gICAgICAgIFwiYXJpYS1yZXF1aXJlZFwiOiBjb250ZXh0LnJlcXVpcmVkLFxuICAgICAgICBcImFyaWEtYXV0b2NvbXBsZXRlXCI6IFwibm9uZVwiLFxuICAgICAgICBkaXI6IGNvbnRleHQuZGlyLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5vcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCcsXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogaXNEaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtcGxhY2Vob2xkZXJcIjogY29udGV4dC52YWx1ZSA9PT0gdW5kZWZpbmVkID8gJycgOiB1bmRlZmluZWRcbiAgICB9LCB0cmlnZ2VyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMgLy8gRW5hYmxlIGNvbXBhdGliaWxpdHkgd2l0aCBuYXRpdmUgbGFiZWwgb3IgY3VzdG9tIGBMYWJlbGAgXCJjbGlja1wiIGZvciBTYWZhcmk6XG4gICAgICAgICxcbiAgICAgICAgb25DbGljazogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHRyaWdnZXJQcm9wcy5vbkNsaWNrLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBXaGlsc3QgYnJvd3NlcnMgZ2VuZXJhbGx5IGhhdmUgbm8gaXNzdWUgZm9jdXNpbmcgdGhlIHRyaWdnZXIgd2hlbiBjbGlja2luZ1xuICAgICAgICAgICAgLy8gb24gYSBsYWJlbCwgU2FmYXJpIHNlZW1zIHRvIHN0cnVnZ2xlIHdpdGggdGhlIGZhY3QgdGhhdCB0aGVyZSdzIG5vIGBvbkNsaWNrYC5cbiAgICAgICAgICAgIC8vIFdlIGZvcmNlIGBmb2N1c2AgaW4gdGhpcyBjYXNlLiBOb3RlOiB0aGlzIGRvZXNuJ3QgY3JlYXRlIGFueSBvdGhlciBzaWRlLWVmZmVjdFxuICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSBhcmUgcHJldmVudGluZyBkZWZhdWx0IGluIGBvblBvaW50ZXJEb3duYCBzbyBlZmZlY3RpdmVseVxuICAgICAgICAgICAgLy8gdGhpcyBvbmx5IHJ1bnMgZm9yIGEgbGFiZWwgXCJjbGlja1wiXG4gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnModHJpZ2dlclByb3BzLm9uUG9pbnRlckRvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIHByZXZlbnQgaW1wbGljaXQgcG9pbnRlciBjYXB0dXJlXG4gICAgICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcG9pbnRlcmV2ZW50czMvI2ltcGxpY2l0LXBvaW50ZXItY2FwdHVyZVxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgaWYgKHRhcmdldC5oYXNQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpKSB0YXJnZXQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG4gICAgICAgICAgICAgLy8gb25seSBjYWxsIGhhbmRsZXIgaWYgaXQncyB0aGUgbGVmdCBidXR0b24gKG1vdXNlZG93biBnZXRzIHRyaWdnZXJlZCBieSBhbGwgbW91c2UgYnV0dG9ucylcbiAgICAgICAgICAgIC8vIGJ1dCBub3Qgd2hlbiB0aGUgY29udHJvbCBrZXkgaXMgcHJlc3NlZCAoYXZvaWRpbmcgTWFjT1MgcmlnaHQgY2xpY2spXG4gICAgICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSAwICYmIGV2ZW50LmN0cmxLZXkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbigpO1xuICAgICAgICAgICAgICAgIGNvbnRleHQudHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6IE1hdGgucm91bmQoZXZlbnQucGFnZVgpLFxuICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLnJvdW5kKGV2ZW50LnBhZ2VZKVxuICAgICAgICAgICAgICAgIH07IC8vIHByZXZlbnQgdHJpZ2dlciBmcm9tIHN0ZWFsaW5nIGZvY3VzIGZyb20gdGhlIGFjdGl2ZSBpdGVtIGFmdGVyIG9wZW5pbmcuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIG9uS2V5RG93bjogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHRyaWdnZXJQcm9wcy5vbktleURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIGNvbnN0IGlzVHlwaW5nQWhlYWQgPSBzZWFyY2hSZWYuY3VycmVudCAhPT0gJyc7XG4gICAgICAgICAgICBjb25zdCBpc01vZGlmaWVyS2V5ID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQubWV0YUtleTtcbiAgICAgICAgICAgIGlmICghaXNNb2RpZmllcktleSAmJiBldmVudC5rZXkubGVuZ3RoID09PSAxKSBoYW5kbGVUeXBlYWhlYWRTZWFyY2goZXZlbnQua2V5KTtcbiAgICAgICAgICAgIGlmIChpc1R5cGluZ0FoZWFkICYmIGV2ZW50LmtleSA9PT0gJyAnKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJE9QRU5fS0VZUy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbigpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RWYWx1ZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVkFMVUVfTkFNRSA9ICdTZWxlY3RWYWx1ZSc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgLy8gV2UgaWdub3JlIGBjbGFzc05hbWVgIGFuZCBgc3R5bGVgIGFzIHRoaXMgcGFydCBzaG91bGRuJ3QgYmUgc3R5bGVkLlxuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGNsYXNzTmFtZTogY2xhc3NOYW1lICwgc3R5bGU6IHN0eWxlICwgY2hpbGRyZW46IGNoaWxkcmVuICwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyICwgLi4udmFsdWVQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRWQUxVRV9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCB7IG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2U6IG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2UgIH0gPSBjb250ZXh0O1xuICAgIGNvbnN0IGhhc0NoaWxkcmVuID0gY2hpbGRyZW4gIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC5vblZhbHVlTm9kZUNoYW5nZSk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlKGhhc0NoaWxkcmVuKTtcbiAgICB9LCBbXG4gICAgICAgIG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2UsXG4gICAgICAgIGhhc0NoaWxkcmVuXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5zcGFuLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHZhbHVlUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMgLy8gd2UgZG9uJ3Qgd2FudCBldmVudHMgZnJvbSB0aGUgcG9ydGFsbGVkIGBTZWxlY3RWYWx1ZWAgY2hpbGRyZW4gdG8gYnViYmxlXG4gICAgICAgICxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJ1xuICAgICAgICB9XG4gICAgfSksIGNvbnRleHQudmFsdWUgPT09IHVuZGVmaW5lZCAmJiBwbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkID8gcGxhY2Vob2xkZXIgOiBjaGlsZHJlbik7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVkFMVUVfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RJY29uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJQ09OX05BTUUgPSAnU2VsZWN0SWNvbic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNSA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uaWNvblByb3BzIH0gPSBwcm9wcztcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLnNwYW4sICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZVxuICAgIH0sIGljb25Qcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pLCBjaGlsZHJlbiB8fCAn4pa8Jyk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSUNPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFBvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9SVEFMX05BTUUgPSAnU2VsZWN0UG9ydGFsJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMmFmNmM5OTQ0Mjk2MjEzID0gKHByb3BzKT0+e1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQb3J0YWwsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCBwcm9wcykpO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjJhZjZjOTk0NDI5NjIxMywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9SVEFMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0Q29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FID0gJ1NlbGVjdENvbnRlbnQnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGM5NzNhNGIzY2I4NmEwM2QgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbZnJhZ21lbnQsIHNldEZyYWdtZW50XSA9ICQwMWI5YyR1c2VTdGF0ZSgpOyAvLyBzZXR0aW5nIHRoZSBmcmFnbWVudCBpbiBgdXNlTGF5b3V0RWZmZWN0YCBhcyBgRG9jdW1lbnRGcmFnbWVudGAgZG9lc24ndCBleGlzdCBvbiB0aGUgc2VydmVyXG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBzZXRGcmFnbWVudChuZXcgRG9jdW1lbnRGcmFnbWVudCgpKTtcbiAgICB9LCBbXSk7XG4gICAgaWYgKCFjb250ZXh0Lm9wZW4pIHtcbiAgICAgICAgY29uc3QgZnJhZyA9IGZyYWdtZW50O1xuICAgICAgICByZXR1cm4gZnJhZyA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZVBvcnRhbCgvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50UHJvdmlkZXIsIHtcbiAgICAgICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlU2VsZWN0XG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24uU2xvdCwge1xuICAgICAgICAgICAgc2NvcGU6IHByb3BzLl9fc2NvcGVTZWxlY3RcbiAgICAgICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLCBwcm9wcy5jaGlsZHJlbikpKSwgZnJhZykgOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYzk3M2E0YjNjYjg2YTAzZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdENvbnRlbnRJbXBsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTiA9IDEwO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50UHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FKTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX0lNUExfTkFNRSA9ICdTZWxlY3RDb250ZW50SW1wbCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIHBvc2l0aW9uOiBwb3NpdGlvbiA9ICdpdGVtLWFsaWduZWQnICwgb25DbG9zZUF1dG9Gb2N1czogb25DbG9zZUF1dG9Gb2N1cyAsIG9uRXNjYXBlS2V5RG93bjogb25Fc2NhcGVLZXlEb3duICwgb25Qb2ludGVyRG93bk91dHNpZGU6IG9uUG9pbnRlckRvd25PdXRzaWRlICwgc2lkZTogLy9cbiAgICAvLyBQb3BwZXJDb250ZW50IHByb3BzXG4gICAgc2lkZSAsIHNpZGVPZmZzZXQ6IHNpZGVPZmZzZXQgLCBhbGlnbjogYWxpZ24gLCBhbGlnbk9mZnNldDogYWxpZ25PZmZzZXQgLCBhcnJvd1BhZGRpbmc6IGFycm93UGFkZGluZyAsIGNvbGxpc2lvbkJvdW5kYXJ5OiBjb2xsaXNpb25Cb3VuZGFyeSAsIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmcgLCBzdGlja3k6IHN0aWNreSAsIGhpZGVXaGVuRGV0YWNoZWQ6IGhpZGVXaGVuRGV0YWNoZWQgLCBhdm9pZENvbGxpc2lvbnM6IGF2b2lkQ29sbGlzaW9ucyAsIC8vXG4gICAgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2NvbnRlbnQsIHNldENvbnRlbnRdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2aWV3cG9ydCwgc2V0Vmlld3BvcnRdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldENvbnRlbnQobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IFtzZWxlY3RlZEl0ZW0sIHNldFNlbGVjdGVkSXRlbV0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkSXRlbVRleHQsIHNldFNlbGVjdGVkSXRlbVRleHRdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2lzUG9zaXRpb25lZCwgc2V0SXNQb3NpdGlvbmVkXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZiA9ICQwMWI5YyR1c2VSZWYoZmFsc2UpOyAvLyBhcmlhLWhpZGUgZXZlcnl0aGluZyBleGNlcHQgdGhlIGNvbnRlbnQgKGJldHRlciBzdXBwb3J0ZWQgZXF1aXZhbGVudCB0byBzZXR0aW5nIGFyaWEtbW9kYWwpXG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGVudCkgcmV0dXJuICQwMWI5YyRoaWRlT3RoZXJzKGNvbnRlbnQpO1xuICAgIH0sIFtcbiAgICAgICAgY29udGVudFxuICAgIF0pOyAvLyBNYWtlIHN1cmUgdGhlIHdob2xlIHRyZWUgaGFzIGZvY3VzIGd1YXJkcyBhcyBvdXIgYFNlbGVjdGAgbWF5IGJlXG4gICAgLy8gdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgRE9NIChiZWNhdXNlIG9mIHRoZSBgUG9ydGFsYClcbiAgICAkMDFiOWMkdXNlRm9jdXNHdWFyZHMoKTtcbiAgICBjb25zdCBmb2N1c0ZpcnN0ID0gJDAxYjljJHVzZUNhbGxiYWNrKChjYW5kaWRhdGVzKT0+e1xuICAgICAgICBjb25zdCBbZmlyc3RJdGVtLCAuLi5yZXN0SXRlbXNdID0gZ2V0SXRlbXMoKS5tYXAoKGl0ZW0pPT5pdGVtLnJlZi5jdXJyZW50XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IFtsYXN0SXRlbV0gPSByZXN0SXRlbXMuc2xpY2UoLTEpO1xuICAgICAgICBjb25zdCBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpe1xuICAgICAgICAgICAgLy8gaWYgZm9jdXMgaXMgYWxyZWFkeSB3aGVyZSB3ZSB3YW50IHRvIGdvLCB3ZSBkb24ndCB3YW50IHRvIGtlZXAgZ29pbmcgdGhyb3VnaCB0aGUgY2FuZGlkYXRlc1xuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQpIHJldHVybjtcbiAgICAgICAgICAgIGNhbmRpZGF0ZSA9PT0gbnVsbCB8fCBjYW5kaWRhdGUgPT09IHZvaWQgMCB8fCBjYW5kaWRhdGUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCdcbiAgICAgICAgICAgIH0pOyAvLyB2aWV3cG9ydCBtaWdodCBoYXZlIHBhZGRpbmcgc28gc2Nyb2xsIHRvIGl0cyBlZGdlcyB3aGVuIGZvY3VzaW5nIGZpcnN0L2xhc3QgaXRlbXMuXG4gICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09PSBmaXJzdEl0ZW0gJiYgdmlld3BvcnQpIHZpZXdwb3J0LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09PSBsYXN0SXRlbSAmJiB2aWV3cG9ydCkgdmlld3BvcnQuc2Nyb2xsVG9wID0gdmlld3BvcnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgICAgY2FuZGlkYXRlID09PSBudWxsIHx8IGNhbmRpZGF0ZSA9PT0gdm9pZCAwIHx8IGNhbmRpZGF0ZS5mb2N1cygpO1xuICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGdldEl0ZW1zLFxuICAgICAgICB2aWV3cG9ydFxuICAgIF0pO1xuICAgIGNvbnN0IGZvY3VzU2VsZWN0ZWRJdGVtID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT5mb2N1c0ZpcnN0KFtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbSxcbiAgICAgICAgICAgIGNvbnRlbnRcbiAgICAgICAgXSlcbiAgICAsIFtcbiAgICAgICAgZm9jdXNGaXJzdCxcbiAgICAgICAgc2VsZWN0ZWRJdGVtLFxuICAgICAgICBjb250ZW50XG4gICAgXSk7IC8vIFNpbmNlIHRoaXMgaXMgbm90IGRlcGVuZGVudCBvbiBsYXlvdXQsIHdlIHdhbnQgdG8gZW5zdXJlIHRoaXMgcnVucyBhdCB0aGUgc2FtZSB0aW1lIGFzXG4gICAgLy8gb3RoZXIgZWZmZWN0cyBhY3Jvc3MgY29tcG9uZW50cy4gSGVuY2Ugd2h5IHdlIGRvbid0IGNhbGwgYGZvY3VzU2VsZWN0ZWRJdGVtYCBpbnNpZGUgYHBvc2l0aW9uYC5cbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChpc1Bvc2l0aW9uZWQpIGZvY3VzU2VsZWN0ZWRJdGVtKCk7XG4gICAgfSwgW1xuICAgICAgICBpc1Bvc2l0aW9uZWQsXG4gICAgICAgIGZvY3VzU2VsZWN0ZWRJdGVtXG4gICAgXSk7IC8vIHByZXZlbnQgc2VsZWN0aW5nIGl0ZW1zIG9uIGBwb2ludGVydXBgIGluIHNvbWUgY2FzZXMgYWZ0ZXIgb3BlbmluZyBmcm9tIGBwb2ludGVyZG93bmBcbiAgICAvLyBhbmQgY2xvc2Ugb24gYHBvaW50ZXJ1cGAgb3V0c2lkZS5cbiAgICBjb25zdCB7IG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmOiB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYgIH0gPSBjb250ZXh0O1xuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgIGxldCBwb2ludGVyTW92ZURlbHRhID0ge1xuICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJNb3ZlID0gKGV2ZW50KT0+e1xuICAgICAgICAgICAgICAgIHZhciBfdHJpZ2dlclBvaW50ZXJEb3duUG8sIF90cmlnZ2VyUG9pbnRlckRvd25QbzIsIF90cmlnZ2VyUG9pbnRlckRvd25QbzMsIF90cmlnZ2VyUG9pbnRlckRvd25QbzQ7XG4gICAgICAgICAgICAgICAgcG9pbnRlck1vdmVEZWx0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogTWF0aC5hYnMoTWF0aC5yb3VuZChldmVudC5wYWdlWCkgLSAoKF90cmlnZ2VyUG9pbnRlckRvd25QbyA9IChfdHJpZ2dlclBvaW50ZXJEb3duUG8yID0gdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF90cmlnZ2VyUG9pbnRlckRvd25QbzIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90cmlnZ2VyUG9pbnRlckRvd25QbzIueCkgIT09IG51bGwgJiYgX3RyaWdnZXJQb2ludGVyRG93blBvICE9PSB2b2lkIDAgPyBfdHJpZ2dlclBvaW50ZXJEb3duUG8gOiAwKSksXG4gICAgICAgICAgICAgICAgICAgIHk6IE1hdGguYWJzKE1hdGgucm91bmQoZXZlbnQucGFnZVkpIC0gKChfdHJpZ2dlclBvaW50ZXJEb3duUG8zID0gKF90cmlnZ2VyUG9pbnRlckRvd25QbzQgPSB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3RyaWdnZXJQb2ludGVyRG93blBvNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RyaWdnZXJQb2ludGVyRG93blBvNC55KSAhPT0gbnVsbCAmJiBfdHJpZ2dlclBvaW50ZXJEb3duUG8zICE9PSB2b2lkIDAgPyBfdHJpZ2dlclBvaW50ZXJEb3duUG8zIDogMCkpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVQb2ludGVyVXAgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBvaW50ZXIgaGFzbid0IG1vdmVkIGJ5IGEgY2VydGFpbiB0aHJlc2hvbGQgdGhlbiB3ZSBwcmV2ZW50IHNlbGVjdGluZyBpdGVtIG9uIGBwb2ludGVydXBgLlxuICAgICAgICAgICAgICAgIGlmIChwb2ludGVyTW92ZURlbHRhLnggPD0gMTAgJiYgcG9pbnRlck1vdmVEZWx0YS55IDw9IDEwKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGVsc2UgLy8gb3RoZXJ3aXNlLCBpZiB0aGUgZXZlbnQgd2FzIG91dHNpZGUgdGhlIGNvbnRlbnQsIGNsb3NlLlxuICAgICAgICAgICAgICAgIGlmICghY29udGVudC5jb250YWlucyhldmVudC50YXJnZXQpKSBvbk9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgaGFuZGxlUG9pbnRlck1vdmUpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJQb2ludGVyRG93blBvc1JlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIGhhbmRsZVBvaW50ZXJNb3ZlKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBoYW5kbGVQb2ludGVyVXAsIHtcbiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVQb2ludGVyTW92ZSk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIG9uT3BlbkNoYW5nZSxcbiAgICAgICAgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmXG4gICAgXSk7XG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBjbG9zZSA9ICgpPT5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgICAgIDtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBjbG9zZSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjbG9zZSk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCBjbG9zZSk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2xvc2UpO1xuICAgICAgICB9O1xuICAgIH0sIFtcbiAgICAgICAgb25PcGVuQ2hhbmdlXG4gICAgXSk7XG4gICAgY29uc3QgW3NlYXJjaFJlZiwgaGFuZGxlVHlwZWFoZWFkU2VhcmNoXSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VUeXBlYWhlYWRTZWFyY2goKHNlYXJjaCk9PntcbiAgICAgICAgY29uc3QgZW5hYmxlZEl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pPT4haXRlbS5kaXNhYmxlZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGVuYWJsZWRJdGVtcy5maW5kKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBuZXh0SXRlbSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRmaW5kTmV4dEl0ZW0oZW5hYmxlZEl0ZW1zLCBzZWFyY2gsIGN1cnJlbnRJdGVtKTtcbiAgICAgICAgaWYgKG5leHRJdGVtKSAvKipcbiAgICAgICAqIEltcGVyYXRpdmUgZm9jdXMgZHVyaW5nIGtleWRvd24gaXMgcmlza3kgc28gd2UgcHJldmVudCBSZWFjdCdzIGJhdGNoaW5nIHVwZGF0ZXNcbiAgICAgICAqIHRvIGF2b2lkIHBvdGVudGlhbCBidWdzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAzMzJcbiAgICAgICAqLyBzZXRUaW1lb3V0KCgpPT5uZXh0SXRlbS5yZWYuY3VycmVudC5mb2N1cygpXG4gICAgICAgICk7XG4gICAgfSk7XG4gICAgY29uc3QgaXRlbVJlZkNhbGxiYWNrID0gJDAxYjljJHVzZUNhbGxiYWNrKChub2RlLCB2YWx1ZSwgZGlzYWJsZWQpPT57XG4gICAgICAgIGNvbnN0IGlzRmlyc3RWYWxpZEl0ZW0gPSAhZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZi5jdXJyZW50ICYmICFkaXNhYmxlZDtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZEl0ZW0gPSBjb250ZXh0LnZhbHVlICE9PSB1bmRlZmluZWQgJiYgY29udGV4dC52YWx1ZSA9PT0gdmFsdWU7XG4gICAgICAgIGlmIChpc1NlbGVjdGVkSXRlbSB8fCBpc0ZpcnN0VmFsaWRJdGVtKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZEl0ZW0obm9kZSk7XG4gICAgICAgICAgICBpZiAoaXNGaXJzdFZhbGlkSXRlbSkgZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGV4dC52YWx1ZVxuICAgIF0pO1xuICAgIGNvbnN0IGhhbmRsZUl0ZW1MZWF2ZSA9ICQwMWI5YyR1c2VDYWxsYmFjaygoKT0+Y29udGVudCA9PT0gbnVsbCB8fCBjb250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZW50LmZvY3VzKClcbiAgICAsIFtcbiAgICAgICAgY29udGVudFxuICAgIF0pO1xuICAgIGNvbnN0IGl0ZW1UZXh0UmVmQ2FsbGJhY2sgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKG5vZGUsIHZhbHVlLCBkaXNhYmxlZCk9PntcbiAgICAgICAgY29uc3QgaXNGaXJzdFZhbGlkSXRlbSA9ICFmaXJzdFZhbGlkSXRlbUZvdW5kUmVmLmN1cnJlbnQgJiYgIWRpc2FibGVkO1xuICAgICAgICBjb25zdCBpc1NlbGVjdGVkSXRlbSA9IGNvbnRleHQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBjb250ZXh0LnZhbHVlID09PSB2YWx1ZTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRJdGVtIHx8IGlzRmlyc3RWYWxpZEl0ZW0pIHNldFNlbGVjdGVkSXRlbVRleHQobm9kZSk7XG4gICAgfSwgW1xuICAgICAgICBjb250ZXh0LnZhbHVlXG4gICAgXSk7XG4gICAgY29uc3QgU2VsZWN0UG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gJ3BvcHBlcicgPyAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UG9wcGVyUG9zaXRpb24gOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbjsgLy8gU2lsZW50bHkgaWdub3JlIHByb3BzIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgYFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb25gXG4gICAgY29uc3QgcG9wcGVyQ29udGVudFByb3BzID0gU2VsZWN0UG9zaXRpb24gPT09ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiA/IHtcbiAgICAgICAgc2lkZTogc2lkZSxcbiAgICAgICAgc2lkZU9mZnNldDogc2lkZU9mZnNldCxcbiAgICAgICAgYWxpZ246IGFsaWduLFxuICAgICAgICBhbGlnbk9mZnNldDogYWxpZ25PZmZzZXQsXG4gICAgICAgIGFycm93UGFkZGluZzogYXJyb3dQYWRkaW5nLFxuICAgICAgICBjb2xsaXNpb25Cb3VuZGFyeTogY29sbGlzaW9uQm91bmRhcnksXG4gICAgICAgIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmcsXG4gICAgICAgIHN0aWNreTogc3RpY2t5LFxuICAgICAgICBoaWRlV2hlbkRldGFjaGVkOiBoaWRlV2hlbkRldGFjaGVkLFxuICAgICAgICBhdm9pZENvbGxpc2lvbnM6IGF2b2lkQ29sbGlzaW9uc1xuICAgIH0gOiB7fTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0LFxuICAgICAgICBjb250ZW50OiBjb250ZW50LFxuICAgICAgICB2aWV3cG9ydDogdmlld3BvcnQsXG4gICAgICAgIG9uVmlld3BvcnRDaGFuZ2U6IHNldFZpZXdwb3J0LFxuICAgICAgICBpdGVtUmVmQ2FsbGJhY2s6IGl0ZW1SZWZDYWxsYmFjayxcbiAgICAgICAgc2VsZWN0ZWRJdGVtOiBzZWxlY3RlZEl0ZW0sXG4gICAgICAgIG9uSXRlbUxlYXZlOiBoYW5kbGVJdGVtTGVhdmUsXG4gICAgICAgIGl0ZW1UZXh0UmVmQ2FsbGJhY2s6IGl0ZW1UZXh0UmVmQ2FsbGJhY2ssXG4gICAgICAgIGZvY3VzU2VsZWN0ZWRJdGVtOiBmb2N1c1NlbGVjdGVkSXRlbSxcbiAgICAgICAgc2VsZWN0ZWRJdGVtVGV4dDogc2VsZWN0ZWRJdGVtVGV4dCxcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgICBpc1Bvc2l0aW9uZWQ6IGlzUG9zaXRpb25lZCxcbiAgICAgICAgc2VhcmNoUmVmOiBzZWFyY2hSZWZcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRSZW1vdmVTY3JvbGwsIHtcbiAgICAgICAgYXM6ICQwMWI5YyRTbG90LFxuICAgICAgICBhbGxvd1BpbmNoWm9vbTogdHJ1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEZvY3VzU2NvcGUsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSAvLyB3ZSBtYWtlIHN1cmUgd2UncmUgbm90IHRyYXBwaW5nIG9uY2UgaXQncyBiZWVuIGNsb3NlZFxuICAgICAgICAsXG4gICAgICAgIHRyYXBwZWQ6IGNvbnRleHQub3BlbixcbiAgICAgICAgb25Nb3VudEF1dG9Gb2N1czogKGV2ZW50KT0+e1xuICAgICAgICAgICAgLy8gd2UgcHJldmVudCBvcGVuIGF1dG9mb2N1cyBiZWNhdXNlIHdlIG1hbnVhbGx5IGZvY3VzIHRoZSBzZWxlY3RlZCBpdGVtXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9LFxuICAgICAgICBvblVubW91bnRBdXRvRm9jdXM6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhvbkNsb3NlQXV0b0ZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX2NvbnRleHQkdHJpZ2dlcjtcbiAgICAgICAgICAgIChfY29udGV4dCR0cmlnZ2VyID0gY29udGV4dC50cmlnZ2VyKSA9PT0gbnVsbCB8fCBfY29udGV4dCR0cmlnZ2VyID09PSB2b2lkIDAgfHwgX2NvbnRleHQkdHJpZ2dlci5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJERpc21pc3NhYmxlTGF5ZXIsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiB0cnVlLFxuICAgICAgICBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93bixcbiAgICAgICAgb25Qb2ludGVyRG93bk91dHNpZGU6IG9uUG9pbnRlckRvd25PdXRzaWRlIC8vIFdoZW4gZm9jdXMgaXMgdHJhcHBlZCwgYSBmb2N1c291dCBldmVudCBtYXkgc3RpbGwgaGFwcGVuLlxuICAgICAgICAsXG4gICAgICAgIG9uRm9jdXNPdXRzaWRlOiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICxcbiAgICAgICAgb25EaXNtaXNzOiAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChTZWxlY3RQb3NpdGlvbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJsaXN0Ym94XCIsXG4gICAgICAgIGlkOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGNvbnRleHQub3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnLFxuICAgICAgICBkaXI6IGNvbnRleHQuZGlyLFxuICAgICAgICBvbkNvbnRleHRNZW51OiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfSwgY29udGVudFByb3BzLCBwb3BwZXJDb250ZW50UHJvcHMsIHtcbiAgICAgICAgb25QbGFjZWQ6ICgpPT5zZXRJc1Bvc2l0aW9uZWQodHJ1ZSlcbiAgICAgICAgLFxuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC8vIGZsZXggbGF5b3V0IHNvIHdlIGNhbiBwbGFjZSB0aGUgc2Nyb2xsIGJ1dHRvbnMgcHJvcGVybHlcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgLy8gcmVzZXQgdGhlIG91dGxpbmUgYnkgZGVmYXVsdCBhcyB0aGUgY29udGVudCBNQVkgZ2V0IGZvY3VzZWRcbiAgICAgICAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgICAgICAgIC4uLmNvbnRlbnRQcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvbktleURvd246ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhjb250ZW50UHJvcHMub25LZXlEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBjb25zdCBpc01vZGlmaWVyS2V5ID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQubWV0YUtleTsgLy8gc2VsZWN0IHNob3VsZCBub3QgYmUgbmF2aWdhdGVkIHVzaW5nIHRhYiBrZXkgc28gd2UgcHJldmVudCBpdFxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoIWlzTW9kaWZpZXJLZXkgJiYgZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSkgaGFuZGxlVHlwZWFoZWFkU2VhcmNoKGV2ZW50LmtleSk7XG4gICAgICAgICAgICBpZiAoW1xuICAgICAgICAgICAgICAgICdBcnJvd1VwJyxcbiAgICAgICAgICAgICAgICAnQXJyb3dEb3duJyxcbiAgICAgICAgICAgICAgICAnSG9tZScsXG4gICAgICAgICAgICAgICAgJ0VuZCdcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pPT4haXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgbGV0IGNhbmRpZGF0ZU5vZGVzID0gaXRlbXMubWFwKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKFtcbiAgICAgICAgICAgICAgICAgICAgJ0Fycm93VXAnLFxuICAgICAgICAgICAgICAgICAgICAnRW5kJ1xuICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQua2V5KSkgY2FuZGlkYXRlTm9kZXMgPSBjYW5kaWRhdGVOb2Rlcy5zbGljZSgpLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoW1xuICAgICAgICAgICAgICAgICAgICAnQXJyb3dVcCcsXG4gICAgICAgICAgICAgICAgICAgICdBcnJvd0Rvd24nXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBjYW5kaWRhdGVOb2Rlcy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlTm9kZXMgPSBjYW5kaWRhdGVOb2Rlcy5zbGljZShjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGVyYXRpdmUgZm9jdXMgZHVyaW5nIGtleWRvd24gaXMgcmlza3kgc28gd2UgcHJldmVudCBSZWFjdCdzIGJhdGNoaW5nIHVwZGF0ZXNcbiAgICAgICAgICogdG8gYXZvaWQgcG90ZW50aWFsIGJ1Z3MuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8yMDMzMlxuICAgICAgICAgKi8gc2V0VGltZW91dCgoKT0+Zm9jdXNGaXJzdChjYW5kaWRhdGVOb2RlcylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpKSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50SW1wbCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9JTVBMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9BTElHTkVEX1BPU0lUSU9OX05BTUUgPSAnU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbiA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgb25QbGFjZWQ6IG9uUGxhY2VkICwgLi4ucG9wcGVyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbY29udGVudFdyYXBwZXIsIHNldENvbnRlbnRXcmFwcGVyXSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0Q29udGVudChub2RlKVxuICAgICk7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBzaG91bGRFeHBhbmRPblNjcm9sbFJlZiA9ICQwMWI5YyR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHNob3VsZFJlcG9zaXRpb25SZWYgPSAkMDFiOWMkdXNlUmVmKHRydWUpO1xuICAgIGNvbnN0IHsgdmlld3BvcnQ6IHZpZXdwb3J0ICwgc2VsZWN0ZWRJdGVtOiBzZWxlY3RlZEl0ZW0gLCBzZWxlY3RlZEl0ZW1UZXh0OiBzZWxlY3RlZEl0ZW1UZXh0ICwgZm9jdXNTZWxlY3RlZEl0ZW06IGZvY3VzU2VsZWN0ZWRJdGVtICB9ID0gY29udGVudENvbnRleHQ7XG4gICAgY29uc3QgcG9zaXRpb24gPSAkMDFiOWMkdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgaWYgKGNvbnRleHQudHJpZ2dlciAmJiBjb250ZXh0LnZhbHVlTm9kZSAmJiBjb250ZW50V3JhcHBlciAmJiBjb250ZW50ICYmIHZpZXdwb3J0ICYmIHNlbGVjdGVkSXRlbSAmJiBzZWxlY3RlZEl0ZW1UZXh0KSB7XG4gICAgICAgICAgICBjb25zdCB0cmlnZ2VyUmVjdCA9IGNvbnRleHQudHJpZ2dlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vICBIb3Jpem9udGFsIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgY29uc3QgY29udGVudFJlY3QgPSBjb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVOb2RlUmVjdCA9IGNvbnRleHQudmFsdWVOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgaXRlbVRleHRSZWN0ID0gc2VsZWN0ZWRJdGVtVGV4dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGlmIChjb250ZXh0LmRpciAhPT0gJ3J0bCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtVGV4dE9mZnNldCA9IGl0ZW1UZXh0UmVjdC5sZWZ0IC0gY29udGVudFJlY3QubGVmdDtcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gdmFsdWVOb2RlUmVjdC5sZWZ0IC0gaXRlbVRleHRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdERlbHRhID0gdHJpZ2dlclJlY3QubGVmdCAtIGxlZnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluQ29udGVudFdpZHRoID0gdHJpZ2dlclJlY3Qud2lkdGggKyBsZWZ0RGVsdGE7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFdpZHRoID0gTWF0aC5tYXgobWluQ29udGVudFdpZHRoLCBjb250ZW50UmVjdC53aWR0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHRFZGdlID0gd2luZG93LmlubmVyV2lkdGggLSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU47XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZExlZnQgPSAkMDFiOWMkY2xhbXAobGVmdCwgW1xuICAgICAgICAgICAgICAgICAgICAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4sXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0RWRnZSAtIGNvbnRlbnRXaWR0aFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1pbldpZHRoID0gbWluQ29udGVudFdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5sZWZ0ID0gY2xhbXBlZExlZnQgKyAncHgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtVGV4dE9mZnNldCA9IGNvbnRlbnRSZWN0LnJpZ2h0IC0gaXRlbVRleHRSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gd2luZG93LmlubmVyV2lkdGggLSB2YWx1ZU5vZGVSZWN0LnJpZ2h0IC0gaXRlbVRleHRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHREZWx0YSA9IHdpbmRvdy5pbm5lcldpZHRoIC0gdHJpZ2dlclJlY3QucmlnaHQgLSByaWdodDtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5Db250ZW50V2lkdGggPSB0cmlnZ2VyUmVjdC53aWR0aCArIHJpZ2h0RGVsdGE7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFdpZHRoID0gTWF0aC5tYXgobWluQ29udGVudFdpZHRoLCBjb250ZW50UmVjdC53aWR0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdEVkZ2UgPSB3aW5kb3cuaW5uZXJXaWR0aCAtICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTjtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkUmlnaHQgPSAkMDFiOWMkY2xhbXAocmlnaHQsIFtcbiAgICAgICAgICAgICAgICAgICAgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0RWRnZSAtIGNvbnRlbnRXaWR0aFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1pbldpZHRoID0gbWluQ29udGVudFdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5yaWdodCA9IGNsYW1wZWRSaWdodCArICdweCc7XG4gICAgICAgICAgICB9IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBWZXJ0aWNhbCBwb3NpdGlvbmluZ1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZ2V0SXRlbXMoKTtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTiAqIDI7XG4gICAgICAgICAgICBjb25zdCBpdGVtc0hlaWdodCA9IHZpZXdwb3J0LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjb250ZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRCb3JkZXJUb3BXaWR0aCA9IHBhcnNlSW50KGNvbnRlbnRTdHlsZXMuYm9yZGVyVG9wV2lkdGgsIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQYWRkaW5nVG9wID0gcGFyc2VJbnQoY29udGVudFN0eWxlcy5wYWRkaW5nVG9wLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50Qm9yZGVyQm90dG9tV2lkdGggPSBwYXJzZUludChjb250ZW50U3R5bGVzLmJvcmRlckJvdHRvbVdpZHRoLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50UGFkZGluZ0JvdHRvbSA9IHBhcnNlSW50KGNvbnRlbnRTdHlsZXMucGFkZGluZ0JvdHRvbSwgMTApO1xuICAgICAgICAgICAgY29uc3QgZnVsbENvbnRlbnRIZWlnaHQgPSBjb250ZW50Qm9yZGVyVG9wV2lkdGggKyBjb250ZW50UGFkZGluZ1RvcCArIGl0ZW1zSGVpZ2h0ICsgY29udGVudFBhZGRpbmdCb3R0b20gKyBjb250ZW50Qm9yZGVyQm90dG9tV2lkdGg7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgbWluQ29udGVudEhlaWdodCA9IE1hdGgubWluKHNlbGVjdGVkSXRlbS5vZmZzZXRIZWlnaHQgKiA1LCBmdWxsQ29udGVudEhlaWdodCk7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydFN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHZpZXdwb3J0KTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0UGFkZGluZ1RvcCA9IHBhcnNlSW50KHZpZXdwb3J0U3R5bGVzLnBhZGRpbmdUb3AsIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0UGFkZGluZ0JvdHRvbSA9IHBhcnNlSW50KHZpZXdwb3J0U3R5bGVzLnBhZGRpbmdCb3R0b20sIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IHRvcEVkZ2VUb1RyaWdnZXJNaWRkbGUgPSB0cmlnZ2VyUmVjdC50b3AgKyB0cmlnZ2VyUmVjdC5oZWlnaHQgLyAyIC0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOO1xuICAgICAgICAgICAgY29uc3QgdHJpZ2dlck1pZGRsZVRvQm90dG9tRWRnZSA9IGF2YWlsYWJsZUhlaWdodCAtIHRvcEVkZ2VUb1RyaWdnZXJNaWRkbGU7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1IYWxmSGVpZ2h0ID0gc2VsZWN0ZWRJdGVtLm9mZnNldEhlaWdodCAvIDI7XG4gICAgICAgICAgICBjb25zdCBpdGVtT2Zmc2V0TWlkZGxlID0gc2VsZWN0ZWRJdGVtLm9mZnNldFRvcCArIHNlbGVjdGVkSXRlbUhhbGZIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50VG9wVG9JdGVtTWlkZGxlID0gY29udGVudEJvcmRlclRvcFdpZHRoICsgY29udGVudFBhZGRpbmdUb3AgKyBpdGVtT2Zmc2V0TWlkZGxlO1xuICAgICAgICAgICAgY29uc3QgaXRlbU1pZGRsZVRvQ29udGVudEJvdHRvbSA9IGZ1bGxDb250ZW50SGVpZ2h0IC0gY29udGVudFRvcFRvSXRlbU1pZGRsZTtcbiAgICAgICAgICAgIGNvbnN0IHdpbGxBbGlnbldpdGhvdXRUb3BPdmVyZmxvdyA9IGNvbnRlbnRUb3BUb0l0ZW1NaWRkbGUgPD0gdG9wRWRnZVRvVHJpZ2dlck1pZGRsZTtcbiAgICAgICAgICAgIGlmICh3aWxsQWxpZ25XaXRob3V0VG9wT3ZlcmZsb3cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3RJdGVtID0gc2VsZWN0ZWRJdGVtID09PSBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXS5yZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5ib3R0b20gPSBcIjBweFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0T2Zmc2V0Qm90dG9tID0gY29udGVudC5jbGllbnRIZWlnaHQgLSB2aWV3cG9ydC5vZmZzZXRUb3AgLSB2aWV3cG9ydC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZFRyaWdnZXJNaWRkbGVUb0JvdHRvbUVkZ2UgPSBNYXRoLm1heCh0cmlnZ2VyTWlkZGxlVG9Cb3R0b21FZGdlLCBzZWxlY3RlZEl0ZW1IYWxmSGVpZ2h0ICsgKGlzTGFzdEl0ZW0gPyB2aWV3cG9ydFBhZGRpbmdCb3R0b20gOiAwKSArIHZpZXdwb3J0T2Zmc2V0Qm90dG9tICsgY29udGVudEJvcmRlckJvdHRvbVdpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBjb250ZW50VG9wVG9JdGVtTWlkZGxlICsgY2xhbXBlZFRyaWdnZXJNaWRkbGVUb0JvdHRvbUVkZ2U7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNGaXJzdEl0ZW0gPSBzZWxlY3RlZEl0ZW0gPT09IGl0ZW1zWzBdLnJlZi5jdXJyZW50O1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLnRvcCA9IFwiMHB4XCI7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZFRvcEVkZ2VUb1RyaWdnZXJNaWRkbGUgPSBNYXRoLm1heCh0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlLCBjb250ZW50Qm9yZGVyVG9wV2lkdGggKyB2aWV3cG9ydC5vZmZzZXRUb3AgKyAoaXNGaXJzdEl0ZW0gPyB2aWV3cG9ydFBhZGRpbmdUb3AgOiAwKSArIHNlbGVjdGVkSXRlbUhhbGZIZWlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGNsYW1wZWRUb3BFZGdlVG9UcmlnZ2VyTWlkZGxlICsgaXRlbU1pZGRsZVRvQ29udGVudEJvdHRvbTtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgICAgIHZpZXdwb3J0LnNjcm9sbFRvcCA9IGNvbnRlbnRUb3BUb0l0ZW1NaWRkbGUgLSB0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlICsgdmlld3BvcnQub2Zmc2V0VG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubWFyZ2luID0gYCR7JGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOfXB4IDBgO1xuICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubWluSGVpZ2h0ID0gbWluQ29udGVudEhlaWdodCArICdweCc7XG4gICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5tYXhIZWlnaHQgPSBhdmFpbGFibGVIZWlnaHQgKyAncHgnOyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgb25QbGFjZWQgPT09IG51bGwgfHwgb25QbGFjZWQgPT09IHZvaWQgMCB8fCBvblBsYWNlZCgpOyAvLyB3ZSBkb24ndCB3YW50IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiBhZGp1c3RtZW50IHRvIHRyaWdnZXIgXCJleHBhbmQgb24gc2Nyb2xsXCJcbiAgICAgICAgICAgIC8vIHNvIHdlIGV4cGxpY2l0bHkgdHVybiBpdCBvbiBvbmx5IGFmdGVyIHRoZXkndmUgcmVnaXN0ZXJlZC5cbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+c2hvdWxkRXhwYW5kT25TY3JvbGxSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGdldEl0ZW1zLFxuICAgICAgICBjb250ZXh0LnRyaWdnZXIsXG4gICAgICAgIGNvbnRleHQudmFsdWVOb2RlLFxuICAgICAgICBjb250ZW50V3JhcHBlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgdmlld3BvcnQsXG4gICAgICAgIHNlbGVjdGVkSXRlbSxcbiAgICAgICAgc2VsZWN0ZWRJdGVtVGV4dCxcbiAgICAgICAgY29udGV4dC5kaXIsXG4gICAgICAgIG9uUGxhY2VkXG4gICAgXSk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+cG9zaXRpb24oKVxuICAgICwgW1xuICAgICAgICBwb3NpdGlvblxuICAgIF0pOyAvLyBjb3B5IHotaW5kZXggZnJvbSBjb250ZW50IHRvIHdyYXBwZXJcbiAgICBjb25zdCBbY29udGVudFpJbmRleCwgc2V0Q29udGVudFpJbmRleF0gPSAkMDFiOWMkdXNlU3RhdGUoKTtcbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50KSBzZXRDb250ZW50WkluZGV4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbnRlbnQpLnpJbmRleCk7XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50XG4gICAgXSk7IC8vIFdoZW4gdGhlIHZpZXdwb3J0IGJlY29tZXMgc2Nyb2xsYWJsZSBhdCB0aGUgdG9wLCB0aGUgc2Nyb2xsIHVwIGJ1dHRvbiB3aWxsIG1vdW50LlxuICAgIC8vIEJlY2F1c2UgaXQgaXMgcGFydCBvZiB0aGUgbm9ybWFsIGZsb3csIGl0IHdpbGwgcHVzaCBkb3duIHRoZSB2aWV3cG9ydCwgdGh1cyB0aHJvd2luZyBvdXJcbiAgICAvLyB0cmlnZ2VyID0+IHNlbGVjdGVkSXRlbSBhbGlnbm1lbnQgb2ZmIGJ5IHRoZSBhbW91bnQgdGhlIHZpZXdwb3J0IHdhcyBwdXNoZWQgZG93bi5cbiAgICAvLyBXZSB3YWl0IGZvciB0aGlzIHRvIGhhcHBlbiBhbmQgdGhlbiByZS1ydW4gdGhlIHBvc2l0aW5pbmcgbG9naWMgb25lIG1vcmUgdGltZSB0byBhY2NvdW50IGZvciBpdC5cbiAgICBjb25zdCBoYW5kbGVTY3JvbGxCdXR0b25DaGFuZ2UgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKG5vZGUpPT57XG4gICAgICAgIGlmIChub2RlICYmIHNob3VsZFJlcG9zaXRpb25SZWYuY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcG9zaXRpb24oKTtcbiAgICAgICAgICAgIGZvY3VzU2VsZWN0ZWRJdGVtID09PSBudWxsIHx8IGZvY3VzU2VsZWN0ZWRJdGVtID09PSB2b2lkIDAgfHwgZm9jdXNTZWxlY3RlZEl0ZW0oKTtcbiAgICAgICAgICAgIHNob3VsZFJlcG9zaXRpb25SZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgZm9jdXNTZWxlY3RlZEl0ZW1cbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Vmlld3BvcnRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgY29udGVudFdyYXBwZXI6IGNvbnRlbnRXcmFwcGVyLFxuICAgICAgICBzaG91bGRFeHBhbmRPblNjcm9sbFJlZjogc2hvdWxkRXhwYW5kT25TY3JvbGxSZWYsXG4gICAgICAgIG9uU2Nyb2xsQnV0dG9uQ2hhbmdlOiBoYW5kbGVTY3JvbGxCdXR0b25DaGFuZ2VcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgcmVmOiBzZXRDb250ZW50V3JhcHBlcixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgICB6SW5kZXg6IGNvbnRlbnRaSW5kZXhcbiAgICAgICAgfVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGdldCB0aGUgaGVpZ2h0IG9mIHRoZSBjb250ZW50LCBpdCBpbmNsdWRlcyBib3JkZXJzLiBJZiB3ZSB3ZXJlIHRvIHNldFxuICAgICAgICAgICAgLy8gdGhlIGhlaWdodCB3aXRob3V0IGhhdmluZyBgYm94U2l6aW5nOiAnYm9yZGVyLWJveCdgIGl0IHdvdWxkIGJlIHRvbyBiaWcuXG4gICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoZSBjb250ZW50IGRvZXNuJ3QgZ2V0IHRhbGxlciB0aGFuIHRoZSB3cmFwcGVyXG4gICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIC4uLnBvcHBlclByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX0FMSUdORURfUE9TSVRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RQb3BwZXJQb3NpdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9QUEVSX1BPU0lUSU9OX05BTUUgPSAnU2VsZWN0UG9wcGVyUG9zaXRpb24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFBvcHBlclBvc2l0aW9uID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBhbGlnbjogYWxpZ24gPSAnc3RhcnQnICwgY29sbGlzaW9uUGFkZGluZzogY29sbGlzaW9uUGFkZGluZyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTiAsIC4uLnBvcHBlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlU2VsZWN0KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkQ29udGVudCwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwb3BwZXJTY29wZSwgcG9wcGVyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIGFsaWduOiBhbGlnbixcbiAgICAgICAgY29sbGlzaW9uUGFkZGluZzogY29sbGlzaW9uUGFkZGluZyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC8vIEVuc3VyZSBib3JkZXItYm94IGZvciBmbG9hdGluZy11aSBjYWxjdWxhdGlvbnNcbiAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAgICAgLi4ucG9wcGVyUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAnLS1yYWRpeC1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luJzogJ3ZhcigtLXJhZGl4LXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luKScsXG4gICAgICAgICAgICAnLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtd2lkdGgnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci13aWR0aCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0JzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3ItaGVpZ2h0KSdcbiAgICAgICAgfVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9QUEVSX1BPU0lUSU9OX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0Vmlld3BvcnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RWaWV3cG9ydFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Vmlld3BvcnRDb250ZXh0XSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUsIHt9KTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FID0gJ1NlbGVjdFZpZXdwb3J0JztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5ZWQ2ZTdiNDAyNDhkMzZkID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi52aWV3cG9ydFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVklFV1BPUlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3Qgdmlld3BvcnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVklFV1BPUlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRlbnRDb250ZXh0Lm9uVmlld3BvcnRDaGFuZ2UpO1xuICAgIGNvbnN0IHByZXZTY3JvbGxUb3BSZWYgPSAkMDFiOWMkdXNlUmVmKDApO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRGcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgIF9faHRtbDogYFtkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydF17c2Nyb2xsYmFyLXdpZHRoOm5vbmU7LW1zLW92ZXJmbG93LXN0eWxlOm5vbmU7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7fVtkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydF06Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX1gXG4gICAgICAgIH1cbiAgICB9KSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ29sbGVjdGlvbi5TbG90LCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0XG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydFwiOiBcIlwiLFxuICAgICAgICByb2xlOiBcInByZXNlbnRhdGlvblwiXG4gICAgfSwgdmlld3BvcnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC8vIHdlIHVzZSBwb3NpdGlvbjogJ3JlbGF0aXZlJyBoZXJlIG9uIHRoZSBgdmlld3BvcnRgIHNvIHRoYXQgd2hlbiB3ZSBjYWxsXG4gICAgICAgICAgICAvLyBgc2VsZWN0ZWRJdGVtLm9mZnNldFRvcGAgaW4gY2FsY3VsYXRpb25zLCB0aGUgb2Zmc2V0IGlzIHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydFxuICAgICAgICAgICAgLy8gKGluZGVwZW5kZW50IG9mIHRoZSBzY3JvbGxVcEJ1dHRvbikuXG4gICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgIGZsZXg6IDEsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgICAgICAgICAgLi4udmlld3BvcnRQcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvblNjcm9sbDogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHZpZXdwb3J0UHJvcHMub25TY3JvbGwsIChldmVudCk9PntcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIGNvbnN0IHsgY29udGVudFdyYXBwZXI6IGNvbnRlbnRXcmFwcGVyICwgc2hvdWxkRXhwYW5kT25TY3JvbGxSZWY6IHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmICB9ID0gdmlld3BvcnRDb250ZXh0O1xuICAgICAgICAgICAgaWYgKHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmICE9PSBudWxsICYmIHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmICE9PSB2b2lkIDAgJiYgc2hvdWxkRXhwYW5kT25TY3JvbGxSZWYuY3VycmVudCAmJiBjb250ZW50V3JhcHBlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbGVkQnkgPSBNYXRoLmFicyhwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgLSB2aWV3cG9ydC5zY3JvbGxUb3ApO1xuICAgICAgICAgICAgICAgIGlmIChzY3JvbGxlZEJ5ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdmFpbGFibGVIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4gKiAyO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjc3NNaW5IZWlnaHQgPSBwYXJzZUZsb2F0KGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1pbkhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNzc0hlaWdodCA9IHBhcnNlRmxvYXQoY29udGVudFdyYXBwZXIuc3R5bGUuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldkhlaWdodCA9IE1hdGgubWF4KGNzc01pbkhlaWdodCwgY3NzSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZIZWlnaHQgPCBhdmFpbGFibGVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRIZWlnaHQgPSBwcmV2SGVpZ2h0ICsgc2Nyb2xsZWRCeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWROZXh0SGVpZ2h0ID0gTWF0aC5taW4oYXZhaWxhYmxlSGVpZ2h0LCBuZXh0SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodERpZmYgPSBuZXh0SGVpZ2h0IC0gY2xhbXBlZE5leHRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5oZWlnaHQgPSBjbGFtcGVkTmV4dEhlaWdodCArICdweCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFdyYXBwZXIuc3R5bGUuYm90dG9tID09PSAnMHB4Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0LnNjcm9sbFRvcCA9IGhlaWdodERpZmYgPiAwID8gaGVpZ2h0RGlmZiA6IDA7IC8vIGVuc3VyZSB0aGUgY29udGVudCBzdGF5cyBwaW5uZWQgdG8gdGhlIGJvdHRvbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2ZsZXgtZW5kJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByZXZTY3JvbGxUb3BSZWYuY3VycmVudCA9IHZpZXdwb3J0LnNjcm9sbFRvcDtcbiAgICAgICAgfSlcbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5ZWQ2ZTdiNDAyNDhkMzZkLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEdyb3VwXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRHUk9VUF9OQU1FID0gJ1NlbGVjdEdyb3VwJztcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0R3JvdXBDb250ZXh0UHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RHcm91cENvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEdST1VQX05BTUUpO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVlMjVhMzM0YzU1ZGUxZjQgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIC4uLmdyb3VwUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGdyb3VwSWQgPSAkMDFiOWMkdXNlSWQoKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0R3JvdXBDb250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIGlkOiBncm91cElkXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJncm91cFwiLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBncm91cElkXG4gICAgfSwgZ3JvdXBQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWUyNWEzMzRjNTVkZTFmNCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkR1JPVVBfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RMYWJlbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkTEFCRUxfTkFNRSA9ICdTZWxlY3RMYWJlbCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjY3MzM4ZDI5YmQ5NzJmOCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgLi4ubGFiZWxQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZ3JvdXBDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEdyb3VwQ29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkTEFCRUxfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGlkOiBncm91cENvbnRleHQuaWRcbiAgICB9LCBsYWJlbFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGY2NzMzOGQyOWJkOTcyZjgsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJExBQkVMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SXRlbVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FID0gJ1NlbGVjdEl0ZW0nO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQ29udGV4dFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0SXRlbUNvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMTNlZjQ4YTkzNDIzMDg5NiA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgdmFsdWU6IHZhbHVlICwgZGlzYWJsZWQ6IGRpc2FibGVkID0gZmFsc2UgLCB0ZXh0VmFsdWU6IHRleHRWYWx1ZVByb3AgLCAuLi5pdGVtUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gY29udGV4dC52YWx1ZSA9PT0gdmFsdWU7XG4gICAgY29uc3QgW3RleHRWYWx1ZSwgc2V0VGV4dFZhbHVlXSA9ICQwMWI5YyR1c2VTdGF0ZSh0ZXh0VmFsdWVQcm9wICE9PSBudWxsICYmIHRleHRWYWx1ZVByb3AgIT09IHZvaWQgMCA/IHRleHRWYWx1ZVByb3AgOiAnJyk7XG4gICAgY29uc3QgW2lzRm9jdXNlZCwgc2V0SXNGb2N1c2VkXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+e1xuICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JGl0ZW1SO1xuICAgICAgICByZXR1cm4gKF9jb250ZW50Q29udGV4dCRpdGVtUiA9IGNvbnRlbnRDb250ZXh0Lml0ZW1SZWZDYWxsYmFjaykgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JGl0ZW1SID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudENvbnRleHQkaXRlbVIuY2FsbChjb250ZW50Q29udGV4dCwgbm9kZSwgdmFsdWUsIGRpc2FibGVkKTtcbiAgICB9KTtcbiAgICBjb25zdCB0ZXh0SWQgPSAkMDFiOWMkdXNlSWQoKTtcbiAgICBjb25zdCBoYW5kbGVTZWxlY3QgPSAoKT0+e1xuICAgICAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICAgICAgICBjb250ZXh0Lm9uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgY29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUNvbnRleHRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIHRleHRJZDogdGV4dElkLFxuICAgICAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgICAgICBvbkl0ZW1UZXh0Q2hhbmdlOiAkMDFiOWMkdXNlQ2FsbGJhY2soKG5vZGUpPT57XG4gICAgICAgICAgICBzZXRUZXh0VmFsdWUoKHByZXZUZXh0VmFsdWUpPT57XG4gICAgICAgICAgICAgICAgdmFyIF9ub2RlJHRleHRDb250ZW50O1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2VGV4dFZhbHVlIHx8ICgoX25vZGUkdGV4dENvbnRlbnQgPSBub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUudGV4dENvbnRlbnQpICE9PSBudWxsICYmIF9ub2RlJHRleHRDb250ZW50ICE9PSB2b2lkIDAgPyBfbm9kZSR0ZXh0Q29udGVudCA6ICcnKS50cmltKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgW10pXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ29sbGVjdGlvbi5JdGVtU2xvdCwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIHRleHRWYWx1ZTogdGV4dFZhbHVlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJvcHRpb25cIixcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogdGV4dElkLFxuICAgICAgICBcImRhdGEtaGlnaGxpZ2h0ZWRcIjogaXNGb2N1c2VkID8gJycgOiB1bmRlZmluZWQgLy8gYGlzRm9jdXNlZGAgY2F2ZWF0IGZpeGVzIHN0dXR0ZXJpbmcgaW4gVm9pY2VPdmVyXG4gICAgICAgICxcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IGlzU2VsZWN0ZWQgJiYgaXNGb2N1c2VkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogaXNTZWxlY3RlZCA/ICdjaGVja2VkJyA6ICd1bmNoZWNrZWQnLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQgfHwgdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgdGFiSW5kZXg6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogLTFcbiAgICB9LCBpdGVtUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uRm9jdXM6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25Gb2N1cywgKCk9PnNldElzRm9jdXNlZCh0cnVlKVxuICAgICAgICApLFxuICAgICAgICBvbkJsdXI6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25CbHVyLCAoKT0+c2V0SXNGb2N1c2VkKGZhbHNlKVxuICAgICAgICApLFxuICAgICAgICBvblBvaW50ZXJVcDogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vblBvaW50ZXJVcCwgaGFuZGxlU2VsZWN0KSxcbiAgICAgICAgb25Qb2ludGVyTW92ZTogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vblBvaW50ZXJNb3ZlLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JG9uSXRlO1xuICAgICAgICAgICAgICAgIChfY29udGVudENvbnRleHQkb25JdGUgPSBjb250ZW50Q29udGV4dC5vbkl0ZW1MZWF2ZSkgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlID09PSB2b2lkIDAgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlLmNhbGwoY29udGVudENvbnRleHQpO1xuICAgICAgICAgICAgfSBlbHNlIC8vIGV2ZW4gdGhvdWdoIHNhZmFyaSBkb2Vzbid0IHN1cHBvcnQgdGhpcyBvcHRpb24sIGl0J3MgYWNjZXB0YWJsZVxuICAgICAgICAgICAgLy8gYXMgaXQgb25seSBtZWFucyBpdCBtaWdodCBzY3JvbGwgYSBmZXcgcGl4ZWxzIHdoZW4gdXNpbmcgdGhlIHBvaW50ZXIuXG4gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmZvY3VzKHtcbiAgICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckxlYXZlOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uUG9pbnRlckxlYXZlLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQuY3VycmVudFRhcmdldCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHZhciBfY29udGVudENvbnRleHQkb25JdGUyO1xuICAgICAgICAgICAgICAgIChfY29udGVudENvbnRleHQkb25JdGUyID0gY29udGVudENvbnRleHQub25JdGVtTGVhdmUpID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZTIgPT09IHZvaWQgMCB8fCBfY29udGVudENvbnRleHQkb25JdGUyLmNhbGwoY29udGVudENvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgb25LZXlEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRzZWFyYztcbiAgICAgICAgICAgIGNvbnN0IGlzVHlwaW5nQWhlYWQgPSAoKF9jb250ZW50Q29udGV4dCRzZWFyYyA9IGNvbnRlbnRDb250ZXh0LnNlYXJjaFJlZikgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JHNlYXJjID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudENvbnRleHQkc2VhcmMuY3VycmVudCkgIT09ICcnO1xuICAgICAgICAgICAgaWYgKGlzVHlwaW5nQWhlYWQgJiYgZXZlbnQua2V5ID09PSAnICcpIHJldHVybjtcbiAgICAgICAgICAgIGlmICgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUSU9OX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSkgaGFuZGxlU2VsZWN0KCk7IC8vIHByZXZlbnQgcGFnZSBzY3JvbGwgaWYgdXNpbmcgdGhlIHNwYWNlIGtleSB0byBzZWxlY3QgYW4gaXRlbVxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KVxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTYsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RJdGVtVGV4dFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUgPSAnU2VsZWN0SXRlbVRleHQnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDkgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIC8vIFdlIGlnbm9yZSBgY2xhc3NOYW1lYCBhbmQgYHN0eWxlYCBhcyB0aGlzIHBhcnQgc2hvdWxkbid0IGJlIHN0eWxlZC5cbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBjbGFzc05hbWU6IGNsYXNzTmFtZSAsIHN0eWxlOiBzdHlsZSAsIC4uLml0ZW1UZXh0UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX1RFWFRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgaXRlbUNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0SXRlbUNvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBuYXRpdmVPcHRpb25zQ29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3ROYXRpdmVPcHRpb25zQ29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtpdGVtVGV4dE5vZGUsIHNldEl0ZW1UZXh0Tm9kZV0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0SXRlbVRleHROb2RlKG5vZGUpXG4gICAgLCBpdGVtQ29udGV4dC5vbkl0ZW1UZXh0Q2hhbmdlLCAobm9kZSk9PntcbiAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRpdGVtVDtcbiAgICAgICAgcmV0dXJuIChfY29udGVudENvbnRleHQkaXRlbVQgPSBjb250ZW50Q29udGV4dC5pdGVtVGV4dFJlZkNhbGxiYWNrKSA9PT0gbnVsbCB8fCBfY29udGVudENvbnRleHQkaXRlbVQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZW50Q29udGV4dCRpdGVtVC5jYWxsKGNvbnRlbnRDb250ZXh0LCBub2RlLCBpdGVtQ29udGV4dC52YWx1ZSwgaXRlbUNvbnRleHQuZGlzYWJsZWQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHRleHRDb250ZW50ID0gaXRlbVRleHROb2RlID09PSBudWxsIHx8IGl0ZW1UZXh0Tm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbVRleHROb2RlLnRleHRDb250ZW50O1xuICAgIGNvbnN0IG5hdGl2ZU9wdGlvbiA9ICQwMWI5YyR1c2VNZW1vKCgpPT4vKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIHtcbiAgICAgICAgICAgIGtleTogaXRlbUNvbnRleHQudmFsdWUsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbUNvbnRleHQudmFsdWUsXG4gICAgICAgICAgICBkaXNhYmxlZDogaXRlbUNvbnRleHQuZGlzYWJsZWRcbiAgICAgICAgfSwgdGV4dENvbnRlbnQpXG4gICAgLCBbXG4gICAgICAgIGl0ZW1Db250ZXh0LmRpc2FibGVkLFxuICAgICAgICBpdGVtQ29udGV4dC52YWx1ZSxcbiAgICAgICAgdGV4dENvbnRlbnRcbiAgICBdKTtcbiAgICBjb25zdCB7IG9uTmF0aXZlT3B0aW9uQWRkOiBvbk5hdGl2ZU9wdGlvbkFkZCAsIG9uTmF0aXZlT3B0aW9uUmVtb3ZlOiBvbk5hdGl2ZU9wdGlvblJlbW92ZSAgfSA9IG5hdGl2ZU9wdGlvbnNDb250ZXh0O1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgb25OYXRpdmVPcHRpb25BZGQobmF0aXZlT3B0aW9uKTtcbiAgICAgICAgcmV0dXJuICgpPT5vbk5hdGl2ZU9wdGlvblJlbW92ZShuYXRpdmVPcHRpb24pXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG9uTmF0aXZlT3B0aW9uQWRkLFxuICAgICAgICBvbk5hdGl2ZU9wdGlvblJlbW92ZSxcbiAgICAgICAgbmF0aXZlT3B0aW9uXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuc3BhbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgaWQ6IGl0ZW1Db250ZXh0LnRleHRJZFxuICAgIH0sIGl0ZW1UZXh0UHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSksIGl0ZW1Db250ZXh0LmlzU2VsZWN0ZWQgJiYgY29udGV4dC52YWx1ZU5vZGUgJiYgIWNvbnRleHQudmFsdWVOb2RlSGFzQ2hpbGRyZW4gPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVQb3J0YWwoaXRlbVRleHRQcm9wcy5jaGlsZHJlbiwgY29udGV4dC52YWx1ZU5vZGUpIDogbnVsbCk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzU3MmZiMGZiODIxZmY0OSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SXRlbUluZGljYXRvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9JTkRJQ0FUT1JfTkFNRSA9ICdTZWxlY3RJdGVtSW5kaWNhdG9yJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2YjkxOThkZTE5YWNjZmU2ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi5pdGVtSW5kaWNhdG9yUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGl0ZW1Db250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEl0ZW1Db250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX0lORElDQVRPUl9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICByZXR1cm4gaXRlbUNvbnRleHQuaXNTZWxlY3RlZCA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5zcGFuLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICB9LCBpdGVtSW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDZiOTE5OGRlMTlhY2NmZTYsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fSU5ESUNBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0U2Nyb2xsVXBCdXR0b25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSA9ICdTZWxlY3RTY3JvbGxVcEJ1dHRvbic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDgxMTc5Mjc2NThhZjZkNyA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3Qgdmlld3BvcnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX1VQX0JVVFRPTl9OQU1FLCBwcm9wcy5fX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbY2FuU2Nyb2xsVXAxLCBzZXRDYW5TY3JvbGxVcF0gPSAkMDFiOWMkdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCB2aWV3cG9ydENvbnRleHQub25TY3JvbGxCdXR0b25DaGFuZ2UpO1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0ICYmIGNvbnRlbnRDb250ZXh0LmlzUG9zaXRpb25lZCkge1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBjb250ZW50Q29udGV4dC52aWV3cG9ydDtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVNjcm9sbCgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYW5TY3JvbGxVcCA9IHZpZXdwb3J0LnNjcm9sbFRvcCA+IDA7XG4gICAgICAgICAgICAgICAgc2V0Q2FuU2Nyb2xsVXAoY2FuU2Nyb2xsVXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFuZGxlU2Nyb2xsKCk7XG4gICAgICAgICAgICB2aWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT52aWV3cG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0LFxuICAgICAgICBjb250ZW50Q29udGV4dC5pc1Bvc2l0aW9uZWRcbiAgICBdKTtcbiAgICByZXR1cm4gY2FuU2Nyb2xsVXAxID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0U2Nyb2xsQnV0dG9uSW1wbCwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25BdXRvU2Nyb2xsOiAoKT0+e1xuICAgICAgICAgICAgY29uc3QgeyB2aWV3cG9ydDogdmlld3BvcnQgLCBzZWxlY3RlZEl0ZW06IHNlbGVjdGVkSXRlbSAgfSA9IGNvbnRlbnRDb250ZXh0O1xuICAgICAgICAgICAgaWYgKHZpZXdwb3J0ICYmIHNlbGVjdGVkSXRlbSkgdmlld3BvcnQuc2Nyb2xsVG9wID0gdmlld3BvcnQuc2Nyb2xsVG9wIC0gc2VsZWN0ZWRJdGVtLm9mZnNldEhlaWdodDtcbiAgICAgICAgfVxuICAgIH0pKSA6IG51bGw7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDgxMTc5Mjc2NThhZjZkNywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX1VQX0JVVFRPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFNjcm9sbERvd25CdXR0b25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FID0gJ1NlbGVjdFNjcm9sbERvd25CdXR0b24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGZmOTUxZTQ3NmMxMjE4OSA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FLCBwcm9wcy5fX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Vmlld3BvcnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfRE9XTl9CVVRUT05fTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2NhblNjcm9sbERvd24xLCBzZXRDYW5TY3JvbGxEb3duXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHZpZXdwb3J0Q29udGV4dC5vblNjcm9sbEJ1dHRvbkNoYW5nZSk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGVudENvbnRleHQudmlld3BvcnQgJiYgY29udGVudENvbnRleHQuaXNQb3NpdGlvbmVkKSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0O1xuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heFNjcm9sbCA9IHZpZXdwb3J0LnNjcm9sbEhlaWdodCAtIHZpZXdwb3J0LmNsaWVudEhlaWdodDsgLy8gd2UgdXNlIE1hdGguY2VpbCBoZXJlIGJlY2F1c2UgaWYgdGhlIFVJIGlzIHpvb21lZC1pblxuICAgICAgICAgICAgICAgIC8vIGBzY3JvbGxUb3BgIGlzIG5vdCBhbHdheXMgcmVwb3J0ZWQgYXMgYW4gaW50ZWdlclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhblNjcm9sbERvd24gPSBNYXRoLmNlaWwodmlld3BvcnQuc2Nyb2xsVG9wKSA8IG1heFNjcm9sbDtcbiAgICAgICAgICAgICAgICBzZXRDYW5TY3JvbGxEb3duKGNhblNjcm9sbERvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFuZGxlU2Nyb2xsKCk7XG4gICAgICAgICAgICB2aWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT52aWV3cG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0LFxuICAgICAgICBjb250ZW50Q29udGV4dC5pc1Bvc2l0aW9uZWRcbiAgICBdKTtcbiAgICByZXR1cm4gY2FuU2Nyb2xsRG93bjEgPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RTY3JvbGxCdXR0b25JbXBsLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkF1dG9TY3JvbGw6ICgpPT57XG4gICAgICAgICAgICBjb25zdCB7IHZpZXdwb3J0OiB2aWV3cG9ydCAsIHNlbGVjdGVkSXRlbTogc2VsZWN0ZWRJdGVtICB9ID0gY29udGVudENvbnRleHQ7XG4gICAgICAgICAgICBpZiAodmlld3BvcnQgJiYgc2VsZWN0ZWRJdGVtKSB2aWV3cG9ydC5zY3JvbGxUb3AgPSB2aWV3cG9ydC5zY3JvbGxUb3AgKyBzZWxlY3RlZEl0ZW0ub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9XG4gICAgfSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmZjk1MWU0NzZjMTIxODksIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FXG59KTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RTY3JvbGxCdXR0b25JbXBsID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBvbkF1dG9TY3JvbGw6IG9uQXV0b1Njcm9sbCAsIC4uLnNjcm9sbEluZGljYXRvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgnU2VsZWN0U2Nyb2xsQnV0dG9uJywgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgYXV0b1Njcm9sbFRpbWVyUmVmID0gJDAxYjljJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNsZWFyQXV0b1Njcm9sbFRpbWVyID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIGlmIChhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT5jbGVhckF1dG9TY3JvbGxUaW1lcigpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIGNsZWFyQXV0b1Njcm9sbFRpbWVyXG4gICAgXSk7IC8vIFdoZW4gdGhlIHZpZXdwb3J0IGJlY29tZXMgc2Nyb2xsYWJsZSBvbiBlaXRoZXIgc2lkZSwgdGhlIHJlbGV2YW50IHNjcm9sbCBidXR0b24gd2lsbCBtb3VudC5cbiAgICAvLyBCZWNhdXNlIGl0IGlzIHBhcnQgb2YgdGhlIG5vcm1hbCBmbG93LCBpdCB3aWxsIHB1c2ggZG93biAodG9wIGJ1dHRvbikgb3Igc2hyaW5rIChib3R0b20gYnV0dG9uKVxuICAgIC8vIHRoZSB2aWV3cG9ydCwgcG90ZW50aWFsbHkgY2F1c2luZyB0aGUgYWN0aXZlIGl0ZW0gdG8gbm93IGJlIHBhcnRpYWxseSBvdXQgb2Ygdmlldy5cbiAgICAvLyBXZSByZS1ydW4gdGhlIGBzY3JvbGxJbnRvVmlld2AgbG9naWMgdG8gbWFrZSBzdXJlIGl0IHN0YXlzIHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICB2YXIgX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlO1xuICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gZ2V0SXRlbXMoKS5maW5kKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICAgICAgICApO1xuICAgICAgICBhY3RpdmVJdGVtID09PSBudWxsIHx8IGFjdGl2ZUl0ZW0gPT09IHZvaWQgMCB8fCAoX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlID0gYWN0aXZlSXRlbS5yZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlID09PSB2b2lkIDAgfHwgX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCdcbiAgICAgICAgfSk7XG4gICAgfSwgW1xuICAgICAgICBnZXRJdGVtc1xuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICB9LCBzY3JvbGxJbmRpY2F0b3JQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGZsZXhTaHJpbms6IDAsXG4gICAgICAgICAgICAuLi5zY3JvbGxJbmRpY2F0b3JQcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvblBvaW50ZXJEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoc2Nyb2xsSW5kaWNhdG9yUHJvcHMub25Qb2ludGVyRG93biwgKCk9PntcbiAgICAgICAgICAgIGlmIChhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCA9PT0gbnVsbCkgYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwob25BdXRvU2Nyb2xsLCA1MCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJNb3ZlOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoc2Nyb2xsSW5kaWNhdG9yUHJvcHMub25Qb2ludGVyTW92ZSwgKCk9PntcbiAgICAgICAgICAgIHZhciBfY29udGVudENvbnRleHQkb25JdGUzO1xuICAgICAgICAgICAgKF9jb250ZW50Q29udGV4dCRvbkl0ZTMgPSBjb250ZW50Q29udGV4dC5vbkl0ZW1MZWF2ZSkgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlMyA9PT0gdm9pZCAwIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZTMuY2FsbChjb250ZW50Q29udGV4dCk7XG4gICAgICAgICAgICBpZiAoYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPT09IG51bGwpIGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldEludGVydmFsKG9uQXV0b1Njcm9sbCwgNTApO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhzY3JvbGxJbmRpY2F0b3JQcm9wcy5vblBvaW50ZXJMZWF2ZSwgKCk9PntcbiAgICAgICAgICAgIGNsZWFyQXV0b1Njcm9sbFRpbWVyKCk7XG4gICAgICAgIH0pXG4gICAgfSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RTZXBhcmF0b3JcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFUEFSQVRPUl9OQU1FID0gJ1NlbGVjdFNlcGFyYXRvcic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWJhNGIxZGYwN2NiMWQzID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi5zZXBhcmF0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZVxuICAgIH0sIHNlcGFyYXRvclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViYTRiMWRmMDdjYjFkMywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VQQVJBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0QXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEFSUk9XX05BTUUgPSAnU2VsZWN0QXJyb3cnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDMxNGY0Y2I4ZjgwOTk2MjggPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQVJST1dfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEFSUk9XX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIHJldHVybiBjb250ZXh0Lm9wZW4gJiYgY29udGVudENvbnRleHQucG9zaXRpb24gPT09ICdwb3BwZXInID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkQXJyb3csICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDMxNGY0Y2I4ZjgwOTk2MjgsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEFSUk9XX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQnViYmxlU2VsZWN0ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IHZhbHVlOiB2YWx1ZSAsIC4uLnNlbGVjdFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCByZWYgPSAkMDFiOWMkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgIGNvbnN0IHByZXZWYWx1ZSA9ICQwMWI5YyR1c2VQcmV2aW91cyh2YWx1ZSk7IC8vIEJ1YmJsZSB2YWx1ZSBjaGFuZ2UgdG8gcGFyZW50cyAoZS5nIGZvcm0gY2hhbmdlIGV2ZW50KVxuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgc2VsZWN0ID0gcmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IHNlbGVjdFByb3RvID0gd2luZG93LkhUTUxTZWxlY3RFbGVtZW50LnByb3RvdHlwZTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZWN0UHJvdG8sICd2YWx1ZScpO1xuICAgICAgICBjb25zdCBzZXRWYWx1ZSA9IGRlc2NyaXB0b3Iuc2V0O1xuICAgICAgICBpZiAocHJldlZhbHVlICE9PSB2YWx1ZSAmJiBzZXRWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScsIHtcbiAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldFZhbHVlLmNhbGwoc2VsZWN0LCB2YWx1ZSk7XG4gICAgICAgICAgICBzZWxlY3QuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHByZXZWYWx1ZSxcbiAgICAgICAgdmFsdWVcbiAgICBdKTtcbiAgICAvKipcbiAgICogV2UgcHVycG9zZWZ1bGx5IHVzZSBhIGBzZWxlY3RgIGhlcmUgdG8gc3VwcG9ydCBmb3JtIGF1dG9maWxsIGFzIG11Y2hcbiAgICogYXMgcG9zc2libGUuXG4gICAqXG4gICAqIFdlIHB1cnBvc2VmdWxseSBkbyBub3QgYWRkIHRoZSBgdmFsdWVgIGF0dHJpYnV0ZSBoZXJlIHRvIGFsbG93IHRoZSB2YWx1ZVxuICAgKiB0byBiZSBzZXQgcHJvZ3JhbWF0aWNhbGx5IGFuZCBidWJibGUgdG8gYW55IHBhcmVudCBmb3JtIGBvbkNoYW5nZWAgZXZlbnQuXG4gICAqIEFkZGluZyB0aGUgYHZhbHVlYCB3aWxsIGNhdXNlIFJlYWN0IHRvIGNvbnNpZGVyIHRoZSBwcm9ncmFtYXRpY1xuICAgKiBkaXNwYXRjaCBhIGR1cGxpY2F0ZSBhbmQgaXQgd2lsbCBnZXQgc3dhbGxvd2VkLlxuICAgKlxuICAgKiBXZSB1c2UgYFZpc3VhbGx5SGlkZGVuYCByYXRoZXIgdGhhbiBgZGlzcGxheTogXCJub25lXCJgIGJlY2F1c2UgU2FmYXJpIGF1dG9maWxsXG4gICAqIHdvbid0IHdvcmsgb3RoZXJ3aXNlLlxuICAgKi8gcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFZpc3VhbGx5SGlkZGVuLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwic2VsZWN0XCIsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgc2VsZWN0UHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdmFsdWVcbiAgICB9KSkpO1xufSk7XG4kY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQnViYmxlU2VsZWN0LmRpc3BsYXlOYW1lID0gJ0J1YmJsZVNlbGVjdCc7XG5mdW5jdGlvbiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlVHlwZWFoZWFkU2VhcmNoKG9uU2VhcmNoQ2hhbmdlKSB7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQ2hhbmdlID0gJDAxYjljJHVzZUNhbGxiYWNrUmVmKG9uU2VhcmNoQ2hhbmdlKTtcbiAgICBjb25zdCBzZWFyY2hSZWYgPSAkMDFiOWMkdXNlUmVmKCcnKTtcbiAgICBjb25zdCB0aW1lclJlZiA9ICQwMWI5YyR1c2VSZWYoMCk7XG4gICAgY29uc3QgaGFuZGxlVHlwZWFoZWFkU2VhcmNoID0gJDAxYjljJHVzZUNhbGxiYWNrKChrZXkpPT57XG4gICAgICAgIGNvbnN0IHNlYXJjaCA9IHNlYXJjaFJlZi5jdXJyZW50ICsga2V5O1xuICAgICAgICBoYW5kbGVTZWFyY2hDaGFuZ2Uoc2VhcmNoKTtcbiAgICAgICAgKGZ1bmN0aW9uIHVwZGF0ZVNlYXJjaCh2YWx1ZSkge1xuICAgICAgICAgICAgc2VhcmNoUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudCk7IC8vIFJlc2V0IGBzZWFyY2hSZWZgIDEgc2Vjb25kIGFmdGVyIGl0IHdhcyBsYXN0IHVwZGF0ZWRcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gJycpIHRpbWVyUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKT0+dXBkYXRlU2VhcmNoKCcnKVxuICAgICAgICAgICAgLCAxMDAwKTtcbiAgICAgICAgfSkoc2VhcmNoKTtcbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZVNlYXJjaENoYW5nZVxuICAgIF0pO1xuICAgIGNvbnN0IHJlc2V0VHlwZWFoZWFkID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIHNlYXJjaFJlZi5jdXJyZW50ID0gJyc7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudCk7XG4gICAgfSwgW10pO1xuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT53aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2VhcmNoUmVmLFxuICAgICAgICBoYW5kbGVUeXBlYWhlYWRTZWFyY2gsXG4gICAgICAgIHJlc2V0VHlwZWFoZWFkXG4gICAgXTtcbn1cbi8qKlxuICogVGhpcyBpcyB0aGUgXCJtZWF0XCIgb2YgdGhlIHR5cGVhaGVhZCBtYXRjaGluZyBsb2dpYy4gSXQgdGFrZXMgaW4gYSBsaXN0IG9mIGl0ZW1zLFxuICogdGhlIHNlYXJjaCBhbmQgdGhlIGN1cnJlbnQgaXRlbSwgYW5kIHJldHVybnMgdGhlIG5leHQgaXRlbSAob3IgYHVuZGVmaW5lZGApLlxuICpcbiAqIFdlIG5vcm1hbGl6ZSB0aGUgc2VhcmNoIGJlY2F1c2UgaWYgYSB1c2VyIGhhcyByZXBlYXRlZGx5IHByZXNzZWQgYSBjaGFyYWN0ZXIsXG4gKiB3ZSB3YW50IHRoZSBleGFjdCBzYW1lIGJlaGF2aW9yIGFzIGlmIHdlIG9ubHkgaGFkIHRoYXQgb25lIGNoYXJhY3RlclxuICogKGllLiBjeWNsZSB0aHJvdWdoIGl0ZW1zIHN0YXJ0aW5nIHdpdGggdGhhdCBjaGFyYWN0ZXIpXG4gKlxuICogV2UgYWxzbyByZW9yZGVyIHRoZSBpdGVtcyBieSB3cmFwcGluZyB0aGUgYXJyYXkgYXJvdW5kIHRoZSBjdXJyZW50IGl0ZW0uXG4gKiBUaGlzIGlzIHNvIHdlIGFsd2F5cyBsb29rIGZvcndhcmQgZnJvbSB0aGUgY3VycmVudCBpdGVtLCBhbmQgcGlja2luZyB0aGUgZmlyc3RcbiAqIGl0ZW0gd2lsbCBhbHdheXMgYmUgdGhlIGNvcnJlY3Qgb25lLlxuICpcbiAqIEZpbmFsbHksIGlmIHRoZSBub3JtYWxpemVkIHNlYXJjaCBpcyBleGFjdGx5IG9uZSBjaGFyYWN0ZXIsIHdlIGV4Y2x1ZGUgdGhlXG4gKiBjdXJyZW50IGl0ZW0gZnJvbSB0aGUgdmFsdWVzIGJlY2F1c2Ugb3RoZXJ3aXNlIGl0IHdvdWxkIGJlIHRoZSBmaXJzdCB0byBtYXRjaCBhbHdheXNcbiAqIGFuZCBmb2N1cyB3b3VsZCBuZXZlciBtb3ZlLiBUaGlzIGlzIGFzIG9wcG9zZWQgdG8gdGhlIHJlZ3VsYXIgY2FzZSwgd2hlcmUgd2VcbiAqIGRvbid0IHdhbnQgZm9jdXMgdG8gbW92ZSBpZiB0aGUgY3VycmVudCBpdGVtIHN0aWxsIG1hdGNoZXMuXG4gKi8gZnVuY3Rpb24gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGZpbmROZXh0SXRlbShpdGVtcywgc2VhcmNoLCBjdXJyZW50SXRlbSkge1xuICAgIGNvbnN0IGlzUmVwZWF0ZWQgPSBzZWFyY2gubGVuZ3RoID4gMSAmJiBBcnJheS5mcm9tKHNlYXJjaCkuZXZlcnkoKGNoYXIpPT5jaGFyID09PSBzZWFyY2hbMF1cbiAgICApO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTZWFyY2ggPSBpc1JlcGVhdGVkID8gc2VhcmNoWzBdIDogc2VhcmNoO1xuICAgIGNvbnN0IGN1cnJlbnRJdGVtSW5kZXggPSBjdXJyZW50SXRlbSA/IGl0ZW1zLmluZGV4T2YoY3VycmVudEl0ZW0pIDogLTE7XG4gICAgbGV0IHdyYXBwZWRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR3cmFwQXJyYXkoaXRlbXMsIE1hdGgubWF4KGN1cnJlbnRJdGVtSW5kZXgsIDApKTtcbiAgICBjb25zdCBleGNsdWRlQ3VycmVudEl0ZW0gPSBub3JtYWxpemVkU2VhcmNoLmxlbmd0aCA9PT0gMTtcbiAgICBpZiAoZXhjbHVkZUN1cnJlbnRJdGVtKSB3cmFwcGVkSXRlbXMgPSB3cmFwcGVkSXRlbXMuZmlsdGVyKCh2KT0+diAhPT0gY3VycmVudEl0ZW1cbiAgICApO1xuICAgIGNvbnN0IG5leHRJdGVtID0gd3JhcHBlZEl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLnRleHRWYWx1ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobm9ybWFsaXplZFNlYXJjaC50b0xvd2VyQ2FzZSgpKVxuICAgICk7XG4gICAgcmV0dXJuIG5leHRJdGVtICE9PSBjdXJyZW50SXRlbSA/IG5leHRJdGVtIDogdW5kZWZpbmVkO1xufVxuLyoqXG4gKiBXcmFwcyBhbiBhcnJheSBhcm91bmQgaXRzZWxmIGF0IGEgZ2l2ZW4gc3RhcnQgaW5kZXhcbiAqIEV4YW1wbGU6IGB3cmFwQXJyYXkoWydhJywgJ2InLCAnYycsICdkJ10sIDIpID09PSBbJ2MnLCAnZCcsICdhJywgJ2InXWBcbiAqLyBmdW5jdGlvbiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkd3JhcEFycmF5KGFycmF5LCBzdGFydEluZGV4KSB7XG4gICAgcmV0dXJuIGFycmF5Lm1hcCgoXywgaW5kZXgpPT5hcnJheVsoc3RhcnRJbmRleCArIGluZGV4KSAlIGFycmF5Lmxlbmd0aF1cbiAgICApO1xufVxuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWY5YjFhNTllNTkyMjg4ZjtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDNhYzFlODhhMWMwYjlmMTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0YzhkMWE1N2E3NjFlZjk0ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGUyODg3MzFmZDcxMjY0ZjA7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjA0YTYxMjk4YTQ3YTQwZiA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjJhZjZjOTk0NDI5NjIxMztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGM5NzNhNGIzY2I4NmEwM2Q7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDVjNmMwOGRjMmQzY2E3ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQ7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWIyZmNmZGJkN2JhOTdkNCA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZTI1YTMzNGM1NWRlMWY0O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGIwNGJlMjlhYTIwMWQ0ZjUgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjY3MzM4ZDI5YmQ5NzJmODtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTY7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDZlNWJmOWM0M2VhOTMxOSA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzNTcyZmIwZmI4MjFmZjQ5O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGMzNDY4ZTI3MTRkMTc1ZmEgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmI5MTk4ZGUxOWFjY2ZlNjtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyZjYwZDNlYzlhZDQ2OGYyID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ4MTE3OTI3NjU4YWY2ZDc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmYxYWVkYzMwMzljOGQ2MyA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmZjk1MWU0NzZjMTIxODk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMWZmM2MzZjA4YWU5NjNjMCA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYmE0YjFkZjA3Y2IxZDM7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzMTRmNGNiOGY4MDk5NjI4O1xuXG5cblxuXG5leHBvcnQgeyRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyODY3MjdhNzVkYzAzOWJkIGFzIGNyZWF0ZVNlbGVjdFNjb3BlLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWY5YjFhNTllNTkyMjg4ZiBhcyBTZWxlY3QsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEgYXMgU2VsZWN0VHJpZ2dlciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGUyODg3MzFmZDcxMjY0ZjAgYXMgU2VsZWN0VmFsdWUsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1IGFzIFNlbGVjdEljb24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMmFmNmM5OTQ0Mjk2MjEzIGFzIFNlbGVjdFBvcnRhbCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGM5NzNhNGIzY2I4NmEwM2QgYXMgU2VsZWN0Q29udGVudCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQgYXMgU2VsZWN0Vmlld3BvcnQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZTI1YTMzNGM1NWRlMWY0IGFzIFNlbGVjdEdyb3VwLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjY3MzM4ZDI5YmQ5NzJmOCBhcyBTZWxlY3RMYWJlbCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTYgYXMgU2VsZWN0SXRlbSwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDkgYXMgU2VsZWN0SXRlbVRleHQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2YjkxOThkZTE5YWNjZmU2IGFzIFNlbGVjdEl0ZW1JbmRpY2F0b3IsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkODExNzkyNzY1OGFmNmQ3IGFzIFNlbGVjdFNjcm9sbFVwQnV0dG9uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZmY5NTFlNDc2YzEyMTg5IGFzIFNlbGVjdFNjcm9sbERvd25CdXR0b24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYmE0YjFkZjA3Y2IxZDMgYXMgU2VsZWN0U2VwYXJhdG9yLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzE0ZjRjYjhmODA5OTYyOCBhcyBTZWxlY3RBcnJvdywgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDRjOGQxYTU3YTc2MWVmOTQgYXMgVmFsdWUsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmMDRhNjEyOThhNDdhNDBmIGFzIEljb24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIGFzIFBvcnRhbCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgYXMgQ29udGVudCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ1YzZjMDhkYzJkM2NhNyBhcyBWaWV3cG9ydCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViMmZjZmRiZDdiYTk3ZDQgYXMgR3JvdXAsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1IGFzIExhYmVsLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiBhcyBJdGVtLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDZlNWJmOWM0M2VhOTMxOSBhcyBJdGVtVGV4dCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGMzNDY4ZTI3MTRkMTc1ZmEgYXMgSXRlbUluZGljYXRvciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDJmNjBkM2VjOWFkNDY4ZjIgYXMgU2Nyb2xsVXBCdXR0b24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZjFhZWRjMzAzOWM4ZDYzIGFzIFNjcm9sbERvd25CdXR0b24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxZmYzYzNmMDhhZTk2M2MwIGFzIFNlcGFyYXRvciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3d9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsLCJpbXBvcnQgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDFJSHprJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDFJSHprJGNyZWF0ZUVsZW1lbnQsIHVzZVJlZiBhcyAkMUlIemskdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDFJSHprJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQxSUh6ayRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQxSUh6ayRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHtjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUgYXMgJDFJSHprJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSwgUm9vdCBhcyAkMUlIemskUm9vdCwgSXRlbSBhcyAkMUlIemskSXRlbX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1yb3ZpbmctZm9jdXNcIjtcbmltcG9ydCB7UHJlc2VuY2UgYXMgJDFJSHprJFByZXNlbmNlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkMUlIemskUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VEaXJlY3Rpb24gYXMgJDFJSHprJHVzZURpcmVjdGlvbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1kaXJlY3Rpb25cIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDFJSHprJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7dXNlSWQgYXMgJDFJSHprJHVzZUlkfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWlkXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJTX05BTUUgPSAnVGFicyc7XG5jb25zdCBbJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJGNyZWF0ZVRhYnNDb250ZXh0LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkMzU1ZjViZDIwOWQ3YjEzYV0gPSAkMUlIemskY3JlYXRlQ29udGV4dFNjb3BlKCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJTX05BTUUsIFtcbiAgICAkMUlIemskY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlXG5dKTtcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUgPSAkMUlIemskY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlKCk7XG5jb25zdCBbJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRhYnNQcm92aWRlciwgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0XSA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRjcmVhdGVUYWJzQ29udGV4dCgkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCU19OQU1FKTtcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiMjUzOWJlZDUwMjNjMjFjID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIHZhbHVlOiB2YWx1ZVByb3AgLCBvblZhbHVlQ2hhbmdlOiBvblZhbHVlQ2hhbmdlICwgZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUgLCBvcmllbnRhdGlvbjogb3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCcgLCBkaXI6IGRpciAsIGFjdGl2YXRpb25Nb2RlOiBhY3RpdmF0aW9uTW9kZSA9ICdhdXRvbWF0aWMnICwgLi4udGFic1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaXJlY3Rpb24gPSAkMUlIemskdXNlRGlyZWN0aW9uKGRpcik7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSAkMUlIemskdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiB2YWx1ZVByb3AsXG4gICAgICAgIG9uQ2hhbmdlOiBvblZhbHVlQ2hhbmdlLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdFZhbHVlXG4gICAgfSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRhYnNQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVRhYnMsXG4gICAgICAgIGJhc2VJZDogJDFJSHprJHVzZUlkKCksXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgb25WYWx1ZUNoYW5nZTogc2V0VmFsdWUsXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbixcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIGFjdGl2YXRpb25Nb2RlOiBhY3RpdmF0aW9uTW9kZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFByaW1pdGl2ZS5kaXYsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGRpcjogZGlyZWN0aW9uLFxuICAgICAgICBcImRhdGEtb3JpZW50YXRpb25cIjogb3JpZW50YXRpb25cbiAgICB9LCB0YWJzUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGIyNTM5YmVkNTAyM2MyMWMsIHtcbiAgICBkaXNwbGF5TmFtZTogJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRBQlNfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzTGlzdFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCX0xJU1RfTkFNRSA9ICdUYWJzTGlzdCc7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkOTcxMmQyMmVkYzBkNzhjMSA9IC8qI19fUFVSRV9fKi8gJDFJSHprJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVGFiczogX19zY29wZVRhYnMgLCBsb29wOiBsb29wID0gdHJ1ZSAsIC4uLmxpc3RQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VUYWJzQ29udGV4dCgkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCX0xJU1RfTkFNRSwgX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUoX19zY29wZVRhYnMpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRSb290LCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcm92aW5nRm9jdXNHcm91cFNjb3BlLCB7XG4gICAgICAgIG9yaWVudGF0aW9uOiBjb250ZXh0Lm9yaWVudGF0aW9uLFxuICAgICAgICBkaXI6IGNvbnRleHQuZGlyLFxuICAgICAgICBsb29wOiBsb29wXG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFByaW1pdGl2ZS5kaXYsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHJvbGU6IFwidGFibGlzdFwiLFxuICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogY29udGV4dC5vcmllbnRhdGlvblxuICAgIH0sIGxpc3RQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkOTcxMmQyMmVkYzBkNzhjMSwge1xuICAgIGRpc3BsYXlOYW1lOiAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCX0xJU1RfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzVHJpZ2dlclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVFJJR0dFUl9OQU1FID0gJ1RhYnNUcmlnZ2VyJztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ4MTE0YjlmZGZkZjlmM2JhID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIHZhbHVlOiB2YWx1ZSAsIGRpc2FibGVkOiBkaXNhYmxlZCA9IGZhbHNlICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUUklHR0VSX05BTUUsIF9fc2NvcGVUYWJzKTtcbiAgICBjb25zdCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlUm92aW5nRm9jdXNHcm91cFNjb3BlKF9fc2NvcGVUYWJzKTtcbiAgICBjb25zdCB0cmlnZ2VySWQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkbWFrZVRyaWdnZXJJZChjb250ZXh0LmJhc2VJZCwgdmFsdWUpO1xuICAgIGNvbnN0IGNvbnRlbnRJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlQ29udGVudElkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHZhbHVlID09PSBjb250ZXh0LnZhbHVlO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRJdGVtLCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBhc0NoaWxkOiB0cnVlXG4gICAgfSwgcm92aW5nRm9jdXNHcm91cFNjb3BlLCB7XG4gICAgICAgIGZvY3VzYWJsZTogIWRpc2FibGVkLFxuICAgICAgICBhY3RpdmU6IGlzU2VsZWN0ZWRcbiAgICB9KSwgLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmJ1dHRvbiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgcm9sZTogXCJ0YWJcIixcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IGlzU2VsZWN0ZWQsXG4gICAgICAgIFwiYXJpYS1jb250cm9sc1wiOiBjb250ZW50SWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiBpc1NlbGVjdGVkID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICBpZDogdHJpZ2dlcklkXG4gICAgfSwgdHJpZ2dlclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBvbk1vdXNlRG93bjogJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uTW91c2VEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBvbmx5IGNhbGwgaGFuZGxlciBpZiBpdCdzIHRoZSBsZWZ0IGJ1dHRvbiAobW91c2Vkb3duIGdldHMgdHJpZ2dlcmVkIGJ5IGFsbCBtb3VzZSBidXR0b25zKVxuICAgICAgICAgICAgLy8gYnV0IG5vdCB3aGVuIHRoZSBjb250cm9sIGtleSBpcyBwcmVzc2VkIChhdm9pZGluZyBNYWNPUyByaWdodCBjbGljaylcbiAgICAgICAgICAgIGlmICghZGlzYWJsZWQgJiYgZXZlbnQuYnV0dG9uID09PSAwICYmIGV2ZW50LmN0cmxLZXkgPT09IGZhbHNlKSBjb250ZXh0Lm9uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgZWxzZSAvLyBwcmV2ZW50IGZvY3VzIHRvIGF2b2lkIGFjY2lkZW50YWwgYWN0aXZhdGlvblxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uS2V5RG93bjogJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKFtcbiAgICAgICAgICAgICAgICAnICcsXG4gICAgICAgICAgICAgICAgJ0VudGVyJ1xuICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5rZXkpKSBjb250ZXh0Lm9uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Gb2N1czogJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXMsICgpPT57XG4gICAgICAgICAgICAvLyBoYW5kbGUgXCJhdXRvbWF0aWNcIiBhY3RpdmF0aW9uIGlmIG5lY2Vzc2FyeVxuICAgICAgICAgICAgLy8gaWUuIGFjdGl2YXRlIHRhYiBmb2xsb3dpbmcgZm9jdXNcbiAgICAgICAgICAgIGNvbnN0IGlzQXV0b21hdGljQWN0aXZhdGlvbiA9IGNvbnRleHQuYWN0aXZhdGlvbk1vZGUgIT09ICdtYW51YWwnO1xuICAgICAgICAgICAgaWYgKCFpc1NlbGVjdGVkICYmICFkaXNhYmxlZCAmJiBpc0F1dG9tYXRpY0FjdGl2YXRpb24pIGNvbnRleHQub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ4MTE0YjlmZGZkZjlmM2JhLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUUklHR0VSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGFic0NvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJENPTlRFTlRfTkFNRSA9ICdUYWJzQ29udGVudCc7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmQ5MDVkNzBlOGZkMmViYiA9IC8qI19fUFVSRV9fKi8gJDFJSHprJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVGFiczogX19zY29wZVRhYnMgLCB2YWx1ZTogdmFsdWUgLCBmb3JjZU1vdW50OiBmb3JjZU1vdW50ICwgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVUYWJzKTtcbiAgICBjb25zdCB0cmlnZ2VySWQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkbWFrZVRyaWdnZXJJZChjb250ZXh0LmJhc2VJZCwgdmFsdWUpO1xuICAgIGNvbnN0IGNvbnRlbnRJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlQ29udGVudElkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgaXNTZWxlY3RlZCA9IHZhbHVlID09PSBjb250ZXh0LnZhbHVlO1xuICAgIGNvbnN0IGlzTW91bnRBbmltYXRpb25QcmV2ZW50ZWRSZWYgPSAkMUlIemskdXNlUmVmKGlzU2VsZWN0ZWQpO1xuICAgICQxSUh6ayR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgckFGID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT5pc01vdW50QW5pbWF0aW9uUHJldmVudGVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gKCk9PmNhbmNlbEFuaW1hdGlvbkZyYW1lKHJBRilcbiAgICAgICAgO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBpc1NlbGVjdGVkXG4gICAgfSwgKHsgcHJlc2VudDogcHJlc2VudCAgfSk9Pi8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFByaW1pdGl2ZS5kaXYsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgICAgICBcImRhdGEtc3RhdGVcIjogaXNTZWxlY3RlZCA/ICdhY3RpdmUnIDogJ2luYWN0aXZlJyxcbiAgICAgICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBjb250ZXh0Lm9yaWVudGF0aW9uLFxuICAgICAgICAgICAgcm9sZTogXCJ0YWJwYW5lbFwiLFxuICAgICAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogdHJpZ2dlcklkLFxuICAgICAgICAgICAgaGlkZGVuOiAhcHJlc2VudCxcbiAgICAgICAgICAgIGlkOiBjb250ZW50SWQsXG4gICAgICAgICAgICB0YWJJbmRleDogMFxuICAgICAgICB9LCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi5wcm9wcy5zdHlsZSxcbiAgICAgICAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbjogaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZFJlZi5jdXJyZW50ID8gJzBzJyA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfVxuICAgICAgICB9KSwgcHJlc2VudCAmJiBjaGlsZHJlbilcbiAgICApO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJkOTA1ZDcwZThmZDJlYmIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGZ1bmN0aW9uICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlVHJpZ2dlcklkKGJhc2VJZCwgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7YmFzZUlkfS10cmlnZ2VyLSR7dmFsdWV9YDtcbn1cbmZ1bmN0aW9uICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlQ29udGVudElkKGJhc2VJZCwgdmFsdWUpIHtcbiAgICByZXR1cm4gYCR7YmFzZUlkfS1jb250ZW50LSR7dmFsdWV9YDtcbn1cbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGIyNTM5YmVkNTAyM2MyMWM7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNTRjMmUzZGM3YWNlYTlmNSA9ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgPSAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkODExNGI5ZmRmZGY5ZjNiYTtcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJkOTA1ZDcwZThmZDJlYmI7XG5cblxuXG5cbmV4cG9ydCB7JDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDM1NWY1YmQyMDlkN2IxM2EgYXMgY3JlYXRlVGFic1Njb3BlLCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYjI1MzliZWQ1MDIzYzIxYyBhcyBUYWJzLCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkOTcxMmQyMmVkYzBkNzhjMSBhcyBUYWJzTGlzdCwgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDgxMTRiOWZkZmRmOWYzYmEgYXMgVGFic1RyaWdnZXIsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZDkwNWQ3MGU4ZmQyZWJiIGFzIFRhYnNDb250ZW50LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNTRjMmUzZGM3YWNlYTlmNSBhcyBMaXN0LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCBhcyBUcmlnZ2VyLCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsbnVsbF0sIm5hbWVzIjpbIl9leHRlbmRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsInRoaXMiLCIkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkNTBjN2I0ZTlkOWYxOWMxIiwic2NvcGVOYW1lIiwiY3JlYXRlQ29udGV4dFNjb3BlRGVwcyIsImRlZmF1bHRDb250ZXh0cyIsImNyZWF0ZVNjb3BlIiwic2NvcGVDb250ZXh0cyIsIm1hcCIsImRlZmF1bHRDb250ZXh0IiwiJDNia0FLJGNyZWF0ZUNvbnRleHQiLCJzY29wZSIsImNvbnRleHRzIiwiJDNia0FLJHVzZU1lbW8iLCJyb290Q29tcG9uZW50TmFtZSIsIkJhc2VDb250ZXh0IiwiaW5kZXgiLCJQcm92aWRlciIsInByb3BzIiwiY2hpbGRyZW4iLCJjb250ZXh0IiwiQ29udGV4dCIsInZhbHVlIiwidmFsdWVzIiwiJDNia0FLJGNyZWF0ZUVsZW1lbnQiLCJkaXNwbGF5TmFtZSIsImNvbnN1bWVyTmFtZSIsIiQzYmtBSyR1c2VDb250ZXh0IiwidW5kZWZpbmVkIiwiRXJyb3IiLCIkYzUxMmMyN2FiMDJlZjg5NSR2YXIkY29tcG9zZUNvbnRleHRTY29wZXMiLCJzY29wZXMiLCJiYXNlU2NvcGUiLCJjcmVhdGVTY29wZTEiLCJzY29wZUhvb2tzIiwidXNlU2NvcGUiLCJvdmVycmlkZVNjb3BlcyIsIm5leHRTY29wZXMxIiwicmVkdWNlIiwibmV4dFNjb3BlcyIsIiQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCQ0M2U0NDZkMzJiM2QyMWFmIiwicmVmcyIsIm5vZGUiLCJmb3JFYWNoIiwicmVmIiwiY3VycmVudCIsIiQ2ZWQwNDA2ODg4ZjczZmM0JHZhciRzZXRSZWYiLCIkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkYzdiMmNiZTM1NTJhMGQwNSIsIiQzdnFtciR1c2VDYWxsYmFjayIsIiRlNDJlMTA2M2M0MGZiM2VmJGV4cG9ydCRiOWVjZDQyOGI1NThmZjEwIiwib3JpZ2luYWxFdmVudEhhbmRsZXIiLCJvdXJFdmVudEhhbmRsZXIiLCJjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQiLCJldmVudCIsImRlZmF1bHRQcmV2ZW50ZWQiLCIkOWY3OTY1OTg4Njk0NmMxNiRleHBvcnQkZTVjNWE1ZjkxN2E1ODcxYyIsIkJvb2xlYW4iLCJnbG9iYWxUaGlzIiwiZG9jdW1lbnQiLCIkZHhsd0gkdXNlTGF5b3V0RWZmZWN0IiwiJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJHVzZVJlYWN0SWQiLCIkMkFPRHgkcmVhY3QiLCJ0b1N0cmluZyIsIiQxNzQ2YTM0NWYzZDczYmI3JHZhciRjb3VudCIsIiQxNzQ2YTM0NWYzZDczYmI3JGV4cG9ydCRmNjgwODc3YTM0NzExZTM3IiwiZGV0ZXJtaW5pc3RpY0lkIiwiaWQiLCJzZXRJZCIsInVzZVN0YXRlIiwiJDJBT0R4JHVzZUxheW91dEVmZmVjdCIsInJlYWN0SWQiLCJTdHJpbmciLCIkYjFiMjMxNGY1ZjlhMWQ4NCRleHBvcnQkMjViZWM4YzZmNTRlZTc5YSIsImNhbGxiYWNrIiwiY2FsbGJhY2tSZWYiLCIkbHdpV2okdXNlUmVmIiwiJGx3aVdqJHVzZUVmZmVjdCIsIiRsd2lXaiR1c2VNZW1vIiwiYXJncyIsIl9jYWxsYmFja1JlZiRjdXJyZW50IiwiJDcxY2Q3NmNjNjBlMDQ1NGUkZXhwb3J0JDZmMzIxMzUwODBjYjRjMyIsInByb3AiLCJkZWZhdWx0UHJvcCIsIm9uQ2hhbmdlIiwidW5jb250cm9sbGVkUHJvcCIsInNldFVuY29udHJvbGxlZFByb3AiLCJ1bmNvbnRyb2xsZWRTdGF0ZSIsIiRiblB3OSR1c2VTdGF0ZSIsInByZXZWYWx1ZVJlZiIsIiRiblB3OSR1c2VSZWYiLCJoYW5kbGVDaGFuZ2UiLCIkYm5QdzkkdXNlQ2FsbGJhY2tSZWYiLCIkYm5QdzkkdXNlRWZmZWN0IiwiJDcxY2Q3NmNjNjBlMDQ1NGUkdmFyJHVzZVVuY29udHJvbGxlZFN0YXRlIiwiaXNDb250cm9sbGVkIiwidmFsdWUxIiwiJGJuUHc5JHVzZUNhbGxiYWNrIiwibmV4dFZhbHVlIiwiJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JDhjNmVkNWM2NjZhYzEzNjAiLCIkOUlyalgkZm9yd2FyZFJlZiIsImZvcndhcmRlZFJlZiIsInNsb3RQcm9wcyIsImNoaWxkcmVuQXJyYXkiLCIkOUlyalgkQ2hpbGRyZW4iLCJ0b0FycmF5Iiwic2xvdHRhYmxlIiwiZmluZCIsIiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRpc1Nsb3R0YWJsZSIsIm5ld0VsZW1lbnQiLCJuZXdDaGlsZHJlbiIsImNoaWxkIiwiY291bnQiLCJvbmx5IiwiJDlJcmpYJGlzVmFsaWRFbGVtZW50IiwiJDlJcmpYJGNyZWF0ZUVsZW1lbnQiLCIkNWU2M2M5NjFmYzFjZTIxMSR2YXIkU2xvdENsb25lIiwiJDlJcmpYJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDlJcmpYJGNsb25lRWxlbWVudCIsIiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRtZXJnZVByb3BzIiwiJDlJcmpYJGNvbXBvc2VSZWZzIiwiJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGQ5ZjFjY2YwYmRiMDVkNDUiLCIkOUlyalgkRnJhZ21lbnQiLCJ0eXBlIiwiY2hpbGRQcm9wcyIsIm92ZXJyaWRlUHJvcHMiLCJwcm9wTmFtZSIsInNsb3RQcm9wVmFsdWUiLCJjaGlsZFByb3BWYWx1ZSIsInRlc3QiLCJmaWx0ZXIiLCJqb2luIiwiJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JDI1MGZmYTYzY2RjMGQwMzQiLCJwcmltaXRpdmUiLCJOb2RlIiwiJDRxNUZxJGZvcndhcmRSZWYiLCJhc0NoaWxkIiwicHJpbWl0aXZlUHJvcHMiLCJDb21wIiwiJDRxNUZxJFNsb3QiLCIkNHE1RnEkdXNlRWZmZWN0Iiwid2luZG93IiwiU3ltYm9sIiwiZm9yIiwiJDRxNUZxJGNyZWF0ZUVsZW1lbnQiLCIkNHE1RnEkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkUE9JTlRFUl9ET1dOX09VVFNJREUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRk9DVVNfT1VUU0lERSIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERpc21pc3NhYmxlTGF5ZXJDb250ZXh0IiwiJGtxd3BIJGNyZWF0ZUNvbnRleHQiLCJsYXllcnMiLCJTZXQiLCJsYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZCIsImJyYW5jaGVzIiwiJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDE3N2ZiNjJmZjNlYzFmMjIiLCIka3F3cEgkZm9yd2FyZFJlZiIsIl9ub2RlJG93bmVyRG9jdW1lbnQiLCJkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMiLCJvbkVzY2FwZUtleURvd24iLCJvblBvaW50ZXJEb3duT3V0c2lkZSIsIm9uRm9jdXNPdXRzaWRlIiwib25JbnRlcmFjdE91dHNpZGUiLCJvbkRpc21pc3MiLCJsYXllclByb3BzIiwiJGtxd3BIJHVzZUNvbnRleHQiLCJub2RlMSIsInNldE5vZGUiLCIka3F3cEgkdXNlU3RhdGUiLCJvd25lckRvY3VtZW50IiwiZm9yY2UiLCJjb21wb3NlZFJlZnMiLCIka3F3cEgkdXNlQ29tcG9zZWRSZWZzIiwiQXJyYXkiLCJmcm9tIiwiaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQiLCJzbGljZSIsImhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkSW5kZXgiLCJpbmRleE9mIiwiaXNCb2R5UG9pbnRlckV2ZW50c0Rpc2FibGVkIiwic2l6ZSIsImlzUG9pbnRlckV2ZW50c0VuYWJsZWQiLCJwb2ludGVyRG93bk91dHNpZGUiLCJoYW5kbGVQb2ludGVyRG93bk91dHNpZGUiLCIka3F3cEgkdXNlQ2FsbGJhY2tSZWYiLCJpc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYiLCIka3F3cEgkdXNlUmVmIiwiaGFuZGxlQ2xpY2tSZWYiLCIka3F3cEgkdXNlRWZmZWN0IiwiaGFuZGxlUG9pbnRlckRvd24iLCJldmVudERldGFpbCIsIm9yaWdpbmFsRXZlbnQiLCJoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50IiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQiLCJkaXNjcmV0ZSIsInBvaW50ZXJUeXBlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbmNlIiwidGltZXJJZCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJvblBvaW50ZXJEb3duQ2FwdHVyZSIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUiLCJpc1BvaW50ZXJEb3duT25CcmFuY2giLCJzb21lIiwiYnJhbmNoIiwiY29udGFpbnMiLCJmb2N1c091dHNpZGUiLCJoYW5kbGVGb2N1c091dHNpZGUiLCJpc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmIiwiaGFuZGxlRm9jdXMiLCJvbkZvY3VzQ2FwdHVyZSIsIm9uQmx1ckNhcHR1cmUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkdXNlRm9jdXNPdXRzaWRlIiwib25Fc2NhcGVLZXlEb3duUHJvcCIsIiRoUFNRNSR1c2VDYWxsYmFja1JlZiIsIiRoUFNRNSR1c2VFZmZlY3QiLCJoYW5kbGVLZXlEb3duIiwiJGtxd3BIJHVzZUVzY2FwZUtleWRvd24iLCJwcmV2ZW50RGVmYXVsdCIsImJvZHkiLCJzdHlsZSIsInBvaW50ZXJFdmVudHMiLCJhZGQiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUiLCJkZWxldGUiLCJoYW5kbGVVcGRhdGUiLCIka3F3cEgkY3JlYXRlRWxlbWVudCIsIiRrcXdwSCRQcmltaXRpdmUiLCJkaXYiLCIka3F3cEgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJDdXN0b21FdmVudCIsImRpc3BhdGNoRXZlbnQiLCJuYW1lIiwiaGFuZGxlciIsImRldGFpbCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiJDRxNUZxJGZsdXNoU3luYyIsIiRrcXdwSCRkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnQiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5UIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5UIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMiLCIkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNiIsIiQ0NVFIdiRmb3J3YXJkUmVmIiwibG9vcCIsInRyYXBwZWQiLCJvbk1vdW50QXV0b0ZvY3VzIiwib25Nb3VudEF1dG9Gb2N1c1Byb3AiLCJvblVubW91bnRBdXRvRm9jdXMiLCJvblVubW91bnRBdXRvRm9jdXNQcm9wIiwic2NvcGVQcm9wcyIsImNvbnRhaW5lcjEiLCJzZXRDb250YWluZXIiLCIkNDVRSHYkdXNlU3RhdGUiLCIkNDVRSHYkdXNlQ2FsbGJhY2tSZWYiLCJsYXN0Rm9jdXNlZEVsZW1lbnRSZWYiLCIkNDVRSHYkdXNlUmVmIiwiJDQ1UUh2JHVzZUNvbXBvc2VkUmVmcyIsImZvY3VzU2NvcGUiLCJwYXVzZWQiLCJwYXVzZSIsInJlc3VtZSIsIiQ0NVFIdiR1c2VFZmZlY3QiLCJoYW5kbGVGb2N1c0luIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzIiwic2VsZWN0IiwiaGFuZGxlRm9jdXNPdXQiLCJyZWxhdGVkVGFyZ2V0IiwibXV0YXRpb25PYnNlcnZlciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnMiLCJmb2N1c2VkRWxlbWVudCIsImFjdGl2ZUVsZW1lbnQiLCJtdXRhdGlvbiIsInJlbW92ZWROb2RlcyIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiZGlzY29ubmVjdCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c1Njb3Blc1N0YWNrIiwicHJldmlvdXNseUZvY3VzZWRFbGVtZW50IiwibW91bnRFdmVudCIsImNhbmRpZGF0ZXMiLCJjYW5kaWRhdGUiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNGaXJzdCIsIml0ZW1zIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlQ2FuZGlkYXRlcyIsIml0ZW0iLCJ0YWdOYW1lIiwidW5tb3VudEV2ZW50IiwicmVtb3ZlIiwiJDQ1UUh2JHVzZUNhbGxiYWNrIiwiaXNUYWJLZXkiLCJhbHRLZXkiLCJjdHJsS2V5IiwibWV0YUtleSIsImNvbnRhaW5lciIsImN1cnJlbnRUYXJnZXQiLCJmaXJzdCIsImxhc3QiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZmluZFZpc2libGUiLCJyZXZlcnNlIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGdldFRhYmJhYmxlRWRnZXMiLCJzaGlmdEtleSIsIiQ0NVFIdiRjcmVhdGVFbGVtZW50IiwiJDQ1UUh2JFByaW1pdGl2ZSIsIiQ0NVFIdiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsInRhYkluZGV4Iiwib25LZXlEb3duIiwibm9kZXMiLCJ3YWxrZXIiLCJjcmVhdGVUcmVlV2Fsa2VyIiwiTm9kZUZpbHRlciIsIlNIT1dfRUxFTUVOVCIsImFjY2VwdE5vZGUiLCJpc0hpZGRlbklucHV0IiwiZGlzYWJsZWQiLCJoaWRkZW4iLCJGSUxURVJfU0tJUCIsIkZJTFRFUl9BQ0NFUFQiLCJuZXh0Tm9kZSIsInB1c2giLCJjdXJyZW50Tm9kZSIsImVsZW1lbnRzIiwiZWxlbWVudCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRpc0hpZGRlbiIsInVwVG8iLCJnZXRDb21wdXRlZFN0eWxlIiwidmlzaWJpbGl0eSIsImRpc3BsYXkiLCJwYXJlbnRFbGVtZW50IiwiZm9jdXMiLCJwcmV2ZW50U2Nyb2xsIiwiSFRNTElucHV0RWxlbWVudCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRpc1NlbGVjdGFibGVJbnB1dCIsInN0YWNrIiwiYWN0aXZlRm9jdXNTY29wZSIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRhcnJheVJlbW92ZSIsInVuc2hpZnQiLCJfc3RhY2skIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2siLCJhcnJheSIsInVwZGF0ZWRBcnJheSIsInNwbGljZSIsIiRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIiwiJDdTWGwyJGZvcndhcmRSZWYiLCJfZ2xvYmFsVGhpcyRkb2N1bWVudCIsInBvcnRhbFByb3BzIiwiJDdTWGwyJHJlYWN0ZG9tIiwiY3JlYXRlUG9ydGFsIiwiJDdTWGwyJGNyZWF0ZUVsZW1lbnQiLCIkN1NYbDIkUHJpbWl0aXZlIiwiJDdTWGwyJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIiLCJwcmVzZW50IiwicHJlc2VuY2UiLCIkaXFxM3IkdXNlU3RhdGUiLCJzdHlsZXNSZWYiLCIkaXFxM3IkdXNlUmVmIiwicHJldlByZXNlbnRSZWYiLCJwcmV2QW5pbWF0aW9uTmFtZVJlZiIsImluaXRpYWxTdGF0ZSIsInN0YXRlIiwic2VuZCIsIm1hY2hpbmUiLCIkaXFxM3IkdXNlUmVkdWNlciIsIm5leHRTdGF0ZSIsIiRmZTk2M2IzNTUzNDdjYzY4JGV4cG9ydCQzZTY1NDNkZTE0Zjg2MTRmIiwibW91bnRlZCIsIlVOTU9VTlQiLCJBTklNQVRJT05fT1VUIiwidW5tb3VudFN1c3BlbmRlZCIsIk1PVU5UIiwiQU5JTUFUSU9OX0VORCIsInVubW91bnRlZCIsIiRpcXEzciR1c2VFZmZlY3QiLCJjdXJyZW50QW5pbWF0aW9uTmFtZSIsIiQ5MjFhODg5Y2VlNmRmN2U4JHZhciRnZXRBbmltYXRpb25OYW1lIiwiJGlxcTNyJHVzZUxheW91dEVmZmVjdCIsInN0eWxlcyIsIndhc1ByZXNlbnQiLCJwcmV2QW5pbWF0aW9uTmFtZSIsImhhbmRsZUFuaW1hdGlvbkVuZCIsImlzQ3VycmVudEFuaW1hdGlvbiIsImluY2x1ZGVzIiwiYW5pbWF0aW9uTmFtZSIsIiRpcXEzciRmbHVzaFN5bmMiLCJoYW5kbGVBbmltYXRpb25TdGFydCIsImlzUHJlc2VudCIsIiRpcXEzciR1c2VDYWxsYmFjayIsIiQ5MjFhODg5Y2VlNmRmN2U4JHZhciR1c2VQcmVzZW5jZSIsIiRpcXEzciRDaGlsZHJlbiIsIiRpcXEzciR1c2VDb21wb3NlZFJlZnMiLCIkaXFxM3IkY2xvbmVFbGVtZW50IiwiJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNvdW50IiwiJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGI3ZWNlMjRhMjJhZWRhOGMiLCIkMXdFcnokdXNlRWZmZWN0IiwiX2VkZ2VHdWFyZHMkIiwiX2VkZ2VHdWFyZHMkMiIsImVkZ2VHdWFyZHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaW5zZXJ0QWRqYWNlbnRFbGVtZW50IiwiJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNyZWF0ZUZvY3VzR3VhcmQiLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiY3NzVGV4dCIsIl9fYXNzaWduIiwidCIsInMiLCJuIiwicCIsIl9fcmVzdCIsImUiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInplcm9SaWdodENsYXNzTmFtZSIsImZ1bGxXaWR0aENsYXNzTmFtZSIsInVzZU1lcmdlUmVmcyIsImRlZmF1bHRWYWx1ZSIsImluaXRpYWxWYWx1ZSIsIm5ld1ZhbHVlIiwiYXNzaWduUmVmIiwiZmFjYWRlIiwiSXRvSSIsImEiLCJTaWRlQ2FyIiwiX2EiLCJzaWRlQ2FyIiwicmVzdCIsIlRhcmdldCIsInJlYWQiLCJSZWFjdCIsImlzU2lkZUNhckV4cG9ydCIsImVmZmVjdENhciIsIm9wdGlvbnMiLCJtZWRpdW0iLCJkZWZhdWx0cyIsIm1pZGRsZXdhcmUiLCJidWZmZXIiLCJhc3NpZ25lZCIsInVzZU1lZGl1bSIsImRhdGEiLCJ4IiwiYXNzaWduU3luY01lZGl1bSIsImNiIiwiY2JzIiwiYXNzaWduTWVkaXVtIiwicGVuZGluZ1F1ZXVlIiwiZXhlY3V0ZVF1ZXVlIiwiY3ljbGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJpbm5lckNyZWF0ZU1lZGl1bSIsImFzeW5jIiwic3NyIiwiY3JlYXRlU2lkZWNhck1lZGl1bSIsIm5vdGhpbmciLCJSZW1vdmVTY3JvbGwiLCJmb3J3YXJkUmVmIiwicGFyZW50UmVmIiwidXNlUmVmIiwib25TY3JvbGxDYXB0dXJlIiwib25XaGVlbENhcHR1cmUiLCJvblRvdWNoTW92ZUNhcHR1cmUiLCJjYWxsYmFja3MiLCJzZXRDYWxsYmFja3MiLCJmb3J3YXJkUHJvcHMiLCJjbGFzc05hbWUiLCJyZW1vdmVTY3JvbGxCYXIiLCJlbmFibGVkIiwic2hhcmRzIiwibm9Jc29sYXRpb24iLCJpbmVydCIsImFsbG93UGluY2hab29tIiwiX2IiLCJhcyIsIkNvbnRhaW5lciIsImNvbnRhaW5lclJlZiIsImNvbnRhaW5lclByb3BzIiwiRnJhZ21lbnQiLCJsb2NrUmVmIiwiY2xvbmVFbGVtZW50IiwiQ2hpbGRyZW4iLCJkZWZhdWx0UHJvcHMiLCJjbGFzc05hbWVzIiwiZnVsbFdpZHRoIiwiemVyb1JpZ2h0IiwibWFrZVN0eWxlVGFnIiwidGFnIiwibm9uY2UiLCJfX3dlYnBhY2tfbm9uY2VfXyIsImdldE5vbmNlIiwic3R5bGVzaGVldFNpbmdsZXRvbiIsImNvdW50ZXIiLCJzdHlsZXNoZWV0IiwiY3NzIiwic3R5bGVTaGVldCIsImFwcGVuZENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpbnNlcnRTdHlsZVRhZyIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInN0eWxlU2luZ2xldG9uIiwic2hlZXQiLCJ1c2VTdHlsZSIsImlzRHluYW1pYyIsInVzZUVmZmVjdCIsImR5bmFtaWMiLCJ6ZXJvR2FwIiwibGVmdCIsInRvcCIsInJpZ2h0IiwiZ2FwIiwicGFyc2UiLCJwYXJzZUludCIsImdldEdhcFdpZHRoIiwiZ2FwTW9kZSIsIm9mZnNldHMiLCJjcyIsImdldE9mZnNldCIsImRvY3VtZW50V2lkdGgiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCIsIndpbmRvd1dpZHRoIiwiaW5uZXJXaWR0aCIsIk1hdGgiLCJtYXgiLCJTdHlsZSIsImdldFN0eWxlcyIsImFsbG93UmVsYXRpdmUiLCJpbXBvcnRhbnQiLCJjb25jYXQiLCJSZW1vdmVTY3JvbGxCYXIiLCJub1JlbGF0aXZlIiwibm9JbXBvcnRhbnQiLCJ1c2VNZW1vIiwicGFzc2l2ZVN1cHBvcnRlZCIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiZXJyIiwibm9uUGFzc2l2ZSIsInBhc3NpdmUiLCJlbGVtZW50Q2FuQmVTY3JvbGxlZCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIiwib3ZlcmZsb3dYIiwiYWx3YXlzQ29udGFpbnNTY3JvbGwiLCJsb2NhdGlvbkNvdWxkQmVTY3JvbGxlZCIsImF4aXMiLCJTaGFkb3dSb290IiwiaG9zdCIsImVsZW1lbnRDb3VsZEJlU2Nyb2xsZWQiLCJnZXRTY3JvbGxWYXJpYWJsZXMiLCJlbGVtZW50Q291bGRCZVZTY3JvbGxlZCIsImVsZW1lbnRDb3VsZEJlSFNjcm9sbGVkIiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0Iiwic2Nyb2xsTGVmdCIsInNjcm9sbFdpZHRoIiwiZ2V0SFNjcm9sbFZhcmlhYmxlcyIsImdldFRvdWNoWFkiLCJjaGFuZ2VkVG91Y2hlcyIsImNsaWVudFgiLCJjbGllbnRZIiwiZ2V0RGVsdGFYWSIsImRlbHRhWCIsImRlbHRhWSIsImV4dHJhY3RSZWYiLCJnZW5lcmF0ZVN0eWxlIiwiaWRDb3VudGVyIiwibG9ja1N0YWNrIiwiZXhwb3J0ZWQiLCJzaG91bGRQcmV2ZW50UXVldWUiLCJ0b3VjaFN0YXJ0UmVmIiwiYWN0aXZlQXhpcyIsImxhc3RQcm9wcyIsImNsYXNzTGlzdCIsImFsbG93XzEiLCJ0byIsInBhY2siLCJhciIsImwiLCJfX3NwcmVhZEFycmF5IiwiZWwiLCJzaG91bGRDYW5jZWxFdmVudCIsInVzZUNhbGxiYWNrIiwicGFyZW50IiwidG91Y2hlcyIsImN1cnJlbnRBeGlzIiwidG91Y2giLCJ0b3VjaFN0YXJ0IiwibW92ZURpcmVjdGlvbiIsImFicyIsImNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24iLCJjYW5jZWxpbmdBeGlzIiwiZW5kVGFyZ2V0Iiwic291cmNlRGVsdGEiLCJub092ZXJzY3JvbGwiLCJkaXJlY3Rpb25GYWN0b3IiLCJkaXJlY3Rpb24iLCJnZXREaXJlY3Rpb25GYWN0b3IiLCJkZWx0YSIsInRhcmdldEluTG9jayIsInNob3VsZENhbmNlbFNjcm9sbCIsImlzRGVsdGFQb3NpdGl2ZSIsImF2YWlsYWJsZVNjcm9sbCIsImF2YWlsYWJsZVNjcm9sbFRvcCIsInBvc2l0aW9uIiwiZWxlbWVudFNjcm9sbCIsImhhbmRsZVNjcm9sbCIsInNob3VsZFByZXZlbnQiLCJfZXZlbnQiLCJzb3VyY2VFdmVudCIsInkiLCJzaG91bGQiLCJzaGFyZE5vZGVzIiwic2hvdWxkQ2FuY2VsIiwic2Nyb2xsVG91Y2hTdGFydCIsInNjcm9sbFdoZWVsIiwic2Nyb2xsVG91Y2hNb3ZlIiwiaW5zdCIsIlJlYWN0UmVtb3ZlU2Nyb2xsIiwiJDAxYjljJFJlbW92ZVNjcm9sbCIsImNvdW50ZXJNYXAiLCJXZWFrTWFwIiwidW5jb250cm9sbGVkTm9kZXMiLCJtYXJrZXJNYXAiLCJsb2NrQ291bnQiLCJ1bndyYXBIb3N0IiwiYXBwbHlBdHRyaWJ1dGVUb090aGVycyIsIm9yaWdpbmFsVGFyZ2V0IiwibWFya2VyTmFtZSIsImNvbnRyb2xBdHRyaWJ1dGUiLCJ0YXJnZXRzIiwiY29ycmVjdGVkVGFyZ2V0IiwiY29uc29sZSIsImVycm9yIiwiY29ycmVjdFRhcmdldHMiLCJpc0FycmF5IiwibWFya2VyQ291bnRlciIsImhpZGRlbk5vZGVzIiwiZWxlbWVudHNUb0tlZXAiLCJlbGVtZW50c1RvU3RvcCIsImtlZXAiLCJoYXMiLCJkZWVwIiwiYXR0ciIsImdldEF0dHJpYnV0ZSIsImFscmVhZHlIaWRkZW4iLCJjb3VudGVyVmFsdWUiLCJtYXJrZXJWYWx1ZSIsInNldCIsImNsZWFyIiwicmVtb3ZlQXR0cmlidXRlIiwiaGlkZU90aGVycyIsImFjdGl2ZVBhcmVudE5vZGUiLCJnZXREZWZhdWx0UGFyZW50IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERJQUxPR19OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGNyZWF0ZURpYWxvZ0NvbnRleHQiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkY2M3MDI3NzNiOGVhM2U0MSIsIiQ2N1VIbSRjcmVhdGVDb250ZXh0U2NvcGUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nUHJvdmlkZXIiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQb3J0YWxQcm92aWRlciIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VQb3J0YWxDb250ZXh0IiwiZm9yY2VNb3VudCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmQxZDA2Yzc5YmUxOWUxNyIsIiQ2N1VIbSRmb3J3YXJkUmVmIiwicG9ydGFsQ29udGV4dCIsIl9fc2NvcGVEaWFsb2ciLCJvdmVybGF5UHJvcHMiLCJtb2RhbCIsIiQ2N1VIbSRjcmVhdGVFbGVtZW50IiwiJDY3VUhtJFByZXNlbmNlIiwib3BlbiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dPdmVybGF5SW1wbCIsIiQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ2N1VIbSRSZW1vdmVTY3JvbGwiLCIkNjdVSG0kU2xvdCIsImNvbnRlbnRSZWYiLCIkNjdVSG0kUHJpbWl0aXZlIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGdldFN0YXRlIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiNmQ5NTY1ZGUxZTA2OGNmIiwiY29udGVudFByb3BzIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRNb2RhbCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50Tm9uTW9kYWwiLCIkNjdVSG0kdXNlUmVmIiwiJDY3VUhtJHVzZUNvbXBvc2VkUmVmcyIsIiQ2N1VIbSR1c2VFZmZlY3QiLCJjb250ZW50IiwiJDY3VUhtJGhpZGVPdGhlcnMiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudEltcGwiLCJ0cmFwRm9jdXMiLCJvbkNsb3NlQXV0b0ZvY3VzIiwiJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiX2NvbnRleHQkdHJpZ2dlclJlZiRjIiwidHJpZ2dlclJlZiIsImN0cmxMZWZ0Q2xpY2siLCJidXR0b24iLCJoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZiIsImhhc1BvaW50ZXJEb3duT3V0c2lkZVJlZiIsIl9wcm9wcyRvbkNsb3NlQXV0b0ZvYyIsIl9jb250ZXh0JHRyaWdnZXJSZWYkYzIiLCJfcHJvcHMkb25JbnRlcmFjdE91dHMiLCJfY29udGV4dCR0cmlnZ2VyUmVmJGMzIiwib25PcGVuQXV0b0ZvY3VzIiwiJDY3VUhtJHVzZUZvY3VzR3VhcmRzIiwiJDY3VUhtJEZyYWdtZW50IiwiJDY3VUhtJEZvY3VzU2NvcGUiLCIkNjdVSG0kRGlzbWlzc2FibGVMYXllciIsInJvbGUiLCJjb250ZW50SWQiLCJkZXNjcmlwdGlvbklkIiwidGl0bGVJZCIsIm9uT3BlbkNoYW5nZSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDE2Zjc2MzhlNGEzNGI5MDkiLCJ0aXRsZVByb3BzIiwiaDIiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkOTRlOTRjMmVjMmM5NTRkNSIsImRlc2NyaXB0aW9uUHJvcHMiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYyIsImNsb3NlUHJvcHMiLCJvbkNsaWNrIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDY5YjYyYTQ5MzkzOTE3ZDYiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlV2FybmluZ0NvbnRleHQiLCIkNjdVSG0kY3JlYXRlQ29udGV4dCIsImNvbnRlbnROYW1lIiwidGl0bGVOYW1lIiwiZG9jc1NsdWciLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsIm9wZW5Qcm9wIiwiZGVmYXVsdE9wZW4iLCJzZXRPcGVuIiwiJDY3VUhtJHVzZUNvbnRyb2xsYWJsZVN0YXRlIiwiJDY3VUhtJHVzZUlkIiwib25PcGVuVG9nZ2xlIiwiJDY3VUhtJHVzZUNhbGxiYWNrIiwicHJldk9wZW4iLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyIsIiQ2N1VIbSRDaGlsZHJlbiIsIiQ2N1VIbSRQb3J0YWwiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMzkzZWRjNzk4YzQ3Mzc5ZCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmMzljMmQxNjVjZDg2MWZlIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJGNyZWF0ZUFsZXJ0RGlhbG9nQ29udGV4dCIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiODg5MTg4MDc1MWMyYzViIiwiJDRrNEQwJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ0azREMCRjcmVhdGVEaWFsb2dTY29wZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2IiwiJDRrNEQwJGZvcndhcmRSZWYiLCJfX3Njb3BlQWxlcnREaWFsb2ciLCJkaWFsb2dTY29wZSIsIiQ0azREMCRjcmVhdGVFbGVtZW50IiwiJDRrNEQwJE92ZXJsYXkiLCIkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJEFsZXJ0RGlhbG9nQ29udGVudFByb3ZpZGVyIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZUFsZXJ0RGlhbG9nQ29udGVudENvbnRleHQiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZCIsIiQ0azREMCR1c2VDb21wb3NlZFJlZnMiLCIkNGs0RDAkdXNlUmVmIiwiY2FuY2VsUmVmIiwiJDRrNEQwJFdhcm5pbmdQcm92aWRlciIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUSVRMRV9OQU1FIiwiJDRrNEQwJENvbnRlbnQiLCIkNGs0RDAkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJfY2FuY2VsUmVmJGN1cnJlbnQiLCIkNGs0RDAkU2xvdHRhYmxlIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNyIsIiQ0azREMCRUaXRsZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhMjNiNTVjZGU1NWFkOWE1IiwiJDRrNEQwJERlc2NyaXB0aW9uIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJhbGVydERpYWxvZ1Byb3BzIiwiJDRrNEQwJFJvb3QiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyIsIiQ0azREMCRQb3J0YWwiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGUxOWNkNWY5Mzc2ZjhjZWUiLCJhY3Rpb25Qcm9wcyIsIiQ0azREMCRDbG9zZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ4NDhjOWI3ZWFkMGRmOTY3IiwiY2FuY2VsUHJvcHMiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQzOTNlZGM3OThjNDczNzlkIiwiaGFzT3duIiwiY2xhc3NlcyIsImFyZyIsImFyZ1R5cGUiLCJpbm5lciIsIm1vZHVsZSIsImV4cG9ydHMiLCJkZWZhdWx0IiwiX3BhdGgiLCJfZyIsIlN2Z0Nsb3NlIiwieG1sbnMiLCJ3aWR0aCIsImhlaWdodCIsImZpbGwiLCJtYXNrVW5pdHMiLCJtYXNrVHlwZSIsImQiLCJtYXNrIiwiTG9hZGVyIiwiX2MiLCJfZCIsIl9lIiwiaW5oZXJpdENvbG9yIiwibG9hZGVyIiwiQnV0dG9uIiwidmFyaWFudCIsIl9mIiwicHJlZml4IiwiX2giLCJzdWZmaXgiLCJfaiIsIl9rIiwiX2wiLCJzaG93TG9hZGVyIiwiQWxlcnQiLCJhY3Rpb25UZXh0Iiwib25BY3Rpb25DbGljayIsImNhbmNlbFRleHQiLCJvbkNhbmNlbENsaWNrIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsImlzT2tEaXNhYmxlZCIsImFjdGlvbkJ1dHRvblR5cGUiLCJtYXhXaWR0aCIsIm9uQ2xvc2UiLCJBbGVydERpYWxvZy5Sb290IiwiQWxlcnREaWFsb2cuUG9ydGFsIiwicG9ydGFsIiwiQWxlcnREaWFsb2cuT3ZlcmxheSIsIm92ZXJsYXkiLCJBbGVydERpYWxvZy5Db250ZW50IiwiY2xvc2UiLCJDbG9zZUljb24iLCJBbGVydERpYWxvZy5UaXRsZSIsIkFsZXJ0RGlhbG9nLkRlc2NyaXB0aW9uIiwiYnV0dG9ucyIsIkFsZXJ0RGlhbG9nLkNhbmNlbCIsIkFsZXJ0RGlhbG9nLkFjdGlvbiIsIiQwMTBjMjkxM2RiZDJmZTNkJGV4cG9ydCQ1Y2FlMzYxYWQ4MmRjZThiIiwiJDhMdnZLJHVzZVJlZiIsInByZXZpb3VzIiwiJDhMdnZLJHVzZU1lbW8iLCIkZGI2YzM0ODUxNTBiOGU2NiRleHBvcnQkMWFiN2FlNzE0Njk4YzRiOCIsInNldFNpemUiLCIkOWd5R1IkdXNlU3RhdGUiLCIkOWd5R1IkdXNlTGF5b3V0RWZmZWN0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsImVudHJ5IiwiYm9yZGVyU2l6ZUVudHJ5IiwiYm9yZGVyU2l6ZSIsImJveCIsInVub2JzZXJ2ZSIsIiRlNjk4YTcyZTkzMjQwMzQ2JHZhciRDSEVDS0JPWF9OQU1FIiwiJGU2OThhNzJlOTMyNDAzNDYkdmFyJGNyZWF0ZUNoZWNrYm94Q29udGV4dCIsIiRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCRiNTY2YzRmZjU0ODhlYTAxIiwiJDFicHZTJGNyZWF0ZUNvbnRleHRTY29wZSIsIiRlNjk4YTcyZTkzMjQwMzQ2JHZhciRDaGVja2JveFByb3ZpZGVyIiwiJGU2OThhNzJlOTMyNDAzNDYkdmFyJHVzZUNoZWNrYm94Q29udGV4dCIsIiRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCQ0ODUxM2Y2YjlmOGNlNjJkIiwiJDFicHZTJGZvcndhcmRSZWYiLCJfX3Njb3BlQ2hlY2tib3giLCJjaGVja2VkIiwiY2hlY2tlZFByb3AiLCJkZWZhdWx0Q2hlY2tlZCIsInJlcXVpcmVkIiwib25DaGVja2VkQ2hhbmdlIiwiY2hlY2tib3hQcm9wcyIsInNldEJ1dHRvbiIsIiQxYnB2UyR1c2VTdGF0ZSIsIiQxYnB2UyR1c2VDb21wb3NlZFJlZnMiLCJoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZiIsIiQxYnB2UyR1c2VSZWYiLCJpc0Zvcm1Db250cm9sIiwiY2xvc2VzdCIsInNldENoZWNrZWQiLCIkMWJwdlMkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCJpbml0aWFsQ2hlY2tlZFN0YXRlUmVmIiwiJDFicHZTJHVzZUVmZmVjdCIsImZvcm0iLCJyZXNldCIsIiQxYnB2UyRjcmVhdGVFbGVtZW50IiwiJDFicHZTJFByaW1pdGl2ZSIsIiQxYnB2UyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiRlNjk4YTcyZTkzMjQwMzQ2JHZhciRpc0luZGV0ZXJtaW5hdGUiLCIkZTY5OGE3MmU5MzI0MDM0NiR2YXIkZ2V0U3RhdGUiLCIkMWJwdlMkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJwcmV2Q2hlY2tlZCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwic3RvcFByb3BhZ2F0aW9uIiwiJGU2OThhNzJlOTMyNDAzNDYkdmFyJEJ1YmJsZUlucHV0IiwiY29udHJvbCIsInRyYW5zZm9ybSIsImlucHV0UHJvcHMiLCIkMWJwdlMkdXNlUHJldmlvdXMiLCJjb250cm9sU2l6ZSIsIiQxYnB2UyR1c2VTaXplIiwiaW5wdXQiLCJpbnB1dFByb3RvIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiRXZlbnQiLCJpbmRldGVybWluYXRlIiwib3BhY2l0eSIsIm1hcmdpbiIsIiRlNjk4YTcyZTkzMjQwMzQ2JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJGU2OThhNzJlOTMyNDAzNDYkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAiLCJpbmRpY2F0b3JQcm9wcyIsIiQxYnB2UyRQcmVzZW5jZSIsInNwYW4iLCJfZGVmcyIsIlN2Z0tleWJvYXJkQXJyb3dEb3duIiwidmlld0JveCIsIlN2Z0NoZWNrYm94IiwiU3ZnQ2hlY2tib3hVbmNoZWNrIiwiU3ZnUGFzc3dvcmRFeWUiLCJTdmdQYXNzd29yZEV5ZUNyb3NzZWQiLCJjbGlwUGF0aCIsIiRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDdWNEpaJGZvcndhcmRSZWYiLCIkN1Y0SlokY3JlYXRlRWxlbWVudCIsIiQ3VjRKWiRQcmltaXRpdmUiLCJsYWJlbCIsIiQ3VjRKWiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIm9uTW91c2VEb3duIiwiX3Byb3BzJG9uTW91c2VEb3duIiwiZ2V0V2VpZ2h0Q2xhc3MiLCJ3ZWlnaHQiLCJzZW1pQm9sZCIsInJlZ3VsYXIiLCJMYWJlbCIsImh0bWxGb3IiLCJSZWR1eExhYmVsLlJvb3QiLCJDaGVja2JveCIsImNvbnRyb2xsZWRQcm9wcyIsInN0YXR1cyIsIkNoZWNrYm94UHJpbWl0aXZlcy5Sb290IiwiQ2hlY2tib3hQcmltaXRpdmVzLkluZGljYXRvciIsIkNoZWNrYm94SWNvbiIsIkNoZWNrYm94VW5jaGVja0ljb24iLCJGb3JtR3JvdXAiLCJqdXN0aWZ5IiwiYWxpZ25JdGVtcyIsImZvcm1Hcm91cCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsIklucHV0SGludCIsInJvb3QiLCJJbnB1dCIsImF1dG9Db21wbGV0ZSIsImNvdW50ZXJWaXNpYmlsaXR5TGltaXQiLCJlbmRBZG9ybm1lbnQiLCJlbmRBZG9ybm1lbnRDbGFzc05hbWUiLCJfbSIsImVycm9yTWVzc2FnZSIsIl9vIiwiaGludCIsIl9wIiwiaW5wdXRXcmFwcGVyQ2xhc3MiLCJfcSIsImlzTGFiZWxTdGF0aWMiLCJfciIsIl9zIiwibWF4TGVuZ3RoIiwiX3QiLCJvbkJsdXIiLCJvbkNoYW5nZUZyb21Qcm9wcyIsIm9uRm9jdXMiLCJfdSIsIm9wdGlvbmFsVGV4dCIsIl92IiwicGxhY2Vob2xkZXIiLCJfdyIsIl94Iiwic3RhcnRBZG9ybm1lbnQiLCJfeSIsInZhbHVlRnJvbVByb3BzIiwicmVzdFByb3BzIiwiaGFzRGVmYXVsdFZhbHVlIiwiX3oiLCJpc1Bhc3N3b3JkVmlzaWJsZSIsInNldElzUGFzc3dvcmRWaXNpYmxlIiwiXzAiLCJpbnRlcm5hbFZhbHVlIiwic2V0SW50ZXJuYWxWYWx1ZSIsIl8xIiwiaXNGb2N1c2VkIiwic2V0SXNGb2N1c2VkIiwiaXNQYXNzd29yZCIsImZpZWxkVHlwZSIsImxldHRlckNvdW50IiwiaXNMaW1pdFJlYWNoZWQiLCJpc0Rpc2FibGVkIiwiaGFzU3RhcnRBZG9ybm1lbnQiLCJpc0Vycm9yIiwic3RhdGljIiwib3B0aW9uYWwiLCJjb3JyZWN0ZWRUb3AiLCJpbnB1dFdyYXBwZXIiLCJmb290ZXIiLCJmb290ZXJNZXNzYWdlIiwidG9nZ2xlUGFzc3dvcmRCdXR0b24iLCJQYXNzd29yZEV5ZUljb24iLCJQYXNzd29yZEV5ZUNyb3NzZWRJY29uIiwiTW9kYWwiLCJjb250ZW50Q2xhc3NOYW1lIiwiaGlkZUNsb3NlQnV0dG9uIiwibWF4SGVpZ2h0Iiwib3ZlcmxheUNsYXNzTmFtZSIsIkRpYWxvZy5Sb290IiwiRGlhbG9nLlBvcnRhbCIsIkRpYWxvZy5PdmVybGF5IiwiRGlhbG9nLkNvbnRlbnQiLCJEaWFsb2cuVGl0bGUiLCJEaWFsb2cuQ2xvc2UiLCJnZXRBbGlnbm1lbnQiLCJwbGFjZW1lbnQiLCJzcGxpdCIsImdldExlbmd0aEZyb21BeGlzIiwiZ2V0U2lkZSIsImdldE1haW5BeGlzRnJvbVBsYWNlbWVudCIsImNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50IiwiX3JlZiIsInJ0bCIsInJlZmVyZW5jZSIsImZsb2F0aW5nIiwiY29tbW9uWCIsImNvbW1vblkiLCJtYWluQXhpcyIsImNvbW1vbkFsaWduIiwiaXNWZXJ0aWNhbCIsImNvb3JkcyIsImV2YWx1YXRlIiwicGFyYW0iLCJnZXRTaWRlT2JqZWN0RnJvbVBhZGRpbmciLCJwYWRkaW5nIiwiYm90dG9tIiwiZXhwYW5kUGFkZGluZ09iamVjdCIsInJlY3RUb0NsaWVudFJlY3QiLCJyZWN0IiwiZGV0ZWN0T3ZlcmZsb3ciLCJfYXdhaXQkcGxhdGZvcm0kaXNFbGUiLCJwbGF0Zm9ybSIsInJlY3RzIiwic3RyYXRlZ3kiLCJib3VuZGFyeSIsInJvb3RCb3VuZGFyeSIsImVsZW1lbnRDb250ZXh0IiwiYWx0Qm91bmRhcnkiLCJwYWRkaW5nT2JqZWN0IiwiY2xpcHBpbmdDbGllbnRSZWN0IiwiZ2V0Q2xpcHBpbmdSZWN0IiwiaXNFbGVtZW50IiwiY29udGV4dEVsZW1lbnQiLCJnZXREb2N1bWVudEVsZW1lbnQiLCJvZmZzZXRQYXJlbnQiLCJnZXRPZmZzZXRQYXJlbnQiLCJvZmZzZXRTY2FsZSIsImdldFNjYWxlIiwiZWxlbWVudENsaWVudFJlY3QiLCJjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCIsIm1pbiIsIndpdGhpbiIsIm1pbiQxIiwibWF4JDEiLCJhcnJvdyIsImFycm93RGltZW5zaW9ucyIsImdldERpbWVuc2lvbnMiLCJpc1lBeGlzIiwibWluUHJvcCIsIm1heFByb3AiLCJjbGllbnRQcm9wIiwiZW5kRGlmZiIsInN0YXJ0RGlmZiIsImFycm93T2Zmc2V0UGFyZW50IiwiY2xpZW50U2l6ZSIsImNlbnRlclRvUmVmZXJlbmNlIiwibGFyZ2VzdFBvc3NpYmxlUGFkZGluZyIsIm1pblBhZGRpbmciLCJtYXhQYWRkaW5nIiwiY2VudGVyIiwib2Zmc2V0Iiwic2hvdWxkQWRkT2Zmc2V0IiwiY2VudGVyT2Zmc2V0Iiwic2lkZXMiLCJvcHBvc2l0ZVNpZGVNYXAiLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsInJlcGxhY2UiLCJzaWRlIiwib3Bwb3NpdGVBbGlnbm1lbnRNYXAiLCJzdGFydCIsImVuZCIsImdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50IiwiYWxpZ25tZW50IiwiZmxpcCIsIl9taWRkbGV3YXJlRGF0YSRmbGlwIiwibWlkZGxld2FyZURhdGEiLCJpbml0aWFsUGxhY2VtZW50IiwiY2hlY2tNYWluQXhpcyIsImNyb3NzQXhpcyIsImNoZWNrQ3Jvc3NBeGlzIiwiZmFsbGJhY2tQbGFjZW1lbnRzIiwic3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIiwiZmFsbGJhY2tTdHJhdGVneSIsImZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24iLCJmbGlwQWxpZ25tZW50IiwiZGV0ZWN0T3ZlcmZsb3dPcHRpb25zIiwiaXNCYXNlUGxhY2VtZW50IiwiaXNSVEwiLCJvcHBvc2l0ZVBsYWNlbWVudCIsImdldEV4cGFuZGVkUGxhY2VtZW50cyIsImxpc3QiLCJpc1N0YXJ0IiwibHIiLCJybCIsInRiIiwiYnQiLCJnZXRTaWRlTGlzdCIsImdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMiLCJwbGFjZW1lbnRzIiwib3ZlcmZsb3dzIiwib3ZlcmZsb3dzRGF0YSIsIm1haW4iLCJjcm9zcyIsIm1haW5BbGlnbm1lbnRTaWRlIiwiZ2V0QWxpZ25tZW50U2lkZXMiLCJldmVyeSIsIl9taWRkbGV3YXJlRGF0YSRmbGlwMiIsIl9vdmVyZmxvd3NEYXRhJGZpbHRlciIsIm5leHRJbmRleCIsIm5leHRQbGFjZW1lbnQiLCJyZXNldFBsYWNlbWVudCIsInNvcnQiLCJiIiwiX292ZXJmbG93c0RhdGEkbWFwJHNvIiwiYWNjIiwiZ2V0U2lkZU9mZnNldHMiLCJpc0FueVNpZGVGdWxseUNsaXBwZWQiLCJoaWRlIiwicmVmZXJlbmNlSGlkZGVuT2Zmc2V0cyIsInJlZmVyZW5jZUhpZGRlbiIsImVzY2FwZWRPZmZzZXRzIiwiZXNjYXBlZCIsImRpZmZDb29yZHMiLCJtYWluQXhpc011bHRpIiwiY3Jvc3NBeGlzTXVsdGkiLCJyYXdWYWx1ZSIsImFsaWdubWVudEF4aXMiLCJjb252ZXJ0VmFsdWVUb0Nvb3JkcyIsImdldENyb3NzQXhpcyIsInNoaWZ0IiwibGltaXRlciIsImZuIiwibWFpbkF4aXNDb29yZCIsImNyb3NzQXhpc0Nvb3JkIiwibWF4U2lkZSIsImxpbWl0ZWRDb29yZHMiLCJsaW1pdFNoaWZ0IiwicmF3T2Zmc2V0IiwiY29tcHV0ZWRPZmZzZXQiLCJsZW4iLCJsaW1pdE1pbiIsImxpbWl0TWF4IiwiX21pZGRsZXdhcmVEYXRhJG9mZnNlIiwiX21pZGRsZXdhcmVEYXRhJG9mZnNlMiIsImlzT3JpZ2luU2lkZSIsImlzWEF4aXMiLCJoZWlnaHRTaWRlIiwid2lkdGhTaWRlIiwib3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQiLCJvdmVyZmxvd0F2YWlsYWJsZVdpZHRoIiwibm9TaGlmdCIsImF2YWlsYWJsZUhlaWdodCIsImF2YWlsYWJsZVdpZHRoIiwibWF4aW11bUNsaXBwaW5nV2lkdGgiLCJtYXhpbXVtQ2xpcHBpbmdIZWlnaHQiLCJ4TWluIiwieE1heCIsInlNaW4iLCJ5TWF4IiwibmV4dERpbWVuc2lvbnMiLCJnZXRXaW5kb3ciLCJkZWZhdWx0VmlldyIsImdldENvbXB1dGVkU3R5bGUkMSIsImlzTm9kZSIsImdldE5vZGVOYW1lIiwibm9kZU5hbWUiLCJ0b0xvd2VyQ2FzZSIsImlzSFRNTEVsZW1lbnQiLCJIVE1MRWxlbWVudCIsIkVsZW1lbnQiLCJpc1NoYWRvd1Jvb3QiLCJpc092ZXJmbG93RWxlbWVudCIsImlzVGFibGVFbGVtZW50IiwiaXNDb250YWluaW5nQmxvY2siLCJzYWZhcmkiLCJpc1NhZmFyaSIsInBlcnNwZWN0aXZlIiwiYmFja2Ryb3BGaWx0ZXIiLCJ3aWxsQ2hhbmdlIiwiY29udGFpbiIsIkNTUyIsInN1cHBvcnRzIiwiaXNMYXN0VHJhdmVyc2FibGVOb2RlIiwicm91bmQiLCJnZXRDc3NEaW1lbnNpb25zIiwicGFyc2VGbG9hdCIsImhhc09mZnNldCIsInNob3VsZEZhbGxiYWNrIiwiZmFsbGJhY2siLCJ1bndyYXBFbGVtZW50IiwiRkFMTEJBQ0tfU0NBTEUiLCJkb21FbGVtZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiTnVtYmVyIiwiaXNGaW5pdGUiLCJub09mZnNldHMiLCJnZXRWaXN1YWxPZmZzZXRzIiwiaXNGaXhlZCIsImZsb2F0aW5nT2Zmc2V0UGFyZW50IiwiX3dpbiR2aXN1YWxWaWV3cG9ydCIsIl93aW4kdmlzdWFsVmlld3BvcnQyIiwid2luIiwidmlzdWFsVmlld3BvcnQiLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwiaW5jbHVkZVNjYWxlIiwiaXNGaXhlZFN0cmF0ZWd5IiwiY2xpZW50UmVjdCIsInNjYWxlIiwidmlzdWFsT2Zmc2V0cyIsIm9mZnNldFdpbiIsImN1cnJlbnRJRnJhbWUiLCJmcmFtZUVsZW1lbnQiLCJpZnJhbWVTY2FsZSIsImlmcmFtZVJlY3QiLCJjbGllbnRMZWZ0IiwicGFkZGluZ0xlZnQiLCJjbGllbnRUb3AiLCJwYWRkaW5nVG9wIiwiZ2V0Tm9kZVNjcm9sbCIsInBhZ2VYT2Zmc2V0IiwicGFnZVlPZmZzZXQiLCJnZXRXaW5kb3dTY3JvbGxCYXJYIiwiZ2V0UGFyZW50Tm9kZSIsInJlc3VsdCIsImFzc2lnbmVkU2xvdCIsImdldE5lYXJlc3RPdmVyZmxvd0FuY2VzdG9yIiwiZ2V0T3ZlcmZsb3dBbmNlc3RvcnMiLCJzY3JvbGxhYmxlQW5jZXN0b3IiLCJpc0JvZHkiLCJnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IiLCJjbGlwcGluZ0FuY2VzdG9yIiwiaHRtbCIsInZpc3VhbFZpZXdwb3J0QmFzZWQiLCJnZXRWaWV3cG9ydFJlY3QiLCJzY3JvbGwiLCJnZXREb2N1bWVudFJlY3QiLCJnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdCIsImhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvciIsInN0b3BOb2RlIiwiZ2V0VHJ1ZU9mZnNldFBhcmVudCIsInBvbHlmaWxsIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQiLCJpc09mZnNldFBhcmVudEFuRWxlbWVudCIsIm9mZnNldFJlY3QiLCJjbGlwcGluZ0FuY2VzdG9ycyIsImNhY2hlIiwiY2FjaGVkUmVzdWx0IiwiY3VycmVudENvbnRhaW5pbmdCbG9ja0NvbXB1dGVkU3R5bGUiLCJlbGVtZW50SXNGaXhlZCIsImNvbXB1dGVkU3R5bGUiLCJjdXJyZW50Tm9kZUlzQ29udGFpbmluZyIsImFuY2VzdG9yIiwiZ2V0Q2xpcHBpbmdFbGVtZW50QW5jZXN0b3JzIiwiZmlyc3RDbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldE9mZnNldFBhcmVudEZuIiwiZ2V0RGltZW5zaW9uc0ZuIiwiZ2V0Q2xpZW50UmVjdHMiLCJhdXRvVXBkYXRlIiwidXBkYXRlIiwiYW5jZXN0b3JTY3JvbGwiLCJhbmNlc3RvclJlc2l6ZSIsImVsZW1lbnRSZXNpemUiLCJhbmltYXRpb25GcmFtZSIsImFuY2VzdG9ycyIsImlzVmlzdWFsVmlld3BvcnQiLCJmcmFtZUlkIiwib2JzZXJ2ZXIiLCJwcmV2UmVmUmVjdCIsImZyYW1lTG9vcCIsIm5leHRSZWZSZWN0IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiX29ic2VydmVyIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJjb21wdXRlUG9zaXRpb24iLCJNYXAiLCJtZXJnZWRPcHRpb25zIiwicGxhdGZvcm1XaXRoQ2FjaGUiLCJjb25maWciLCJ2YWxpZE1pZGRsZXdhcmUiLCJnZXRFbGVtZW50UmVjdHMiLCJzdGF0ZWZ1bFBsYWNlbWVudCIsInJlc2V0Q291bnQiLCJuZXh0WCIsIm5leHRZIiwiY29tcHV0ZVBvc2l0aW9uJDEiLCJhcnJvdyQxIiwidXNlTGF5b3V0RWZmZWN0IiwiZGVlcEVxdWFsIiwia2V5cyIsIiQkdHlwZW9mIiwiZ2V0RFBSIiwiZGV2aWNlUGl4ZWxSYXRpbyIsInJvdW5kQnlEUFIiLCJkcHIiLCJ1c2VMYXRlc3RSZWYiLCIkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsIiRqYm5FeCRmb3J3YXJkUmVmIiwiYXJyb3dQcm9wcyIsIiRqYm5FeCRjcmVhdGVFbGVtZW50IiwiJGpibkV4JFByaW1pdGl2ZSIsInN2ZyIsIiRqYm5FeCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJwb2ludHMiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkY3JlYXRlUG9wcGVyQ29udGV4dCIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3MjJhYWMxOTRhZTkyMyIsIiRrWTkzViRjcmVhdGVDb250ZXh0U2NvcGUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyUHJvdmlkZXIiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdXNlUG9wcGVyQ29udGV4dCIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQiLCIka1k5M1YkZm9yd2FyZFJlZiIsIl9fc2NvcGVQb3BwZXIiLCJ2aXJ0dWFsUmVmIiwiYW5jaG9yUHJvcHMiLCIka1k5M1YkdXNlUmVmIiwiJGtZOTNWJHVzZUNvbXBvc2VkUmVmcyIsIiRrWTkzViR1c2VFZmZlY3QiLCJvbkFuY2hvckNoYW5nZSIsIiRrWTkzViRjcmVhdGVFbGVtZW50IiwiJGtZOTNWJFByaW1pdGl2ZSIsIiRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyQ29udGVudFByb3ZpZGVyIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0IiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYyIsIl9hcnJvd1NpemUkd2lkdGgiLCJfYXJyb3dTaXplJGhlaWdodCIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdyIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzIiLCJfbWlkZGxld2FyZURhdGEkYXJyb3czIiwiX21pZGRsZXdhcmVEYXRhJHRyYW5zIiwiX21pZGRsZXdhcmVEYXRhJHRyYW5zMiIsIl9taWRkbGV3YXJlRGF0YSRoaWRlIiwic2lkZU9mZnNldCIsImFsaWduIiwiYWxpZ25PZmZzZXQiLCJhcnJvd1BhZGRpbmciLCJjb2xsaXNpb25Cb3VuZGFyeSIsImNvbGxpc2lvblBhZGRpbmciLCJjb2xsaXNpb25QYWRkaW5nUHJvcCIsInN0aWNreSIsImhpZGVXaGVuRGV0YWNoZWQiLCJhdm9pZENvbGxpc2lvbnMiLCJvblBsYWNlZCIsInNldENvbnRlbnQiLCIka1k5M1YkdXNlU3RhdGUiLCJzZXRBcnJvdyIsImFycm93U2l6ZSIsIiRrWTkzViR1c2VTaXplIiwiYXJyb3dXaWR0aCIsImFycm93SGVpZ2h0IiwiZGVzaXJlZFBsYWNlbWVudCIsImhhc0V4cGxpY2l0Qm91bmRhcmllcyIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciRpc05vdE51bGwiLCJmbG9hdGluZ1N0eWxlcyIsImlzUG9zaXRpb25lZCIsImV4dGVybmFsUmVmZXJlbmNlIiwiZXh0ZXJuYWxGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkIiwic2V0RGF0YSIsImxhdGVzdE1pZGRsZXdhcmUiLCJzZXRMYXRlc3RNaWRkbGV3YXJlIiwiX3JlZmVyZW5jZSIsIl9zZXRSZWZlcmVuY2UiLCJfZmxvYXRpbmciLCJfc2V0RmxvYXRpbmciLCJzZXRSZWZlcmVuY2UiLCJyZWZlcmVuY2VSZWYiLCJzZXRGbG9hdGluZyIsImZsb2F0aW5nUmVmIiwicmVmZXJlbmNlRWwiLCJmbG9hdGluZ0VsIiwiZGF0YVJlZiIsIndoaWxlRWxlbWVudHNNb3VudGVkUmVmIiwicGxhdGZvcm1SZWYiLCJmdWxsRGF0YSIsImlzTW91bnRlZFJlZiIsIlJlYWN0RE9NIiwiZmx1c2hTeW5jIiwiaW5pdGlhbFN0eWxlcyIsIiRrWTkzViR1c2VGbG9hdGluZyIsIiRrWTkzViRhdXRvVXBkYXRlIiwiYW5jaG9yIiwiJGtZOTNWJG9mZnNldCIsIiRrWTkzViRzaGlmdCIsIiRrWTkzViRsaW1pdFNoaWZ0IiwiJGtZOTNWJGZsaXAiLCIka1k5M1Ykc2l6ZSIsImFuY2hvcldpZHRoIiwiYW5jaG9ySGVpZ2h0IiwiY29udGVudFN0eWxlIiwic2V0UHJvcGVydHkiLCIka1k5M1YkYXJyb3ciLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luIiwiJGtZOTNWJGhpZGUiLCJwbGFjZWRTaWRlIiwicGxhY2VkQWxpZ24iLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudCIsImhhbmRsZVBsYWNlZCIsIiRrWTkzViR1c2VDYWxsYmFja1JlZiIsIiRrWTkzViR1c2VMYXlvdXRFZmZlY3QiLCJhcnJvd1giLCJhcnJvd1kiLCJjYW5ub3RDZW50ZXJBcnJvdyIsImNvbnRlbnRaSW5kZXgiLCJzZXRDb250ZW50WkluZGV4IiwiekluZGV4IiwibWluV2lkdGgiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJkaXIiLCJvbkFycm93Q2hhbmdlIiwic2hvdWxkSGlkZUFycm93IiwiYW5pbWF0aW9uIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJE9QUE9TSVRFX1NJREUiLCJfbWlkZGxld2FyZURhdGEkYXJyb3c0IiwiX21pZGRsZXdhcmVEYXRhJGFycm93NSIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzYiLCJfbWlkZGxld2FyZURhdGEkYXJyb3c3IiwiX21pZGRsZXdhcmVEYXRhJGFycm93OCIsImlzQXJyb3dIaWRkZW4iLCJub0Fycm93QWxpZ24iLCJhcnJvd1hDZW50ZXIiLCJhcnJvd1lDZW50ZXIiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsInNldEFuY2hvciIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiNjg4MjUzOTU4YjhkZmU3IiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSIsImNvbnRlbnRDb250ZXh0IiwiYmFzZVNpZGUiLCIka1k5M1YkUm9vdCIsIiRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQT1BPVkVSX05BTUUiLCIkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkY3JlYXRlUG9wb3ZlckNvbnRleHQiLCIkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkYzgzOTNjOWU3MzI4NjkzMiIsIiRhbTZnbSRjcmVhdGVDb250ZXh0U2NvcGUiLCIkYW02Z20kY3JlYXRlUG9wcGVyU2NvcGUiLCIkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkdXNlUG9wcGVyU2NvcGUiLCIkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUG9wb3ZlclByb3ZpZGVyIiwiJGNiNWNjMjcwYjUwYzZmY2QkdmFyJHVzZVBvcG92ZXJDb250ZXh0IiwiJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDdkYWNiMDVkMjY0NjZjMyIsIiRhbTZnbSRmb3J3YXJkUmVmIiwiX19zY29wZVBvcG92ZXIiLCJ0cmlnZ2VyUHJvcHMiLCJwb3BwZXJTY29wZSIsImNvbXBvc2VkVHJpZ2dlclJlZiIsIiRhbTZnbSR1c2VDb21wb3NlZFJlZnMiLCJ0cmlnZ2VyIiwiJGFtNmdtJGNyZWF0ZUVsZW1lbnQiLCIkYW02Z20kUHJpbWl0aXZlIiwiJGFtNmdtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJGNiNWNjMjcwYjUwYzZmY2QkdmFyJGdldFN0YXRlIiwiJGFtNmdtJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiaGFzQ3VzdG9tQW5jaG9yIiwiJGFtNmdtJEFuY2hvciIsIiRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQT1JUQUxfTkFNRSIsIiRjYjVjYzI3MGI1MGM2ZmNkJHZhciRQb3J0YWxQcm92aWRlciIsIiRjYjVjYzI3MGI1MGM2ZmNkJHZhciR1c2VQb3J0YWxDb250ZXh0IiwiJGNiNWNjMjcwYjUwYzZmY2QkdmFyJENPTlRFTlRfTkFNRSIsIiRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRkN2UxZjQyMGIyNTU0OWZmIiwiJGFtNmdtJFByZXNlbmNlIiwiJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBvcG92ZXJDb250ZW50TW9kYWwiLCIkY2I1Y2MyNzBiNTBjNmZjZCR2YXIkUG9wb3ZlckNvbnRlbnROb25Nb2RhbCIsIiRhbTZnbSR1c2VSZWYiLCJpc1JpZ2h0Q2xpY2tPdXRzaWRlUmVmIiwiJGFtNmdtJHVzZUVmZmVjdCIsIiRhbTZnbSRoaWRlT3RoZXJzIiwiJGFtNmdtJFJlbW92ZVNjcm9sbCIsIiRhbTZnbSRTbG90IiwiJGNiNWNjMjcwYjUwYzZmY2QkdmFyJFBvcG92ZXJDb250ZW50SW1wbCIsImlzUmlnaHRDbGljayIsIiRhbTZnbSR1c2VGb2N1c0d1YXJkcyIsIiRhbTZnbSRGb2N1c1Njb3BlIiwiJGFtNmdtJERpc21pc3NhYmxlTGF5ZXIiLCIkYW02Z20kQ29udGVudCIsIiRjYjVjYzI3MGI1MGM2ZmNkJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5Iiwic2V0SGFzQ3VzdG9tQW5jaG9yIiwiJGFtNmdtJHVzZVN0YXRlIiwiJGFtNmdtJHVzZUNvbnRyb2xsYWJsZVN0YXRlIiwiJGFtNmdtJFJvb3QiLCIkYW02Z20kdXNlSWQiLCIkYW02Z20kdXNlQ2FsbGJhY2siLCJvbkN1c3RvbUFuY2hvckFkZCIsIm9uQ3VzdG9tQW5jaG9yUmVtb3ZlIiwiJGNiNWNjMjcwYjUwYzZmY2QkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQiLCIkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyIsIiRhbTZnbSRQb3J0YWwiLCIkY2I1Y2MyNzBiNTBjNmZjZCRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiIsIlBvcG92ZXIiLCJtZW1vIiwiY2hpbGRDbGFzcyIsImlzQ29udGVudENoaWxkIiwiaXNPcGVuIiwib25PcGVuIiwiUmFkaXhQb3BvdmVyLlJvb3QiLCJSYWRpeFBvcG92ZXIuVHJpZ2dlciIsIlJhZGl4UG9wb3Zlci5Qb3J0YWwiLCJSYWRpeFBvcG92ZXIuQ29udGVudCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGNyZWF0ZVByb2dyZXNzQ29udGV4dCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCQzODhlYjJkOGY2ZDMyNjFmIiwiJGswM3dJJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQcm9ncmVzc1Byb3ZpZGVyIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJHVzZVByb2dyZXNzQ29udGV4dCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiIiwiJGswM3dJJGZvcndhcmRSZWYiLCJfX3Njb3BlUHJvZ3Jlc3MiLCJ2YWx1ZVByb3AiLCJnZXRWYWx1ZUxhYmVsIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGRlZmF1bHRHZXRWYWx1ZUxhYmVsIiwicHJvZ3Jlc3NQcm9wcyIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkTWF4TnVtYmVyIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzVmFsaWRWYWx1ZU51bWJlciIsInZhbHVlTGFiZWwiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNOdW1iZXIiLCIkazAzd0kkY3JlYXRlRWxlbWVudCIsIiRrMDN3SSRQcmltaXRpdmUiLCIkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0UHJvZ3Jlc3NTdGF0ZSIsInByb3BUeXBlcyIsImNvbXBvbmVudE5hbWUiLCJwcm9wVmFsdWUiLCJzdHJWYWwiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0SW52YWxpZE1heEVycm9yIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldEludmFsaWRWYWx1ZUVycm9yIiwibWF4VmFsdWUiLCJpc05hTiIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAiLCJfY29udGV4dCR2YWx1ZSIsIlByb2dyZXNzIiwicHJvZ3Jlc3MiLCJQcm9ncmVzc1ByaW1pdGl2ZS5Sb290IiwiUHJvZ3Jlc3NQcmltaXRpdmUuSW5kaWNhdG9yIiwiJGUwMmE3ZDljYjFkYzEyOGMkZXhwb3J0JGM3NDEyNWE4ZTNhZjZiYjIiLCJQUk9WSURFUl9OQU1FIiwiY3JlYXRlQ29sbGVjdGlvbkNvbnRleHQiLCJjcmVhdGVDb2xsZWN0aW9uU2NvcGUiLCIkNnZZaFUkY3JlYXRlQ29udGV4dFNjb3BlIiwiQ29sbGVjdGlvblByb3ZpZGVySW1wbCIsInVzZUNvbGxlY3Rpb25Db250ZXh0IiwiY29sbGVjdGlvblJlZiIsIml0ZW1NYXAiLCJDT0xMRUNUSU9OX1NMT1RfTkFNRSIsIklURU1fU0xPVF9OQU1FIiwiSVRFTV9EQVRBX0FUVFIiLCIkNnZZaFUkcmVhY3QiLCJTbG90IiwiJDZ2WWhVJHVzZUNvbXBvc2VkUmVmcyIsIiQ2dlloVSRTbG90IiwiSXRlbVNsb3QiLCJpdGVtRGF0YSIsImNvbGxlY3Rpb25Ob2RlIiwib3JkZXJlZE5vZGVzIiwiJGY2MzE2NjNkYjMyOTRhY2UkdmFyJERpcmVjdGlvbkNvbnRleHQiLCIkN0dqY2QkY3JlYXRlQ29udGV4dCIsIiRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRiMzkxMjZkNTFkOTRlNmYzIiwibG9jYWxEaXIiLCJnbG9iYWxEaXIiLCIkN0dqY2QkdXNlQ29udGV4dCIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRFTlRSWV9GT0NVUyIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRFVkVOVF9PUFRJT05TIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEdST1VQX05BTUUiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkQ29sbGVjdGlvbiIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VDb2xsZWN0aW9uIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGNyZWF0ZUNvbGxlY3Rpb25TY29wZSIsIiQ5OEl5ZSRjcmVhdGVDb2xsZWN0aW9uIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBDb250ZXh0IiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGM3MTA5NDg5NTUxYTRmNCIsIiQ5OEl5ZSRjcmVhdGVDb250ZXh0U2NvcGUiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNQcm92aWRlciIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VSb3ZpbmdGb2N1c0NvbnRleHQiLCIkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzOCIsIiQ5OEl5ZSRmb3J3YXJkUmVmIiwiJDk4SXllJGNyZWF0ZUVsZW1lbnQiLCJfX3Njb3BlUm92aW5nRm9jdXNHcm91cCIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRSb3ZpbmdGb2N1c0dyb3VwSW1wbCIsIiQ5OEl5ZSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIm9yaWVudGF0aW9uIiwiY3VycmVudFRhYlN0b3BJZCIsImN1cnJlbnRUYWJTdG9wSWRQcm9wIiwiZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQiLCJvbkN1cnJlbnRUYWJTdG9wSWRDaGFuZ2UiLCJvbkVudHJ5Rm9jdXMiLCJncm91cFByb3BzIiwiJDk4SXllJHVzZVJlZiIsIiQ5OEl5ZSR1c2VDb21wb3NlZFJlZnMiLCIkOThJeWUkdXNlRGlyZWN0aW9uIiwic2V0Q3VycmVudFRhYlN0b3BJZCIsIiQ5OEl5ZSR1c2VDb250cm9sbGFibGVTdGF0ZSIsImlzVGFiYmluZ0JhY2tPdXQiLCJzZXRJc1RhYmJpbmdCYWNrT3V0IiwiJDk4SXllJHVzZVN0YXRlIiwiaGFuZGxlRW50cnlGb2N1cyIsIiQ5OEl5ZSR1c2VDYWxsYmFja1JlZiIsImdldEl0ZW1zIiwiaXNDbGlja0ZvY3VzUmVmIiwiZm9jdXNhYmxlSXRlbXNDb3VudCIsInNldEZvY3VzYWJsZUl0ZW1zQ291bnQiLCIkOThJeWUkdXNlRWZmZWN0Iiwib25JdGVtRm9jdXMiLCIkOThJeWUkdXNlQ2FsbGJhY2siLCJ0YWJTdG9wSWQiLCJvbkl0ZW1TaGlmdFRhYiIsIm9uRm9jdXNhYmxlSXRlbUFkZCIsInByZXZDb3VudCIsIm9uRm9jdXNhYmxlSXRlbVJlbW92ZSIsIiQ5OEl5ZSRQcmltaXRpdmUiLCJvdXRsaW5lIiwiJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiaXNLZXlib2FyZEZvY3VzIiwiZW50cnlGb2N1c0V2ZW50IiwiZm9jdXNhYmxlIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGZvY3VzRmlyc3QiLCJhY3RpdmUiLCIkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYWI5ZGY3YzUzZmU4NDU0IiwiaXRlbVByb3BzIiwiYXV0b0lkIiwiJDk4SXllJHVzZUlkIiwiaXNDdXJyZW50VGFiU3RvcCIsImZvY3VzSW50ZW50IiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldERpcmVjdGlvbkF3YXJlS2V5IiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJE1BUF9LRVlfVE9fRk9DVVNfSU5URU5UIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldEZvY3VzSW50ZW50IiwiY2FuZGlkYXRlTm9kZXMiLCJjdXJyZW50SW5kZXgiLCJzdGFydEluZGV4IiwiXyIsIkFycm93TGVmdCIsIkFycm93VXAiLCJBcnJvd1JpZ2h0IiwiQXJyb3dEb3duIiwiUGFnZVVwIiwiSG9tZSIsIlBhZ2VEb3duIiwiRW5kIiwiUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQiLCIkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyIiwiJGNlNzdhODk2MWI0MWJlOWUkdmFyJFJBRElPX05BTUUiLCIkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkY3JlYXRlUmFkaW9Db250ZXh0IiwiJGNlNzdhODk2MWI0MWJlOWUkZXhwb3J0JDY3ZDIyOTY0NjBmMWIwMDIiLCIkOFdvbHYkY3JlYXRlQ29udGV4dFNjb3BlIiwiJGNlNzdhODk2MWI0MWJlOWUkdmFyJFJhZGlvUHJvdmlkZXIiLCIkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkdXNlUmFkaW9Db250ZXh0IiwiJGNlNzdhODk2MWI0MWJlOWUkZXhwb3J0JGQ3YjEyYzQxMDdiZTBkNjEiLCIkOFdvbHYkZm9yd2FyZFJlZiIsIl9fc2NvcGVSYWRpbyIsIm9uQ2hlY2siLCJyYWRpb1Byb3BzIiwiJDhXb2x2JHVzZVN0YXRlIiwiJDhXb2x2JHVzZUNvbXBvc2VkUmVmcyIsIiQ4V29sdiR1c2VSZWYiLCIkOFdvbHYkY3JlYXRlRWxlbWVudCIsIiQ4V29sdiRQcmltaXRpdmUiLCIkOFdvbHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkZ2V0U3RhdGUiLCIkOFdvbHYkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCIkY2U3N2E4OTYxYjQxYmU5ZSR2YXIkQnViYmxlSW5wdXQiLCIkY2U3N2E4OTYxYjQxYmU5ZSRleHBvcnQkZDM1YTlmZmE5YTA0ZjllNyIsIiQ4V29sdiRQcmVzZW5jZSIsIiQ4V29sdiR1c2VQcmV2aW91cyIsIiQ4V29sdiR1c2VTaXplIiwiJDhXb2x2JHVzZUVmZmVjdCIsIiRmOTlhOGM3ODUwNzE2NWY3JHZhciRBUlJPV19LRVlTIiwiJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJFJBRElPX0dST1VQX05BTUUiLCIkZjk5YThjNzg1MDcxNjVmNyR2YXIkY3JlYXRlUmFkaW9Hcm91cENvbnRleHQiLCIkZjk5YThjNzg1MDcxNjVmNyRleHBvcnQkYzU0NzA5M2YxMWI3NmRhMiIsIiQ4V29sdiRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUiLCIkZjk5YThjNzg1MDcxNjVmNyR2YXIkdXNlUm92aW5nRm9jdXNHcm91cFNjb3BlIiwiJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJHVzZVJhZGlvU2NvcGUiLCIkZjk5YThjNzg1MDcxNjVmNyR2YXIkUmFkaW9Hcm91cFByb3ZpZGVyIiwiJGY5OWE4Yzc4NTA3MTY1ZjckdmFyJHVzZVJhZGlvR3JvdXBDb250ZXh0IiwiJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJfX3Njb3BlUmFkaW9Hcm91cCIsIm9uVmFsdWVDaGFuZ2UiLCJyb3ZpbmdGb2N1c0dyb3VwU2NvcGUiLCIkOFdvbHYkdXNlRGlyZWN0aW9uIiwic2V0VmFsdWUiLCIkOFdvbHYkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCIkOFdvbHYkUm9vdCIsIiRmOTlhOGM3ODUwNzE2NWY3JGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyIiwicmFkaW9TY29wZSIsImlzQXJyb3dLZXlQcmVzc2VkUmVmIiwiaGFuZGxlS2V5VXAiLCIkOFdvbHYkSXRlbSIsIl9yZWYkY3VycmVudCIsImNsaWNrIiwiJGY5OWE4Yzc4NTA3MTY1ZjckZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAiLCJSYWRpb0dyb3VwIiwiYXJpYUxhYmVsIiwiUmFkaW8uUm9vdCIsIlJhZGlvLkl0ZW0iLCJSYWRpby5JbmRpY2F0b3IiLCJpbmRpY2F0b3IiLCIkNmJlNDk2NmZkOWJiYzY5OCR2YXIkU1dJVENIX05BTUUiLCIkNmJlNDk2NmZkOWJiYzY5OCR2YXIkY3JlYXRlU3dpdGNoQ29udGV4dCIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRjZjdmNWYxN2Y2OWNiZDQzIiwiJGlyUElsJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTd2l0Y2hQcm92aWRlciIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciR1c2VTd2l0Y2hDb250ZXh0IiwiJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGI1ZDVjZjg5MjdhYjcyNjIiLCIkaXJQSWwkZm9yd2FyZFJlZiIsIl9fc2NvcGVTd2l0Y2giLCJzd2l0Y2hQcm9wcyIsIiRpclBJbCR1c2VTdGF0ZSIsIiRpclBJbCR1c2VDb21wb3NlZFJlZnMiLCIkaXJQSWwkdXNlUmVmIiwiJGlyUElsJHVzZUNvbnRyb2xsYWJsZVN0YXRlIiwiJGlyUElsJGNyZWF0ZUVsZW1lbnQiLCIkaXJQSWwkUHJpbWl0aXZlIiwiJGlyUElsJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJGdldFN0YXRlIiwiJGlyUElsJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJEJ1YmJsZUlucHV0IiwiJGlyUElsJHVzZVByZXZpb3VzIiwiJGlyUElsJHVzZVNpemUiLCIkaXJQSWwkdXNlRWZmZWN0IiwiJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCIkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNjUyMTQzM2VkMTVhMzRkYiIsInRodW1iUHJvcHMiLCJTd2l0Y2giLCJSYWRpeFN3aXRjaC5Sb290IiwiUmFkaXhTd2l0Y2guVGh1bWIiLCIkZWExZWY1OTRjZjU3MGQ4MyRleHBvcnQkNDM5ZDI5YTRlMTEwYTE2NCIsIiRrVndudyRmb3J3YXJkUmVmIiwiJGtWd253JGNyZWF0ZUVsZW1lbnQiLCIka1Z3bnckUHJpbWl0aXZlIiwiJGtWd253JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiYm9yZGVyIiwiY2xpcCIsIndoaXRlU3BhY2UiLCJ3b3JkV3JhcCIsIiRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGNyZWF0ZVRvb2x0aXBDb250ZXh0IiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDFjNTQwYTIyMjRmMGQ4NjUiLCIkOHdlcEskY3JlYXRlQ29udGV4dFNjb3BlIiwiJDh3ZXBLJGNyZWF0ZVBvcHBlclNjb3BlIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJERFRkFVTFRfREVMQVlfRFVSQVRJT04iLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBQcm92aWRlckNvbnRleHRQcm92aWRlciIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwUHJvdmlkZXJDb250ZXh0IiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGV4dFByb3ZpZGVyIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0IiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRSIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ4YzYxMDc0NGVmY2Y4YTFkIiwiJDh3ZXBLJGZvcndhcmRSZWYiLCJfX3Njb3BlVG9vbHRpcCIsInByb3ZpZGVyQ29udGV4dCIsIiQ4d2VwSyR1c2VDb21wb3NlZFJlZnMiLCIkOHdlcEskdXNlUmVmIiwib25UcmlnZ2VyQ2hhbmdlIiwiaXNQb2ludGVyRG93blJlZiIsImhhc1BvaW50ZXJNb3ZlT3BlbmVkUmVmIiwiaGFuZGxlUG9pbnRlclVwIiwiJDh3ZXBLJHVzZUNhbGxiYWNrIiwiJDh3ZXBLJHVzZUVmZmVjdCIsIiQ4d2VwSyRjcmVhdGVFbGVtZW50IiwiJDh3ZXBLJEFuY2hvciIsIiQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ4d2VwSyRQcmltaXRpdmUiLCJzdGF0ZUF0dHJpYnV0ZSIsIm9uUG9pbnRlck1vdmUiLCIkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJpc1BvaW50ZXJJblRyYW5zaXRSZWYiLCJvblRyaWdnZXJFbnRlciIsIm9uUG9pbnRlckxlYXZlIiwib25UcmlnZ2VyTGVhdmUiLCJvblBvaW50ZXJEb3duIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBvcnRhbFByb3ZpZGVyIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAiLCIkOHdlcEskUHJlc2VuY2UiLCJkaXNhYmxlSG92ZXJhYmxlQ29udGVudCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEltcGwiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcENvbnRlbnRIb3ZlcmFibGUiLCJwb2ludGVyR3JhY2VBcmVhIiwic2V0UG9pbnRlckdyYWNlQXJlYSIsIiQ4d2VwSyR1c2VTdGF0ZSIsIm9uUG9pbnRlckluVHJhbnNpdENoYW5nZSIsImhhbmRsZVJlbW92ZUdyYWNlQXJlYSIsImhhbmRsZUNyZWF0ZUdyYWNlQXJlYSIsImhvdmVyVGFyZ2V0IiwiZXhpdFBvaW50IiwicGFkZGVkRXhpdFBvaW50cyIsImV4aXRTaWRlIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldFBhZGRlZEV4aXRQb2ludHMiLCJwb2ludCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0IiwiZ3JhY2VBcmVhIiwibmV3UG9pbnRzIiwidXBwZXJIdWxsIiwicSIsInIiLCJwb3AiLCJsb3dlckh1bGwiLCJpMSIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsUHJlc29ydGVkIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGwiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0UG9pbnRzRnJvbVJlY3QiLCJoYW5kbGVUcmlnZ2VyTGVhdmUiLCJoYW5kbGVDb250ZW50TGVhdmUiLCJoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSIsInBvaW50ZXJQb3NpdGlvbiIsImhhc0VudGVyZWRUYXJnZXQiLCJpc1BvaW50ZXJPdXRzaWRlR3JhY2VBcmVhIiwicG9seWdvbiIsImluc2lkZSIsImoiLCJ4aSIsInlpIiwieGoiLCJ5aiIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHRQcm92aWRlciIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0IiwiaXNJbnNpZGUiLCJjYXB0dXJlIiwiJDh3ZXBLJERpc21pc3NhYmxlTGF5ZXIiLCIkOHdlcEskQ29udGVudCIsIiQ4d2VwSyRTbG90dGFibGUiLCIkOHdlcEskUm9vdDEiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjg4MTQ5OWUzN2I3NWI5YSIsImRlbGF5RHVyYXRpb24iLCJza2lwRGVsYXlEdXJhdGlvbiIsImlzT3BlbkRlbGF5ZWQiLCJzZXRJc09wZW5EZWxheWVkIiwic2tpcERlbGF5VGltZXJSZWYiLCJza2lwRGVsYXlUaW1lciIsImluVHJhbnNpdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRQcm9wIiwiZGVsYXlEdXJhdGlvblByb3AiLCJzZXRUcmlnZ2VyIiwiJDh3ZXBLJHVzZUlkIiwib3BlblRpbWVyUmVmIiwid2FzT3BlbkRlbGF5ZWRSZWYiLCJvcGVuMSIsIiQ4d2VwSyR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQ4d2VwSyR1c2VNZW1vIiwiaGFuZGxlT3BlbiIsImhhbmRsZUNsb3NlIiwiaGFuZGxlRGVsYXllZE9wZW4iLCIkOHdlcEskUm9vdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkOHdlcEskUG9ydGFsIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSIsIiQ4d2VwSyRBcnJvdyIsIlRvb2x0aXAiLCJpc1BvcnRhbCIsIlRvb2x0aXBQcmltaXRpdmUuQ29udGVudCIsIlRvb2x0aXBQcmltaXRpdmUuQXJyb3ciLCJUb29sdGlwUHJpbWl0aXZlLlByb3ZpZGVyIiwiVG9vbHRpcFByaW1pdGl2ZS5Sb290IiwiVG9vbHRpcFByaW1pdGl2ZS5UcmlnZ2VyIiwiVG9vbHRpcFByaW1pdGl2ZS5Qb3J0YWwiLCIkYWU2OTMzZTUzNTI0N2QzZCRleHBvcnQkN2QxNWI2NGNmNWEzYTRjNCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRPUEVOX0tFWVMiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUSU9OX0tFWVMiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ29sbGVjdGlvbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZUNvbGxlY3Rpb25TY29wZSIsIiQwMWI5YyRjcmVhdGVDb2xsZWN0aW9uIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMjg2NzI3YTc1ZGMwMzliZCIsIiQwMWI5YyRjcmVhdGVDb250ZXh0U2NvcGUiLCIkMDFiOWMkY3JlYXRlUG9wcGVyU2NvcGUiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlUG9wcGVyU2NvcGUiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3ROYXRpdmVPcHRpb25zUHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0TmF0aXZlT3B0aW9uc0NvbnRleHQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkM2FjMWU4OGExYzBiOWYxIiwiJDAxYjljJGZvcndhcmRSZWYiLCJfX3Njb3BlU2VsZWN0IiwiJDAxYjljJHVzZUNvbXBvc2VkUmVmcyIsInNlYXJjaFJlZiIsImhhbmRsZVR5cGVhaGVhZFNlYXJjaCIsInJlc2V0VHlwZWFoZWFkIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVR5cGVhaGVhZFNlYXJjaCIsInNlYXJjaCIsImVuYWJsZWRJdGVtcyIsImN1cnJlbnRJdGVtIiwibmV4dEl0ZW0iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkZmluZE5leHRJdGVtIiwiJDAxYjljJGNyZWF0ZUVsZW1lbnQiLCIkMDFiOWMkQW5jaG9yIiwiJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDAxYjljJFByaW1pdGl2ZSIsIiQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyIsImhhc1BvaW50ZXJDYXB0dXJlIiwicG9pbnRlcklkIiwicmVsZWFzZVBvaW50ZXJDYXB0dXJlIiwidHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmIiwicGFnZVgiLCJwYWdlWSIsImlzVHlwaW5nQWhlYWQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMCIsInZhbHVlUHJvcHMiLCJvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlIiwiaGFzQ2hpbGRyZW4iLCJvblZhbHVlTm9kZUNoYW5nZSIsIiQwMWI5YyR1c2VMYXlvdXRFZmZlY3QiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNSIsImljb25Qcm9wcyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYzk3M2E0YjNjYjg2YTAzZCIsImZyYWdtZW50Iiwic2V0RnJhZ21lbnQiLCIkMDFiOWMkdXNlU3RhdGUiLCJEb2N1bWVudEZyYWdtZW50IiwiZnJhZyIsIiQwMWI5YyRjcmVhdGVQb3J0YWwiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudFByb3ZpZGVyIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdENvbnRlbnRJbXBsIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0Iiwidmlld3BvcnQiLCJzZXRWaWV3cG9ydCIsInNlbGVjdGVkSXRlbSIsInNldFNlbGVjdGVkSXRlbSIsInNlbGVjdGVkSXRlbVRleHQiLCJzZXRTZWxlY3RlZEl0ZW1UZXh0Iiwic2V0SXNQb3NpdGlvbmVkIiwiZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZiIsIiQwMWI5YyR1c2VSZWYiLCIkMDFiOWMkdXNlRWZmZWN0IiwiJDAxYjljJGhpZGVPdGhlcnMiLCIkMDFiOWMkdXNlRm9jdXNHdWFyZHMiLCJmb2N1c0ZpcnN0IiwiJDAxYjljJHVzZUNhbGxiYWNrIiwiZmlyc3RJdGVtIiwicmVzdEl0ZW1zIiwibGFzdEl0ZW0iLCJzY3JvbGxJbnRvVmlldyIsImJsb2NrIiwiZm9jdXNTZWxlY3RlZEl0ZW0iLCJwb2ludGVyTW92ZURlbHRhIiwiaGFuZGxlUG9pbnRlck1vdmUiLCJfdHJpZ2dlclBvaW50ZXJEb3duUG8iLCJfdHJpZ2dlclBvaW50ZXJEb3duUG8yIiwiX3RyaWdnZXJQb2ludGVyRG93blBvMyIsIl90cmlnZ2VyUG9pbnRlckRvd25QbzQiLCJpdGVtUmVmQ2FsbGJhY2siLCJpc0ZpcnN0VmFsaWRJdGVtIiwiaGFuZGxlSXRlbUxlYXZlIiwiaXRlbVRleHRSZWZDYWxsYmFjayIsIlNlbGVjdFBvc2l0aW9uIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFBvcHBlclBvc2l0aW9uIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb24iLCJwb3BwZXJDb250ZW50UHJvcHMiLCJvblZpZXdwb3J0Q2hhbmdlIiwib25JdGVtTGVhdmUiLCIkMDFiOWMkU2xvdCIsIiQwMWI5YyRGb2N1c1Njb3BlIiwiX2NvbnRleHQkdHJpZ2dlciIsIiQwMWI5YyREaXNtaXNzYWJsZUxheWVyIiwib25Db250ZXh0TWVudSIsImZsZXhEaXJlY3Rpb24iLCJpc01vZGlmaWVyS2V5IiwiY3VycmVudEVsZW1lbnQiLCJwb3BwZXJQcm9wcyIsImNvbnRlbnRXcmFwcGVyIiwic2V0Q29udGVudFdyYXBwZXIiLCJzaG91bGRFeHBhbmRPblNjcm9sbFJlZiIsInNob3VsZFJlcG9zaXRpb25SZWYiLCJ2YWx1ZU5vZGUiLCJ0cmlnZ2VyUmVjdCIsImNvbnRlbnRSZWN0IiwidmFsdWVOb2RlUmVjdCIsIml0ZW1UZXh0UmVjdCIsIml0ZW1UZXh0T2Zmc2V0IiwibGVmdERlbHRhIiwibWluQ29udGVudFdpZHRoIiwiY29udGVudFdpZHRoIiwicmlnaHRFZGdlIiwiY2xhbXBlZExlZnQiLCIkMDFiOWMkY2xhbXAiLCJyaWdodERlbHRhIiwibGVmdEVkZ2UiLCJjbGFtcGVkUmlnaHQiLCJpbm5lckhlaWdodCIsIml0ZW1zSGVpZ2h0IiwiY29udGVudFN0eWxlcyIsImNvbnRlbnRCb3JkZXJUb3BXaWR0aCIsImJvcmRlclRvcFdpZHRoIiwiY29udGVudFBhZGRpbmdUb3AiLCJjb250ZW50Qm9yZGVyQm90dG9tV2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsImZ1bGxDb250ZW50SGVpZ2h0IiwicGFkZGluZ0JvdHRvbSIsIm1pbkNvbnRlbnRIZWlnaHQiLCJ2aWV3cG9ydFN0eWxlcyIsInZpZXdwb3J0UGFkZGluZ1RvcCIsInZpZXdwb3J0UGFkZGluZ0JvdHRvbSIsInRvcEVkZ2VUb1RyaWdnZXJNaWRkbGUiLCJ0cmlnZ2VyTWlkZGxlVG9Cb3R0b21FZGdlIiwic2VsZWN0ZWRJdGVtSGFsZkhlaWdodCIsImNvbnRlbnRUb3BUb0l0ZW1NaWRkbGUiLCJpdGVtTWlkZGxlVG9Db250ZW50Qm90dG9tIiwiaXNMYXN0SXRlbSIsInZpZXdwb3J0T2Zmc2V0Qm90dG9tIiwiaXNGaXJzdEl0ZW0iLCJtaW5IZWlnaHQiLCJoYW5kbGVTY3JvbGxCdXR0b25DaGFuZ2UiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Vmlld3BvcnRQcm92aWRlciIsIm9uU2Nyb2xsQnV0dG9uQ2hhbmdlIiwiYm94U2l6aW5nIiwiJDAxYjljJENvbnRlbnQiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Vmlld3BvcnRDb250ZXh0IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFZJRVdQT1JUX05BTUUiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOWVkNmU3YjQwMjQ4ZDM2ZCIsInZpZXdwb3J0UHJvcHMiLCJ2aWV3cG9ydENvbnRleHQiLCJwcmV2U2Nyb2xsVG9wUmVmIiwiJDAxYjljJEZyYWdtZW50IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJmbGV4Iiwib25TY3JvbGwiLCJzY3JvbGxlZEJ5IiwiY3NzTWluSGVpZ2h0IiwiY3NzSGVpZ2h0IiwicHJldkhlaWdodCIsIm5leHRIZWlnaHQiLCJjbGFtcGVkTmV4dEhlaWdodCIsImhlaWdodERpZmYiLCJqdXN0aWZ5Q29udGVudCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX05BTUUiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUNvbnRleHRQcm92aWRlciIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RJdGVtQ29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxM2VmNDhhOTM0MjMwODk2IiwidGV4dFZhbHVlIiwidGV4dFZhbHVlUHJvcCIsImlzU2VsZWN0ZWQiLCJzZXRUZXh0VmFsdWUiLCJfY29udGVudENvbnRleHQkaXRlbVIiLCJ0ZXh0SWQiLCIkMDFiOWMkdXNlSWQiLCJoYW5kbGVTZWxlY3QiLCJvbkl0ZW1UZXh0Q2hhbmdlIiwicHJldlRleHRWYWx1ZSIsIl9ub2RlJHRleHRDb250ZW50IiwidGV4dENvbnRlbnQiLCJ0cmltIiwib25Qb2ludGVyVXAiLCJfY29udGVudENvbnRleHQkb25JdGUiLCJfY29udGVudENvbnRleHQkb25JdGUyIiwiX2NvbnRlbnRDb250ZXh0JHNlYXJjIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDkiLCJpdGVtVGV4dFByb3BzIiwiaXRlbUNvbnRleHQiLCJuYXRpdmVPcHRpb25zQ29udGV4dCIsIml0ZW1UZXh0Tm9kZSIsInNldEl0ZW1UZXh0Tm9kZSIsIl9jb250ZW50Q29udGV4dCRpdGVtVCIsIm5hdGl2ZU9wdGlvbiIsIiQwMWI5YyR1c2VNZW1vIiwib25OYXRpdmVPcHRpb25BZGQiLCJvbk5hdGl2ZU9wdGlvblJlbW92ZSIsInZhbHVlTm9kZUhhc0NoaWxkcmVuIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkODExNzkyNzY1OGFmNmQ3IiwiY2FuU2Nyb2xsVXAxIiwic2V0Q2FuU2Nyb2xsVXAiLCJjYW5TY3JvbGxVcCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RTY3JvbGxCdXR0b25JbXBsIiwib25BdXRvU2Nyb2xsIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGZmOTUxZTQ3NmMxMjE4OSIsImNhblNjcm9sbERvd24xIiwic2V0Q2FuU2Nyb2xsRG93biIsIm1heFNjcm9sbCIsImNhblNjcm9sbERvd24iLCJjZWlsIiwic2Nyb2xsSW5kaWNhdG9yUHJvcHMiLCJhdXRvU2Nyb2xsVGltZXJSZWYiLCJjbGVhckF1dG9TY3JvbGxUaW1lciIsImNsZWFySW50ZXJ2YWwiLCJfYWN0aXZlSXRlbSRyZWYkY3VycmUiLCJhY3RpdmVJdGVtIiwiZmxleFNocmluayIsInNldEludGVydmFsIiwiX2NvbnRlbnRDb250ZXh0JG9uSXRlMyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRCdWJibGVTZWxlY3QiLCJzZWxlY3RQcm9wcyIsInByZXZWYWx1ZSIsIiQwMWI5YyR1c2VQcmV2aW91cyIsInNlbGVjdFByb3RvIiwiSFRNTFNlbGVjdEVsZW1lbnQiLCIkMDFiOWMkVmlzdWFsbHlIaWRkZW4iLCJvblNlYXJjaENoYW5nZSIsImhhbmRsZVNlYXJjaENoYW5nZSIsIiQwMWI5YyR1c2VDYWxsYmFja1JlZiIsInRpbWVyUmVmIiwidXBkYXRlU2VhcmNoIiwibm9ybWFsaXplZFNlYXJjaCIsImNoYXIiLCJjdXJyZW50SXRlbUluZGV4Iiwid3JhcHBlZEl0ZW1zIiwidiIsInN0YXJ0c1dpdGgiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsInNldFZhbHVlTm9kZSIsInNldFZhbHVlTm9kZUhhc0NoaWxkcmVuIiwiJDAxYjljJHVzZURpcmVjdGlvbiIsIiQwMWI5YyR1c2VDb250cm9sbGFibGVTdGF0ZSIsIm5hdGl2ZU9wdGlvbnNTZXQiLCJzZXROYXRpdmVPcHRpb25zU2V0IiwibmF0aXZlU2VsZWN0S2V5Iiwib3B0aW9uIiwiJDAxYjljJFJvb3QiLCJwcmV2Iiwib3B0aW9uc1NldCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDRjOGQxYTU3YTc2MWVmOTQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjA0YTYxMjk4YTQ3YTQwZiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ1YzZjMDhkYzJkM2NhNyIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ2ZTViZjljNDNlYTkzMTkiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMmY2MGQzZWM5YWQ0NjhmMiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZjFhZWRjMzAzOWM4ZDYzIiwiU2VsZWN0IiwiaWNvbiIsIlNlbGVjdFByaW1pdGl2ZS5Sb290IiwiU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXIiLCJTZWxlY3RQcmltaXRpdmUuVmFsdWUiLCJTZWxlY3RQcmltaXRpdmUuSWNvbiIsIkFycm93RG93bkljb24iLCJTZWxlY3RQcmltaXRpdmUuQ29udGVudCIsIlNlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydCIsIlNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbiIsIlNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uIiwiU2VsZWN0SXRlbSIsIlNlbGVjdFByaW1pdGl2ZS5JdGVtIiwiU2VsZWN0SXRlbVRleHQiLCJTZWxlY3RQcmltaXRpdmUuSXRlbVRleHQiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCU19OQU1FIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJGNyZWF0ZVRhYnNDb250ZXh0IiwiJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDM1NWY1YmQyMDlkN2IxM2EiLCIkMUlIemskY3JlYXRlQ29udGV4dFNjb3BlIiwiJDFJSHprJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSIsIiQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVGFic1Byb3ZpZGVyIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0IiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VUcmlnZ2VySWQiLCJiYXNlSWQiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkbWFrZUNvbnRlbnRJZCIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDFJSHprJGZvcndhcmRSZWYiLCJfX3Njb3BlVGFicyIsImFjdGl2YXRpb25Nb2RlIiwidGFic1Byb3BzIiwiJDFJSHprJHVzZURpcmVjdGlvbiIsIiQxSUh6ayR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQxSUh6ayRjcmVhdGVFbGVtZW50IiwiJDFJSHprJHVzZUlkIiwiJDFJSHprJFByaW1pdGl2ZSIsIiQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ1NGMyZTNkYzdhY2VhOWY1IiwibGlzdFByb3BzIiwiJDFJSHprJFJvb3QiLCIkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCIsInRyaWdnZXJJZCIsIiQxSUh6ayRJdGVtIiwiJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiaXNBdXRvbWF0aWNBY3RpdmF0aW9uIiwiJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCJpc01vdW50QW5pbWF0aW9uUHJldmVudGVkUmVmIiwiJDFJSHprJHVzZVJlZiIsIiQxSUh6ayR1c2VFZmZlY3QiLCJyQUYiLCIkMUlIemskUHJlc2VuY2UiLCJhbmltYXRpb25EdXJhdGlvbiIsIlRhYnNSb290IiwiVGFicy5Sb290IiwiVGFic0xpc3QiLCJUYWJzLkxpc3QiLCJUYWIiLCJUYWJzLlRyaWdnZXIiLCJUYWJzQ29udGVudCIsIlRhYnMuQ29udGVudCJdLCJtYXBwaW5ncyI6Im1ZQUFlLFNBQVNBLElBWXRCLE9BWEFBLEVBQVdDLE9BQU9DLE9BQVNELE9BQU9DLE9BQU9DLE9BQVMsU0FBVUMsR0FDMUQsSUFBSyxJQUFJQyxFQUFJLEVBQUdBLEVBQUlDLFVBQVVDLE9BQVFGLElBQUssQ0FDekMsSUFBSUcsRUFBU0YsVUFBVUQsR0FDdkIsSUFBSyxJQUFJSSxLQUFPRCxFQUNWUCxPQUFPUyxVQUFVQyxlQUFlQyxLQUFLSixFQUFRQyxLQUMvQ0wsRUFBT0ssR0FBT0QsRUFBT0MsR0FHMUIsQ0FDRCxPQUFPTCxDQUNYLEVBQ1NKLEVBQVNhLE1BQU1DLEtBQU1SLFVBQzlCLENDZXFHLFNBQVNTLEVBQXlDQyxFQUFXQyxFQUF5QixJQUN2TCxJQUFJQyxFQUFrQixHQW1DMkUsTUFBTUMsRUFBYyxLQUNqSCxNQUFNQyxFQUFnQkYsRUFBZ0JHLEtBQUtDLEdBQ2xCQyxFQUFxQkQsS0FFOUMsT0FBTyxTQUFrQkUsR0FDckIsTUFBTUMsR0FBWUQsYUFBcUMsRUFBU0EsRUFBTVIsS0FBZUksRUFDckYsT0FBT00sR0FBZSxLQUFLLENBQ25CLENBQUMsVUFBVVYsS0FBYyxJQUNsQlEsRUFD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QUFJK29CLEVBQ0ozWixTQUFVLEdBQ1grWCxFQUFjLENBQ2J6b0IsSUFBS3dELEVBQ0wwSCxNQUFPLElBQ0E1TSxFQUFNNE0sTUFDVHk5RCxrQkFBbUJMLEVBQTZCcm9FLFFBQVUsVUFBT2pCLEtBRXJFeVUsR0FBV2xWLElBQ2xCLGtJQ2xKQyxTQUFVcXFFLEdBQVMzd0QsU0FBRTFaLEVBQVEwWixFQUFBMVosU0FBRWl5QixFQUFBdlksRUFBQTBDLFVBQUFBLE9BQVksSUFBQTZWLEVBQUEsR0FBRUEsRUFBS2x5QixFQUFLNFksR0FBQWUsRUFBcEMsMEJBQ3ZCLE9BQ0VLLEVBQUM1QixjQUFBbXlELFNBQ0t2cUUsRUFBSyxDQUNUcWMsVUFBV2lCLEdBQVcxRyxHQUFhLGlCQUFlZ0csRUFBQSxDQUFBLEVBQ2hEQSxFQUFDUCxHQUFZQSxRQUVkcGMsRUFHUCxDQU9NLFNBQVV1cUUsR0FBUzd3RCxTQUFFMVosYUFBVWl5QixFQUFBdlksRUFBQTBDLFVBQUFBLE9BQVMsSUFBQTZWLEVBQUcsR0FBRUEsRUFDakQsT0FDRWxZLEVBQUE1QixjQUFDcXlELEdBQ0MsQ0FBQXB1RCxVQUFXaUIsR0FBVzFHLEdBQWEsc0JBQW9CZ0csRUFBQSxDQUFBLEVBQ3JEQSxFQUFDUCxHQUFZQSxPQUVkcGMsRUFHUCxDQVNNLFNBQVV5cUUsR0FBSS93RCxTQUFFMVosRUFBUTBaLEVBQUExWixTQUFFaXlCLEVBQUF2WSxFQUFBMEMsVUFBQUEsT0FBWSxJQUFBNlYsRUFBQSxHQUFFQSxFQUFLbHlCLEVBQUs0WSxHQUFBZSxFQUFwQywwQkFDbEIsT0FDRUssRUFBQTVCLGNBQUN1eUQsR0FDS3B5RCxHQUFBLENBQUEsRUFBQXZZLEVBQ0osQ0FBQXFjLFVBQVdpQixHQUFXMUcsSUFBVWdHLEVBQUEsQ0FBQSxFQUM5QkEsRUFBQ1AsR0FBWUEsUUFFZHBjLEVBR1AsQ0FRTSxTQUFVMnFFLEdBQVlqeEQsU0FBRTFaLEVBQVEwWixFQUFBMVosU0FBRUcsRUFBS3VaLEVBQUF2WixNQUFFOHhCLGNBQUE3VixPQUFZLElBQUE2VixFQUFBLEdBQUVBLEVBQzNELE9BQ0VsWSxFQUFDNUIsY0FBQXl5RCxHQUFZLENBQ1h6cUUsTUFBT0EsRUFDUGljLFVBQVdpQixHQUFXMUcsR0FBZ0IscUJBQW1CZ0csRUFBQSxDQUFBLEVBQ3ZEQSxFQUFDUCxHQUFZQSxPQUVkcGMsRUFHUCIsInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQ0LDQ1LDQ2LDg2LDkzLDk0LDk1LDk2LDk3LDk4LDEwMCwxMDIsMTAzLDEwNCwxMDUsMTA3LDEwOSwxMTAsMTEyLDExMywxMTVdfQ==
|