1const rt={forms:{contact:{dst:"https://formularserver-bp.bayern.de/intelliform/forms/rzsued/polizei/polizei/kontaktformular/index?dstog2=",fahndung:{de:"https://bp-cit-test.bayern.de/intelliform/forms/entwicklung/itdlz/polizei/fahndungshinweis_de/index?hash=",en:"https://bp-cit-test.bayern.de/intelliform/forms/entwicklung/itdlz/polizei/fahndungshinweis_en/index?hash"}}},categories:{dst:"https://www.polizei.bayern.de/wir-ueber-uns/organisation/dienststellen/"},mail:{barriere:"[email protected]"},chatbot:{id:"ut-widget",src:"https://polizei.assistent.bayern.de/static/widget/widget.js",async:!0,init:{type:"text",data:{text:"Willkommen bei der Bayerischen Polizei"},addMessage:!1},chatEndpoint:"/chat/widget/",showWidget:2e3,pages:[],activate(){if(this.pages.includes(window.location.pathname)){const n=document.createElement("script");n.async=this.async,n.id=this.id,n.src=this.src,document.body.appendChild(n),console.log(`ChatBot für Url ${window.location.pathname} aktiviert.`)}}},matomo_file:"/static/js/matomo-bysk.js",twitter_url:"https://platform.twitter.com/widgets.js",use_twitter:!1,use_youtube:!1};function q(){}const Ql=n=>n;function Ee(n,e){for(const t in e)n[t]=e[t];return n}function lo(n){return!!n&&(typeof n=="object"||typeof n=="function")&&typeof n.then=="function"}function Zs(n){return n()}function Ii(){return Object.create(null)}function Ue(n){n.forEach(Zs)}function gt(n){return typeof n=="function"}function io(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}let ul;function pe(n,e){return n===e?!0:(ul||(ul=document.createElement("a")),ul.href=e,n===ul.href)}function Ci(n){return n.split(",").map(e=>e.trim().split(" ").filter(Boolean))}function ht(n,e){const t=Ci(n.srcset),l=Ci(e||"");return l.length===t.length&&l.every(([i,s],r)=>s===t[r][1]&&(pe(t[r][0],i)||pe(i,t[r][0])))}function ve(n,e){return n!=n?e==e:n!==e}function no(n){return Object.keys(n).length===0}function wt(n,e,t,l){if(n){const i=Ys(n,e,t,l);return n[0](i)}}function Ys(n,e,t,l){return n[1]&&l?Ee(t.ctx.slice(),n[1](l(e))):t.ctx}function yt(n,e,t,l){if(n[2]&&l){const i=n[2](l(t));if(e.dirty===void 0)return i;if(typeof i=="object"){const s=[],r=Math.max(e.dirty.length,i.length);for(let o=0;o<r;o+=1)s[o]=e.dirty[o]|i[o];return s}return e.dirty|i}return e.dirty}function Et(n,e,t,l,i,s){if(i){const r=Ys(e,t,l,s);n.p(r,i)}}function It(n){if(n.ctx.length>32){const e=[],t=n.ctx.length/32;for(let l=0;l<t;l++)e[l]=-1;return e}return-1}function so(n){const e={};for(const t in n)t[0]!=="$"&&(e[t]=n[t]);return e}function Si(n,e){const t={};e=new Set(e);for(const l in n)!e.has(l)&&l[0]!=="$"&&(t[l]=n[l]);return t}function Di(n){const e=typeof n=="string"&&n.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return e?[parseFloat(e[1]),e[2]||"px"]:[n,"px"]}const Js=typeof window<"u";let Xs=Js?()=>window.performance.now():()=>Date.now(),xl=Js?n=>requestAnimationFrame(n):q;const Nt=new Set;function Qs(n){Nt.forEach(e=>{e.c(n)||(Nt.delete(e),e.f())}),Nt.size!==0&&xl(Qs)}function xs(n){let e;return Nt.size===0&&xl(Qs),{promise:new Promise(t=>{Nt.add(e={c:n,f:t})}),abort(){Nt.delete(e)}}}const $s=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;let Il=!1;function ro(){Il=!0}function oo(){Il=!1}function ao(n,e,t,l){for(;n<e;){const i=n+(e-n>>1);t(i)<=l?n=i+1:e=i}return n}function co(n){if(n.hydrate_init)return;n.hydrate_init=!0;let e=n.childNodes;if(n.nodeName==="HEAD"){const a=[];for(let c=0;c<e.length;c++){const f=e[c];f.claim_order!==void 0&&a.push(f)}e=a}const t=new Int32Array(e.length+1),l=new Int32Array(e.length);t[0]=-1;let i=0;for(let a=0;a<e.length;a++){const c=e[a].claim_order,f=(i>0&&e[t[i]].claim_order<=c?i+1:ao(1,i,h=>e[t[h]].claim_order,c))-1;l[a]=t[f]+1;const d=f+1;t[d]=a,i=Math.max(d,i)}const s=[],r=[];let o=e.length-1;for(let a=t[i]+1;a!=0;a=l[a-1]){for(s.push(e[a-1]);o>=a;o--)r.push(e[o]);o--}for(;o>=0;o--)r.push(e[o]);s.reverse(),r.sort((a,c)=>a.claim_order-c.claim_order);for(let a=0,c=0;a<r.length;a++){for(;c<s.length&&r[a].claim_order>=s[c].claim_order;)c++;const f=c<s.length?s[c]:null;n.insertBefore(r[a],f)}}function fo(n,e){n.appendChild(e)}function er(n){if(!n)return document;const e=n.getRootNode?n.getRootNode():n.ownerDocument;return e&&e.host?e:n.ownerDocument}function uo(n){const e=p("style");return e.textContent="/* empty */",ho(er(n),e),e.sheet}function ho(n,e){return fo(n.head||n,e),e.sheet}function m(n,e){if(Il){for(co(n),(n.actual_end_child===void 0||n.actual_end_child!==null&&n.actual_end_child.parentNode!==n)&&(n.actual_end_child=n.firstChild);n.actual_end_child!==null&&n.actual_end_child.claim_order===void 0;)n.actual_end_child=n.actual_end_child.nextSibling;e!==n.actual_end_child?(e.claim_order!==void 0||e.parentNode!==n)&&n.insertBefore(e,n.actual_end_child):n.actual_end_child=e.nextSibling}else(e.parentNode!==n||e.nextSibling!==null)&&n.appendChild(e)}function _o(n,e,t){n.insertBefore(e,t||null)}function D(n,e,t){Il&&!t?m(n,e):(e.parentNode!==n||e.nextSibling!=t)&&n.insertBefore(e,t||null)}function _(n){n.parentNode&&n.parentNode.removeChild(n)}function Fe(n,e){for(let t=0;t<n.length;t+=1)n[t]&&n[t].d(e)}function p(n){return document.createElement(n)}function nt(n){return document.createElementNS("http://www.w3.org/2000/svg",n)}function j(n){return document.createTextNode(n)}function T(){return j(" ")}function Z(){return j("")}function de(n,e,t,l){return n.addEventListener(e,t,l),()=>n.removeEventListener(e,t,l)}function Qt(n){return function(e){return e.preventDefault(),n.call(this,e)}}function u(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}const mo=["width","height"];function zi(n,e){const t=Object.getOwnPropertyDescriptors(n.__proto__);for(const l in e)e[l]==null?n.removeAttribute(l):l==="style"?n.style.cssText=e[l]:l==="__value"?n.value=n[l]=e[l]:t[l]&&t[l].set&&mo.indexOf(l)===-1?n[l]=e[l]:u(n,l,e[l])}function ze(n){return n.dataset.svelteH}function k(n){return Array.from(n.childNodes)}function tr(n){n.claim_info===void 0&&(n.claim_info={last_index:0,total_claimed:0})}function lr(n,e,t,l,i=!1){tr(n);const s=(()=>{for(let r=n.claim_info.last_index;r<n.length;r++){const o=n[r];if(e(o)){const a=t(o);return a===void 0?n.splice(r,1):n[r]=a,i||(n.claim_info.last_index=r),o}}for(let r=n.claim_info.last_index-1;r>=0;r--){const o=n[r];if(e(o)){const a=t(o);return a===void 0?n.splice(r,1):n[r]=a,i?a===void 0&&n.claim_info.last_index--:n.claim_info.last_index=r,o}}return l()})();return s.claim_order=n.claim_info.total_claimed,n.claim_info.total_claimed+=1,s}function ir(n,e,t,l){return lr(n,i=>i.nodeName===e,i=>{const s=[];for(let r=0;r<i.attributes.length;r++){const o=i.attributes[r];t[o.name]||s.push(o.name)}s.forEach(r=>i.removeAttribute(r))},()=>l(e))}function b(n,e,t){return ir(n,e,t,p)}function _t(n,e,t){return ir(n,e,t,nt)}function R(n,e){return lr(n,t=>t.nodeType===3,t=>{const l=""+e;if(t.data.startsWith(l)){if(t.data.length!==l.length)return t.splitText(l.length)}else t.data=l},()=>j(e),!0)}function L(n){return R(n," ")}function Ai(n,e,t){for(let l=t;l<n.length;l+=1){const i=n[l];if(i.nodeType===8&&i.textContent.trim()===e)return l}return-1}function We(n,e){const t=Ai(n,"HTML_TAG_START",0),l=Ai(n,"HTML_TAG_END",t+1);if(t===-1||l===-1)return new je(e);tr(n);const i=n.splice(t,l-t+1);_(i[0]),_(i[i.length-1]);const s=i.slice(1,i.length-1);if(s.length===0)return new je(e);for(const r of s)r.claim_order=n.claim_info.total_claimed,n.claim_info.total_claimed+=1;return new je(e,s)}function J(n,e){e=""+e,n.data!==e&&(n.data=e)}function st(n,e){n.value=e??""}function lt(n,e,t,l){t==null?n.style.removeProperty(e):n.style.setProperty(e,t,"")}function Ge(n,e,t){n.classList.toggle(e,!!t)}
1function go(n,e,{bubbles:t=!1,cancelable:l=!1}={}){return new CustomEvent(n,{detail:e,bubbles:t,cancelable:l})}class po{is_svg=!1;e=void 0;n=void 0;t=void 0;a=void 0;constructor(e=!1){this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,t,l=null){this.e||(this.is_svg?this.e=nt(t.nodeName):this.e=p(t.nodeType===11?"TEMPLATE":t.nodeName),this.t=t.tagName!=="TEMPLATE"?t:t.content,this.c(e)),this.i(l)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let t=0;t<this.n.length;t+=1)_o(this.t,this.n[t],e)}p(e){this.d(),this.h(e),this.i(this.a)}d(){this.n.forEach(_)}}class je extends po{l=void 0;constructor(e=!1,t){super(e),this.e=this.n=null,this.l=t}c(e){this.l?this.n=this.l:super.c(e)}i(e){for(let t=0;t<this.n.length;t+=1)D(this.t,this.n[t],e)}}function Ye(n,e){return new n(e)}const kl=new Map;let vl=0;function bo(n){let e=5381,t=n.length;for(;t--;)e=(e<<5)-e^n.charCodeAt(t);return e>>>0}function ko(n,e){const t={stylesheet:uo(e),rules:{}};return kl.set(n,t),t}function Rl(n,e,t,l,i,s,r,o=0){const a=16.666/l;let c=`{ 2`;for(let I=0;I<=1;I+=a){const C=e+(t-e)*s(I);c+=I*100+`%{${r(C,1-C)}} 3`}const f=c+`100% {${r(t,1-t)}} 4}`,d=`__svelte_${bo(f)}_${o}`,h=er(n),{stylesheet:g,rules:v}=kl.get(h)||ko(h,n);v[d]||(v[d]=!0,g.insertRule(`@keyframes ${d} ${f}`,g.cssRules.length));const y=n.style.animation||"";return n.style.animation=`${y?`${y}, `:""}${d} ${l}ms linear ${i}ms 1 both`,vl+=1,d}function nr(n,e){const t=(n.style.animation||"").split(", "),l=t.filter(e?s=>s.indexOf(e)<0:s=>s.indexOf("__svelte")===-1),i=t.length-l.length;i&&(n.style.animation=l.join(", "),vl-=i,vl||vo())}function vo(){xl(()=>{vl||(kl.forEach(n=>{const{ownerNode:e}=n.stylesheet;e&&_(e)}),kl.clear())})}function wo(n,e,t,l){if(!e)return q;const i=n.getBoundingClientRect();if(e.left===i.left&&e.right===i.right&&e.top===i.top&&e.bottom===i.bottom)return q;const{delay:s=0,duration:r=300,easing:o=Ql,start:a=Xs()+s,end:c=a+r,tick:f=q,css:d}=t(n,{from:e,to:i},l);let h=!0,g=!1,v;function y(){d&&(v=Rl(n,0,1,r,s,o,d)),s||(g=!0)}function I(){d&&nr(n,v),h=!1}return xs(C=>{if(!g&&C>=a&&(g=!0),g&&C>=c&&(f(1,0),I()),!h)return!1;if(g){const E=C-a,A=0+1*o(E/r);f(A,1-A)}return!0}),y(),f(0,1),I}function yo(n){const e=getComputedStyle(n);if(e.position!=="absolute"&&e.position!=="fixed"){const{width:t,height:l}=e,i=n.getBoundingClientRect();n.style.position="absolute",n.style.width=t,n.style.height=l,sr(n,i)}}function sr(n,e){const t=n.getBoundingClientRect();if(e.left!==t.left||e.top!==t.top){const l=getComputedStyle(n),i=l.transform==="none"?"":l.transform;n.style.transform=`${i} translate(${e.left-t.left}px, ${e.top-t.top}px)`}}let xt;function ot(n){xt=n}function $l(){if(!xt)throw new Error("Function called outside component initialization");return xt}function Eo(n){$l().$$.on_mount.push(n)}function Io(n){$l().$$.after_update.push(n)}const Vt=[],Mt=[];let Bt=[];const Ul=[],rr=Promise.resolve();let Hl=!1;function or(){Hl||(Hl=!0,rr.then(ei))}function Co(){return or(),rr}function mt(n){Bt.push(n)}function So(n){Ul.push(n)}const Bl=new Set;let Tt=0;function ei(){if(Tt!==0)return;const n=xt;do{try{for(;Tt<Vt.length;){const e=Vt[Tt];Tt++,ot(e),Do(e.$$)}}catch(e){throw Vt.length=0,Tt=0,e}for(ot(null),Vt.length=0,Tt=0;Mt.length;)Mt.pop()();for(let e=0;e<Bt.length;e+=1){const t=Bt[e];Bl.has(t)||(Bl.add(t),t())}Bt.length=0}while(Vt.length);for(;Ul.length;)Ul.pop()();Hl=!1,Bl.clear(),ot(n)}function Do(n){if(n.fragment!==null){n.update(),Ue(n.before_update);const e=n.dirty;n.dirty=[-1],n.fragment&&n.fragment.p(n.ctx,e),n.after_update.forEach(mt)}}function zo(n){const e=[],t=[];Bt.forEach(l=>n.indexOf(l)===-1?e.push(l):t.push(l)),t.forEach(l=>l()),Bt=e}let Wt;function Ao(){return Wt||(Wt=Promise.resolve(),Wt.then(()=>{Wt=null})),Wt}function Pl(n,e,t){n.dispatchEvent(go(`${e?"intro":"outro"}${t}`))}const ml=new Set;let at;function ce(){at={r:0,c:[],p:at}}function fe(){at.r||Ue(at.c),at=at.p}function z(n,e){n&&n.i&&(ml.delete(n),n.i(e))}function N(n,e,t,l){if(n&&n.o){if(ml.has(n))return;ml.add(n),at.c.push(()=>{ml.delete(n),l&&(t&&n.d(1),l())}),n.o(e)}else l&&l()}const To={duration:0};function Pt(n,e,t,l){let s=e(n,t,{direction:"both"}),r=l?0:1,o=null,a=null,c=null,f;function d(){c&&nr(n,c)}function h(v,y){const I=v.b-r;return y*=Math.abs(I),{a:r,b:v.b,d:I,duration:y,start:v.start,end:v.start+y,group:v.group}}function g(v){const{delay:y=0,duration:I=300,easing:C=Ql,tick:E=q,css:A}=s||To,S={start:Xs()+y,b:v};v||(S.group=at,at.r+=1),"inert"in n&&(v?f!==void 0&&(n.inert=f):(f=n.inert,n.inert=!0)),o||a?a=S:(A&&(d(),c=Rl(n,r,v,I,y,C,A)),v&&E(0,1),o=h(S,I),mt(()=>Pl(n,v,"start")),xs(B=>{if(a&&B>a.start&&(o=h(a,I),a=null,Pl(n,o.b,"start"),A&&(d(),c=Rl(n,r,o.b,o.duration,0,C,s.css))),o){if(B>=o.end)E(r=o.b,1-r),Pl(n,o.b,"end"),a||(o.b?d():--o.group.r||Ue(o.group.c)),o=null;else if(B>=o.start){const F=B-o.start;r=o.a+o.d*C(F/o.duration),E(r,1-r)}}return!!(o||a)}))}return{run(v){gt(s)?Ao().then(()=>{s=s({direction:v?"in":"out"}),g(v)}):g(v)},end(){d(),o=a=null}}}function wl(n,e){const t=e.token={};function l(i,s,r,o){if(e.token!==t)return;e.resolved=o;let a=e.ctx;r!==void 0&&(a=a.slice(),a[r]=o);const c=i&&(e.current=i)(a);let f=!1;e.block&&(e.blocks?e.blocks.forEach((d,h)=>{h!==s&&d&&(ce(),N(d,1,1,()=>{e.blocks[h]===d&&(e.blocks[h]=null)}),fe())}):e.block.d(1),c.c(),z(c,1),c.m(e.mount(),e.anchor),f=!0),e.block=c,e.blocks&&(e.blocks[s]=c),f&&ei()}if(lo(n)){const i=$l();if(n.then(s=>{ot(i),l(e.then,1,e.value,s),ot(null)},s=>{if(ot(i),l(e.catch,2,e.error,s),ot(null),!e.hasCatch)throw s}),e.current!==e.pending)return l(e.pending,0),!0}else{if(e.current!==e.then)return l(e.then,1,e.value,n),!0;e.resolved=n}}function ar(n,e,t){const l=e.slice(),{resolved:i}=n;
4n.current===n.then&&(l[n.value]=i),n.current===n.catch&&(l[n.error]=i),n.block.p(l,t)}function le(n){return n?.length!==void 0?n:Array.from(n)}function Lo(n,e){N(n,1,1,()=>{e.delete(n.key)})}function Vo(n,e){n.f(),Lo(n,e)}function Fo(n,e,t,l,i,s,r,o,a,c,f,d){let h=n.length,g=s.length,v=h;const y={};for(;v--;)y[n[v].key]=v;const I=[],C=new Map,E=new Map,A=[];for(v=g;v--;){const V=d(i,s,v),M=t(V);let U=r.get(M);U?A.push(()=>U.p(V,e)):(U=c(M,V),U.c()),C.set(M,I[v]=U),M in y&&E.set(M,Math.abs(v-y[M]))}const S=new Set,B=new Set;function F(V){z(V,1),V.m(o,f),r.set(V.key,V),f=V.first,g--}for(;h&&g;){const V=I[g-1],M=n[h-1],U=V.key,W=M.key;V===M?(f=V.first,h--,g--):C.has(W)?!r.has(U)||S.has(U)?F(V):B.has(W)?h--:E.get(U)>E.get(W)?(B.add(U),F(V)):(S.add(W),h--):(a(M,r),h--)}for(;h--;){const V=n[h];C.has(V.key)||a(V,r)}for(;g;)F(I[g-1]);return Ue(A),I}function Te(n,e){const t={},l={},i={$$scope:1};let s=n.length;for(;s--;){const r=n[s],o=e[s];if(o){for(const a in r)a in o||(l[a]=1);for(const a in o)i[a]||(t[a]=o[a],i[a]=1);n[s]=o}else for(const a in r)i[a]=1}for(const r in l)r in t||(t[r]=void 0);return t}function Ve(n){return typeof n=="object"&&n!==null?n:{}}function No(n,e,t){const l=n.$$.props[e];l!==void 0&&(n.$$.bound[l]=t,t(n.$$.ctx[l]))}function se(n){n&&n.c()}function he(n,e){n&&n.l(e)}function ie(n,e,t){const{fragment:l,after_update:i}=n.$$;l&&l.m(e,t),mt(()=>{const s=n.$$.on_mount.map(Zs).filter(gt);n.$$.on_destroy?n.$$.on_destroy.push(...s):Ue(s),n.$$.on_mount=[]}),i.forEach(mt)}function ne(n,e){const t=n.$$;t.fragment!==null&&(zo(t.after_update),Ue(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Mo(n,e){n.$$.dirty[0]===-1&&(Vt.push(n),or(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<<e%31}function we(n,e,t,l,i,s,r=null,o=[-1]){const a=xt;ot(n);const c=n.$$={fragment:null,ctx:[],props:s,update:q,not_equal:i,bound:Ii(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(a?a.$$.context:[])),callbacks:Ii(),dirty:o,skip_bound:!1,root:e.target||a.$$.root};r&&r(c.root);let f=!1;if(c.ctx=t?t(n,e.props||{},(d,h,...g)=>{const v=g.length?g[0]:h;return c.ctx&&i(c.ctx[d],c.ctx[d]=v)&&(!c.skip_bound&&c.bound[d]&&c.bound[d](v),f&&Mo(n,d)),h}):[],c.update(),f=!0,Ue(c.before_update),c.fragment=l?l(c.ctx):!1,e.target){if(e.hydrate){ro();const d=k(e.target);c.fragment&&c.fragment.l(d),d.forEach(_)}else c.fragment&&c.fragment.c();e.intro&&z(n.$$.fragment),ie(n,e.target,e.anchor),oo(),ei()}ot(a)}class ye{$$=void 0;$$set=void 0;$destroy(){ne(this,1),this.$destroy=q}$on(e,t){if(!gt(t))return q;const l=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return l.push(t),()=>{const i=l.indexOf(t);i!==-1&&l.splice(i,1)}}$set(e){this.$$set&&!no(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Bo="4",Lt=[];function ct(n,e=q){let t;const l=new Set;function i(o){if(io(n,o)&&(n=o,t)){const a=!Lt.length;for(const c of l)c[1](),Lt.push(c,n);if(a){for(let c=0;c<Lt.length;c+=2)Lt[c][0](Lt[c+1]);Lt.length=0}}}function s(o){i(o(n))}function r(o,a=q){const c=[o,a];return l.add(c),l.size===1&&(t=e(i,s)||q),o(n),()=>{l.delete(c),l.size===0&&t&&(t(),t=null)}}return{set:i,update:s,subscribe:r}}const yl=ct(!1),gl=ct(!1),cr=ct(!1),Kl=ct(!1),fr=ct(!1),ql=ct(!1),Gl=ct(0),Ti=ct(!1),Po=ct(!1);function Oo(){let n=!1;it("allowFunctionalCookies")?n=it("allowFunctionalCookies")==="true":Qe("allowFunctionalCookies",n),yl.set(n);let e=!1;it("allowTrackingCookies")?e=it("allowTrackingCookies")==="true":Qe("allowTrackingCookies",e),gl.set(e);let t=!0;it("showBanner")?t=it("showBanner")==="true":Qe("showBanner",t),fr.set(t);let l=!1;it("darkMode")?l=it("darkMode")==="true":n&&Qe("darkMode",l),ql.set(l);let i=0;it("fontMode")?i=it("fontMode"):n&&Qe("fontMode",i),Gl.set(i)}function Qe(n,e,t=30){const l=new Date;l.setTime(l.getTime()+t*24*60*60*1e3);const i="expires="+l.toUTCString();window.location.protocol==="https:"?document.cookie=n+"="+e+";"+i+";path=/; Secure; SameSite=Lax":document.cookie=n+"="+e+";"+i+";path=/"}function it(n){const e=n+"=",t=document.cookie.split(";");for(let l=0;l<t.length;l++){let i=t[l].trim();if(i.indexOf(e)===0)return i.substring(e.length,i.length)}return""}function Yt(n){document.cookie=`${n}=; path=/; expires=${new Date(0).toUTCString()}`}function Ol(n){const e=document.cookie.split(";"),t=new RegExp(n);e.map(l=>{const i=l.trim();t.test(i)&&Yt(i)})}
4typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Bo);function jo(n){let e,t,l,i,s,r,o=n[5]&&Li(n);return{c(){e=p("button"),t=p("i"),i=T(),o&&o.c(),this.h()},l(a){e=b(a,"BUTTON",{id:!0,title:!0,type:!0,class:!0});var c=k(e);t=b(c,"I",{class:!0,role:!0,tabindex:!0}),k(t).forEach(_),i=L(c),o&&o.l(c),c.forEach(_),this.h()},h(){u(t,"class",l=n[3]+" text-xl w-[20px] focus:outline-none"),u(t,"role","presentation"),u(t,"tabindex","-1"),u(e,"id",n[0]),u(e,"title",n[1]),e.disabled=n[6],u(e,"type","button"),u(e,"class",n[7])},m(a,c){D(a,e,c),m(e,t),m(e,i),o&&o.m(e,null),s||(r=de(e,"click",n[12]),s=!0)},p(a,c){c&8&&l!==(l=a[3]+" text-xl w-[20px] focus:outline-none")&&u(t,"class",l),a[5]?o?o.p(a,c):(o=Li(a),o.c(),o.m(e,null)):o&&(o.d(1),o=null),c&1&&u(e,"id",a[0]),c&2&&u(e,"title",a[1]),c&64&&(e.disabled=a[6]),c&128&&u(e,"class",a[7])},d(a){a&&_(e),o&&o.d(),s=!1,r()}}}function Ro(n){let e,t,l,i,s,r,o=n[5]&&Vi(n);return{c(){e=p("button"),t=p("i"),i=T(),o&&o.c(),this.h()},l(a){e=b(a,"BUTTON",{id:!0,title:!0,type:!0,class:!0});var c=k(e);t=b(c,"I",{class:!0,role:!0,tabindex:!0}),k(t).forEach(_),i=L(c),o&&o.l(c),c.forEach(_),this.h()},h(){u(t,"class",l=n[4]+" text-xl w-[20px] focus:outline-none"),u(t,"role","presentation"),u(t,"tabindex","-1"),u(e,"id",n[0]),u(e,"title",n[2]),e.disabled=n[6],u(e,"type","button"),u(e,"class",n[7])},m(a,c){D(a,e,c),m(e,t),m(e,i),o&&o.m(e,null),s||(r=de(e,"click",n[11]),s=!0)},p(a,c){c&16&&l!==(l=a[4]+" text-xl w-[20px] focus:outline-none")&&u(t,"class",l),a[5]?o?o.p(a,c):(o=Vi(a),o.c(),o.m(e,null)):o&&(o.d(1),o=null),c&1&&u(e,"id",a[0]),c&4&&u(e,"title",a[2]),c&64&&(e.disabled=a[6]),c&128&&u(e,"class",a[7])},d(a){a&&_(e),o&&o.d(),s=!1,r()}}}function Li(n){let e,t;return{c(){e=p("span"),t=j(n[5]),this.h()},l(l){e=b(l,"SPAN",{class:!0});var i=k(e);t=R(i,n[5]),i.forEach(_),this.h()},h(){u(e,"class","hidden sm:block")},m(l,i){D(l,e,i),m(e,t)},p(l,i){i&32&&J(t,l[5])},d(l){l&&_(e)}}}function Vi(n){let e,t;return{c(){e=p("span"),t=j(n[5]),this.h()},l(l){e=b(l,"SPAN",{class:!0});var i=k(e);t=R(i,n[5]),i.forEach(_),this.h()},h(){u(e,"class","hidden sm:block")},m(l,i){D(l,e,i),m(e,t)},p(l,i){i&32&&J(t,l[5])},d(l){l&&_(e)}}}function Uo(n){let e;function t(s,r){return s[9]&&s[4]?Ro:jo}let l=t(n),i=l(n);return{c(){i.c(),e=Z()},l(s){i.l(s),e=Z()},m(s,r){i.m(s,r),D(s,e,r)},p(s,[r]){l===(l=t(s))&&i?i.p(s,r):(i.d(1),i=l(s),i&&(i.c(),i.m(e.parentNode,e)))},i:q,o:q,d(s){s&&_(e),i.d(s)}}}function Ho(n,e,t){let{id:l=null}=e,{title:i=null}=e,{close_title:s=null}=e,{icon:r="bomb"}=e,{close_icon:o=null}=e,{text:a=null}=e,{disabled:c=!1}=e,{store:f=null}=e,{css:d="p-3 bg-inherit flex items-center space-x-2 hover:text-bp-blue disabled:text-bp-gray-dark duration-500"}=e,{action:h=()=>{}}=e,g=!1;f&&f.subscribe(I=>{t(9,g=I)});const v=()=>h(),y=()=>h();return n.$$set=I=>{"id"in I&&t(0,l=I.id),"title"in I&&t(1,i=I.title),"close_title"in I&&t(2,s=I.close_title),"icon"in I&&t(3,r=I.icon),"close_icon"in I&&t(4,o=I.close_icon),"text"in I&&t(5,a=I.text),"disabled"in I&&t(6,c=I.disabled),"store"in I&&t(10,f=I.store),"css"in I&&t(7,d=I.css),"action"in I&&t(8,h=I.action)},[l,i,s,r,o,a,c,d,h,g,f,v,y]}class Ft extends ye{constructor(e){super(),we(this,e,Ho,Uo,ve,{id:0,title:1,close_title:2,icon:3,close_icon:4,text:5,disabled:6,store:10,css:7,action:8})}}function ur(n){const e=n-1;return e*e*e+1}function El(n,{delay:e=0,duration:t=400,easing:l=Ql}={}){const i=+getComputedStyle(n).opacity;return{delay:e,duration:t,easing:l,css:s=>`opacity: ${s*i}`}}function Fi(n,{delay:e=0,duration:t=400,easing:l=ur,x:i=0,y:s=0,opacity:r=0}={}){const o=getComputedStyle(n),a=+o.opacity,c=o.transform==="none"?"":o.transform,f=a*(1-r),[d,h]=Di(i),[g,v]=Di(s);return{delay:e,duration:t,easing:l,css:(y,I)=>` 5 transform: ${c} translate(${(1-y)*d}${h}, ${(1-y)*g}${v}); 6 opacity: ${a-f*I}`}}function Ni(n,e,t){const l=n.slice();return l[10]=e[t],l}function Mi(n){let e,t;return{c(){e=p("p"),t=new je(!1),this.h()},l(l){e=b(l,"P",{class:!0});var i=k(e);t=We(i,!1),i.forEach(_),this.h()},h(){t.a=null,u(e,"class","flex-1 text-sm")},m(l,i){D(l,e,i),t.m(n[1],e)},p(l,i){i&2&&t.p(l[1])},d(l){l&&_(e)}}}function Bi(n){let e,t="Folgende Cookies werden gespeichert",l,i,s=le(n[2]),r=[];for(let o=0;o<s.length;o+=1)r[o]=Pi(Ni(n,s,o));return{c(){e=p("p"),e.textContent=t,l=T(),i=p("ul");for(let o=0;o<r.length;o+=1)r[o].c();this.h()},l(o){e=b(o,"P",{class:!0,"data-svelte-h":!0}),ze(e)!=="svelte-ev7uhp"&&(e.textContent=t),l=L(o),i=b(o,"UL",{class:!0});var a=k(i);for(let c=0;c<r.length;c+=1)r[c].l(a);a.forEach(_),this.h()},h(){u(e,"class","text-sm my-2"),u(i,"class","list-disc text-sm ml-8")},m(o,a){D(o,e,a),D(o,l,a),D(o,i,a);for(let c=0;c<r.length;c+=1)r[c]&&r[c].m(i,null)},p(o,a){if(a&4){s=le(o[2]);let c;for(c=0;c<s.length;c+=1){const f=Ni(o,s,c);r[c]?r[c].p(f,a):(r[c]=Pi(f),r[c].c(),r[c].m(i,null))}for(;c<r.length;c+=1)r[c].d(1);r.length=s.length}},d(o){o&&(_(e),_(l),_(i)),Fe(r,o)}}}function Pi(n){let e,t,l=n[10].name+"",i,s,r=n[10].desc+"",o;return{c(){e=p("li"),t=p("strong"),i=j(l),s=p("br"),o=j(r)},l(a){e=b(a,"LI",{});var c=k(e);
6t=b(c,"STRONG",{});var f=k(t);i=R(f,l),f.forEach(_),s=b(c,"BR",{}),o=R(c,r),c.forEach(_)},m(a,c){D(a,e,c),m(e,t),m(t,i),m(e,s),m(e,o)},p(a,c){c&4&&l!==(l=a[10].name+"")&&J(i,l),c&4&&r!==(r=a[10].desc+"")&&J(o,r)},d(a){a&&_(e)}}}function Ko(n){let e,t,l,i,s="Einstellung setzen",r,o,a,c,f,d,h,g,v,y,I,C,E,A,S,B,F,V,M,U,W,O,ee=n[1]&&Mi(n),H=n[2].length&&Bi(n);return{c(){e=p("div"),t=p("div"),l=p("button"),i=p("span"),i.textContent=s,r=T(),o=p("span"),a=p("span"),c=nt("svg"),f=nt("path"),h=T(),g=p("span"),v=nt("svg"),y=nt("path"),A=T(),S=p("details"),B=p("summary"),F=j(n[0]),V=T(),M=p("div"),ee&&ee.c(),U=T(),H&&H.c(),this.h()},l(Q){e=b(Q,"DIV",{class:!0});var P=k(e);t=b(P,"DIV",{class:!0});var K=k(t);l=b(K,"BUTTON",{type:!0,class:!0,role:!0,"aria-checked":!0});var ue=k(l);i=b(ue,"SPAN",{class:!0,"data-svelte-h":!0}),ze(i)!=="svelte-m5dfvc"&&(i.textContent=s),r=L(ue),o=b(ue,"SPAN",{class:!0});var $=k(o);a=b($,"SPAN",{class:!0,"aria-hidden":!0});var oe=k(a);c=_t(oe,"svg",{class:!0,fill:!0,viewBox:!0,role:!0,tabindex:!0});var me=k(c);f=_t(me,"path",{d:!0,stroke:!0,"stroke-width":!0,"stroke-linecap":!0,"stroke-linejoin":!0}),k(f).forEach(_),me.forEach(_),oe.forEach(_),h=L($),g=b($,"SPAN",{class:!0,"aria-hidden":!0});var x=k(g);v=_t(x,"svg",{class:!0,fill:!0,viewBox:!0,role:!0,tabindex:!0});var be=k(v);y=_t(be,"path",{d:!0}),k(y).forEach(_),be.forEach(_),x.forEach(_),$.forEach(_),ue.forEach(_),K.forEach(_),A=L(P),S=b(P,"DETAILS",{class:!0});var _e=k(S);B=b(_e,"SUMMARY",{class:!0});var Ne=k(B);F=R(Ne,n[0]),Ne.forEach(_),V=L(_e),M=b(_e,"DIV",{class:!0});var Ie=k(M);ee&&ee.l(Ie),U=L(Ie),H&&H.l(Ie),Ie.forEach(_),_e.forEach(_),P.forEach(_),this.h()},h(){u(i,"class","sr-only"),u(f,"d","M4 8l2-2m0 0l2-2M6 6L4 4m2 2l2 2"),u(f,"stroke","currentColor"),u(f,"stroke-width","2"),u(f,"stroke-linecap","round"),u(f,"stroke-linejoin","round"),u(c,"class","h-3 w-3 text-gray-400"),u(c,"fill","none"),u(c,"viewBox","0 0 12 12"),u(c,"role","presentation"),u(c,"tabindex","-1"),u(a,"class",d=n[5]+" absolute inset-0 flex h-full w-full items-center justify-center transition-opacity"),u(a,"aria-hidden","true"),u(y,"d","M3.707 5.293a1 1 0 00-1.414 1.414l1.414-1.414zM5 8l-.707.707a1 1 0 001.414 0L5 8zm4.707-3.293a1 1 0 00-1.414-1.414l1.414 1.414zm-7.414 2l2 2 1.414-1.414-2-2-1.414 1.414zm3.414 2l4-4-1.414-1.414-4 4 1.414 1.414z"),u(v,"class","h-3 w-3 text-indigo-600"),u(v,"fill","currentColor"),u(v,"viewBox","0 0 12 12"),u(v,"role","presentation"),u(v,"tabindex","-1"),u(g,"class",I=n[4]+" absolute inset-0 flex h-full w-full items-center justify-center transition-opacity"),u(g,"aria-hidden","true"),u(o,"class",C=n[6]+" pointer-events-none relative inline-block h-5 w-5 transform rounded-full bg-white text-black shadow ring-0 transition duration-200 ease-in-out"),u(l,"type","button"),u(l,"class",E=n[7]()+" relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"),u(l,"role","switch"),u(l,"aria-checked","false"),u(t,"class","absolute right-2 top-2"),u(B,"class","flex-1 bg-inherit py-2 px-4 cursor-pointer hover:text-bp-blue duration-500"),u(M,"class","flex flex-col px-4 pb-2 bg-white dark:bg-black block text-black dark:text-white"),u(S,"class","border border-bp-gray-middle text-black dark:text-white bg-white dark:bg-black"),S.open=qo,u(e,"class","relative")},m(Q,P){D(Q,e,P),m(e,t),m(t,l),m(l,i),m(l,r),m(l,o),m(o,a),m(a,c),m(c,f),m(o,h),m(o,g),m(g,v),m(v,y),m(e,A),m(e,S),m(S,B),m(B,F),m(S,V),m(S,M),ee&&ee.m(M,null),m(M,U),H&&H.m(M,null),W||(O=de(l,"click",function(){gt(n[3])&&n[3].apply(this,arguments)}),W=!0)},p(Q,[P]){n=Q,P&32&&d!==(d=n[5]+" absolute inset-0 flex h-full w-full items-center justify-center transition-opacity")&&u(a,"class",d),P&16&&I!==(I=n[4]+" absolute inset-0 flex h-full w-full items-center justify-center transition-opacity")&&u(g,"class",I),P&64&&C!==(C=n[6]+" pointer-events-none relative inline-block h-5 w-5 transform rounded-full bg-white text-black shadow ring-0 transition duration-200 ease-in-out")&&u(o,"class",C),P&128&&E!==(E=n[7]()+" relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2")&&u(l,"class",E),P&1&&J(F,n[0]),n[1]?ee?ee.p(n,P):(ee=Mi(n),ee.c(),ee.m(M,U)):ee&&(ee.d(1),ee=null),n[2].length?H?H.p(n,P):(H=Bi(n),H.c(),H.m(M,null)):H&&(H.d(1),H=null)},i:q,o:q,d(Q){Q&&_(e),ee&&ee.d(),H&&H.d(),W=!1,O()}}}const qo=!1;function Go(n,e,t){let l,i,s,r,{is_checked:o=!1}=e,{is_fixed:a=!1}=e,{text:c=null}=e,{desc:f=null}=e,{cookies:d=[]}=e,{toggle:h=()=>{}}=e;return n.$$set=g=>{"is_checked"in g&&t(8,o=g.is_checked),"is_fixed"in g&&t(9,a=g.is_fixed),"text"in g&&t(0,c=g.text),"desc"in g&&t(1,f=g.desc),"cookies"in g&&t(2,d=g.cookies),"toggle"in g&&t(3,h=g.toggle)},n.$$.update=()=>{n.$$.dirty&768&&t(7,l=()=>a?"bg-bp-gray-dark":o?"bg-green-500":"bg-red-500"),n.$$.dirty&256&&t(6,i=o?"translate-x-5":"translate-x-0"),n.$$.dirty&256&&t(5,s=o?"o
6pacity-0 ease-out duration-100":"opacity-100 ease-in duration-200"),n.$$.dirty&256&&t(4,r=o?"opacity-100 ease-in duration-200":"opacity-0 ease-out duration-100")},[c,f,d,h,r,s,i,l,o,a]}class jl extends ye{constructor(e){super(),we(this,e,Go,Ko,ve,{is_checked:8,is_fixed:9,text:0,desc:1,cookies:2,toggle:3})}}function Oi(n){let e,t,l,i,s,r,o,a=`<img class="float-left mr-2 bg-transparent max-h-[100px]" src="/static/img/0900000000000.svg" alt="Logo der Bayerischen Polizei" role="presentation" tabindex="-1"/> <p class="text-sm md:text-base">Diese Kontaktseite speichert notwendige Cookies in Ihrem Browser. Sie haben ebenfalls die Möglichkeit 7 funktionale Cookies in Ihrem Browser zu speichern. Hierfür müssen Sie uns Ihre Erlaubnis erteilen. Sie 8 können selbstverständlich unseren Auftritt auch ohne Zustimmung vollumfänglich nutzen. In dem Fall ist 9 durch Sie nichts zu veranlassen.</p>`,c,f,d,h,g,v,y,I,C,E,A,S,B="Abbrechen",F,V,M="Alle ablehnen",U,W,O="Alle annehmen",ee,H,Q="Auswahl speichern",P,K,ue,$;const oe=[n[5]];let me={};for(let X=0;X<oe.length;X+=1)me=Ee(me,oe[X]);d=new jl({props:me});const x=[n[6],{is_checked:n[1]}];let be={};for(let X=0;X<x.length;X+=1)be=Ee(be,x[X]);g=new jl({props:be});const _e=[n[7],{is_checked:n[2]}];let Ne={};for(let X=0;X<_e.length;X+=1)Ne=Ee(Ne,_e[X]);y=new jl({props:Ne});let Ie=rt.use_twitter,Me=rt.use_youtube;return{c(){e=p("div"),t=p("div"),l=T(),i=p("div"),s=p("div"),r=p("div"),o=p("div"),o.innerHTML=a,c=T(),f=p("div"),se(d.$$.fragment),h=T(),se(g.$$.fragment),v=T(),se(y.$$.fragment),I=T(),C=T(),E=T(),A=p("div"),S=p("button"),S.textContent=B,F=T(),V=p("button"),V.textContent=M,U=T(),W=p("button"),W.textContent=O,ee=T(),H=p("button"),H.textContent=Q,this.h()},l(X){e=b(X,"DIV",{class:!0,"aria-labelledby":!0,role:!0,"aria-modal":!0});var ge=k(e);t=b(ge,"DIV",{class:!0}),k(t).forEach(_),l=L(ge),i=b(ge,"DIV",{class:!0});var Ae=k(i);s=b(Ae,"DIV",{class:!0});var Le=k(s);r=b(Le,"DIV",{class:!0});var De=k(r);o=b(De,"DIV",{class:!0,"data-svelte-h":!0}),ze(o)!=="svelte-173tsq0"&&(o.innerHTML=a),c=L(De),f=b(De,"DIV",{class:!0});var ae=k(f);he(d.$$.fragment,ae),h=L(ae),he(g.$$.fragment,ae),v=L(ae),he(y.$$.fragment,ae),I=L(ae),C=L(ae),ae.forEach(_),E=L(De),A=b(De,"DIV",{class:!0});var Ce=k(A);S=b(Ce,"BUTTON",{type:!0,class:!0,"data-svelte-h":!0}),ze(S)!=="svelte-1e3or4j"&&(S.textContent=B),F=L(Ce),V=b(Ce,"BUTTON",{type:!0,class:!0,"data-svelte-h":!0}),ze(V)!=="svelte-1hnp0fn"&&(V.textContent=M),U=L(Ce),W=b(Ce,"BUTTON",{type:!0,class:!0,"data-svelte-h":!0}),ze(W)!=="svelte-1cl5ya9"&&(W.textContent=O),ee=L(Ce),H=b(Ce,"BUTTON",{type:!0,class:!0,"data-svelte-h":!0}),ze(H)!=="svelte-689sc5"&&(H.textContent=Q),Ce.forEach(_),De.forEach(_),Le.forEach(_),Ae.forEach(_),ge.forEach(_),this.h()},h(){u(t,"class","fixed inset-0 bg-bp-gray-middle bg-opacity-50 transition-opacity text-black"),u(o,"class","p-4 border-b border-bp-gray-middle"),u(f,"class","px-4 grid grid-cols-1 gap-4"),u(S,"type","button"),u(S,"class","p-2 bg-bp-blue-dark dark:bg-white text-white dark:text-black text-sm md:text-base"),u(V,"type","button"),u(V,"class","p-2 bg-red-500 dark:bg-white text-white dark:text-black text-sm md:text-base"),u(W,"type","button"),u(W,"class","p-2 bg-green-500 dark:bg-white text-white dark:text-black text-sm md:text-base"),u(H,"type","button"),u(H,"class","p-2 bg-bp-blue-dark dark:bg-white text-white dark:text-black text-sm md:text-base"),u(A,"class","border-t border-bp-gray-middle p-4 flex justify-end gap-2"),u(r,"class","grid grid-cols-1 gap-8 transform overflow-hidden bg-white dark:bg-black text-black dark:text-white text-left drop-shadow-2xl transition-all sm:w-full sm:max-w-screen-bp"),u(s,"class","flex min-h-full items-start justify-center p-4 text-center pt-40"),u(i,"class","fixed inset-0 z-10 overflow-y-auto"),u(e,"class","relative z-50"),u(e,"aria-labelledby","modal-title"),u(e,"role","dialog"),u(e,"aria-modal","true")},m(X,ge){D(X,e,ge),m(e,t),m(e,l),m(e,i),m(i,s),m(s,r),m(r,o),m(r,c),m(r,f),ie(d,f,null),m(f,h),ie(g,f,null),m(f,v),ie(y,f,null),m(f,I),m(f,C),m(r,E),m(r,A),m(A,S),m(A,F),m(A,V),m(A,U),m(A,W),m(A,ee),m(A,H),K=!0,ue||($=[de(S,"click",n[13]),de(V,"click",n[14]),de(W,"click",n[15]),de(H,"click",n[16])],ue=!0)},p(X,ge){const Ae=ge&32?Te(oe,[Ve(X[5])]):{};d.$set(Ae);const Le=ge&66?Te(x,[ge&64&&Ve(X[6]),ge&2&&{is_checked:X[1]}]):{};
9g.$set(Le);const De=ge&132?Te(_e,[ge&128&&Ve(X[7]),ge&4&&{is_checked:X[2]}]):{};y.$set(De)},i(X){K||(z(d.$$.fragment,X),z(g.$$.fragment,X),z(y.$$.fragment,X),z(Ie),z(Me),X&&mt(()=>{K&&(P||(P=Pt(e,El,{delay:250,duration:300},!0)),P.run(1))}),K=!0)},o(X){N(d.$$.fragment,X),N(g.$$.fragment,X),N(y.$$.fragment,X),N(Ie),N(Me),X&&(P||(P=Pt(e,El,{delay:250,duration:300},!1)),P.run(0)),K=!1},d(X){X&&_(e),ne(d),ne(g),ne(y),X&&P&&P.end(),ue=!1,Ue($)}}}function Wo(n){let e,t,l=n[0]&&Oi(n);return{c(){l&&l.c(),e=Z()},l(i){l&&l.l(i),e=Z()},m(i,s){l&&l.m(i,s),D(i,e,s),t=!0},p(i,[s]){i[0]?l?(l.p(i,s),s&1&&z(l,1)):(l=Oi(i),l.c(),z(l,1),l.m(e.parentNode,e)):l&&(ce(),N(l,1,1,()=>{l=null}),fe())},i(i){t||(z(l),t=!0)},o(i){N(l),t=!1},d(i){i&&_(e),l&&l.d(i)}}}function Zo(n,e,t){let{showBanner:l=!1}=e;const i={is_checked:!0,is_fixed:!0,text:"Notwendige Cookies",desc:"Notwendige Cookies helfen dabei, eine Webseite nutzbar zu machen, indem sie Grundfunktionen wie Seitennavigation und Zugriff auf sichere Bereiche der Webseite ermöglichen. Die Webseite kann ohne diese Cookies nicht richtig funktionieren.",cookies:[{name:"showBanner",desc:"Speichert ab, dass das Cookie-Banner bereits gezeigt wurde"},{name:"allowFunctionalCookies",desc:"Speichert ab, ob funktionale Cookies gespeichert werden dürfen"},{name:"allowTrackingCookies",desc:"Speichert ab, ob funktionale Cookies gespeichert werden dürfen"}]};let s=!1;yl.subscribe(B=>{t(1,s=B)});const r={is_fixed:!1,text:"Funktionale Cookies",desc:"Funktionale Cookies helfen dabei, eine Webseite für den Benutzer besser nutzbar zu machen. Es können Einstellungen gespeichert werden, damit der Benutzer diese dann nicht immer wieder vornehmen muss.",cookies:[{name:"darkMode",desc:"Speichert die gewählte Kontrasteinstellung"},{name:"fontMode",desc:"Speichert die gewählte SchriftgröÃe"}],toggle:()=>{t(1,s=!s)},delAllCookies(){this.cookies.map(B=>{Yt(B.name)})}};let o=!1;gl.subscribe(B=>{t(2,o=B)});const a={is_fixed:!1,text:"Analyse Cookies",desc:"Ich bin damit einverstanden, dass eine Auswertung meiner Zugriffe bzw. die Analyse meines Surfverhaltens durchgeführt wird. Dies erfolgt mit dem Analyse-Tool Matomo, das so eingestellt ist, dass die Informationen über mein Nutzungsverhalten nur anonymisiert gespeichert werden. Eine Zuordnung zur Nutzerin oder zum Nutzer ist nicht mehr möglich. Die Cookies können jederzeit deaktiviert werden. Generell gilt, dass wir die durch Cookies erfassten Daten nicht mit Daten aus anderen Datenquellen zusammenführen oder diese an Dritte weitergeben.",cookies:[{name:"LB_piwik",desc:"Piwik/Matomo (Loadbalancer) von www.piwik.bayern.de. Gültigkeitsdauer bis zum Ende der Browsersitzung."},{name:"_pk_id.* z.B. _pk_id.253.1d15",desc:`Piwik/Matomo von z.B. ${window.location.hostname}. Gültigkeitsdauer von zwei Stunden.`},{name:"_pk_ses.* z.B. _pk_ses.253.1d15",desc:`Piwik/Matomo von z.B. ${window.location.hostname}. Gültigkeitsdauer bis zum Ende der Browsersitzung.`}],toggle:()=>{t(2,o=!o)},delAllCookies(){this.cookies.map(B=>{const F=B.name.indexOf(" ");if(F>=0){const V=B.name.substring(0,F-1);Ol(V)}else Yt(B.name)})},loadScript(){const B=rt.matomo_file;let F=!1,V=document.querySelector('script[src="'+B+'"]');if(!V)V=document.createElement("script"),V.type="text/javascript",V.async=!0,V.src=B,V.charset="utf-8",F=!0;else if(V.hasAttribute("data-loaded"))return;V.addEventListener("load",function(){V.setAttribute("data-loaded",!0)}),F&&document.head.appendChild(V)}};o&&a.loadScript();let c=!1;cr.subscribe(B=>{t(3,c=B)});const f={is_fixed:!1,text:"Twitter Cookies",desc:"Social Media Cookies, in diesem Fall Twitter Cookies, sorgen dafür, dass die Inhalte angezeigt werden dürfen. Es können Einstellungen gespeichert werden, damit der Benutzer diese dann nicht immer wieder vornehmen muss.",cookies:[],toggle:()=>{t(3,c=!c)},delAllCookies(){this.cookies.map(B=>{const F=B.name.indexOf(" ");if(F>=0){const V=B.name.substring(0,F-1);Ol(V)}else Yt(B.name)})},loadScript(){const B=rt.twitter_url;let F=!1,V=document.querySelector('script[src="'+B+'"]');if(!V)V=document.createElement("script"),V.type="text/javascript",V.async=!0,V.src=B,V.charset="utf-8",F=!0;else if(V.hasAttribute("data-loaded"))return;V.addEventListener("load",function(){V.setAttribute("data-loaded",!0)}),F&&document.head.appendChild(V)}};c&&f.loadScript();let d=!1;Kl.subscribe(B=>{t(4,d=B)});const h={is_fixed:!1,text:"Youtube Cookies",desc:"Social Media Cookies, in diesem Fall YouTube Cookies, sorgen dafür, dass die Videos angezeigt und abgespielt werden dürfen. Trotz der Verwendung von youtube-nocookie, können einzelne Informationen, wie beispielsweise die zur Verfügung stehende Bandbreite, in einem Cookie gespeichert werden. Es können Einstellungen gespeichert werden, damit der Benutzer diese dann nicht immer wieder vornehmen muss.",cookies:[],toggle:()=>{t(4,d=!d)},delAllCookies(){this.cookies.map(B=>{const F=B.name.indexOf(" ");if(F>=0){const V=B.name.substring(0,F-1);Ol(V)}else Yt(B.name)})},loadScript(){console.log("loading Youtube Scripts")}};d&&h.loadScript();const g=()=>{t(1,s=t(4,d=t(2,o=t(3,c=t(4,d=!0))))),I(),Qe("darkMode",!1),Qe("fontMode",0),a.loadScript(),t(0,l=!1)},v=()=>{t(1,s=t(4,d=t(2,o=t(3,c=t(4,d=!1))))),I(),r.delAllCookies(),a.delAllCookies(),window.location.href=window.location.href,t(0,l=!1)},y=()=>{let B=!1;gl.subscribe(F=>{o!==F&&o===!1&&(B=!0)}),I(),s||r.delAllCookies(),o?a.loadScript():a.delAllCookies(),B&&(window.location.href=window.location.href),t(0,l=!1)},I=()=>{yl.set(s),Qe("allowFunctionalCookies",s),gl.set(o),Qe("allowTrackingCookies",o)},C=()=>{t(0,l=!1)},E=()=>{v()},A=()=>{g()},S=()=>{y()};return n.$$set=B=>{"showBanner"in B&&t(0,l=B.showBanner)},[l,s,o,c,d,i,r,a,f,h,g,v,y,C,E,A,S]}class Yo extends ye{constructor(e){super(),we(this,e,Zo,Wo,ve,{showBanner:0})}}function ji(n,e,t){const l=n.slice();return l[11]=e[t],l}function Ri(n){let e,t,l;const i=[n[11].data];var s=n[11].type;function r(o,a){let c={};for(let f=0;f<i.length;f+=1)c=Ee(c,i[f]);return a!==void 0&&a&2&&(c=Ee(c,Te(i,[Ve(o[11].data)]))),{props:c}}return s&&(e=Ye(s,r(n))),{c(){e&&se(e.$$.fragment),t=Z()}
9,l(o){e&&he(e.$$.fragment,o),t=Z()},m(o,a){e&&ie(e,o,a),D(o,t,a),l=!0},p(o,a){if(s!==(s=o[11].type)){if(e){ce();const c=e;N(c.$$.fragment,1,0,()=>{ne(c,1)}),fe()}s?(e=Ye(s,r(o,a)),se(e.$$.fragment),z(e.$$.fragment,1),ie(e,t.parentNode,t)):e=null}else if(s){const c=a&2?Te(i,[Ve(o[11].data)]):{};e.$set(c)}},i(o){l||(e&&z(e.$$.fragment,o),l=!0)},o(o){e&&N(e.$$.fragment,o),l=!1},d(o){o&&_(t),e&&ne(e,o)}}}function Jo(n){let e,t;return e=new Yo({props:{showBanner:n[0]}}),{c(){se(e.$$.fragment)},l(l){he(e.$$.fragment,l)},m(l,i){ie(e,l,i),t=!0},p(l,i){const s={};i&1&&(s.showBanner=l[0]),e.$set(s)},i(l){t||(z(e.$$.fragment,l),t=!0)},o(l){N(e.$$.fragment,l),t=!1},d(l){ne(e,l)}}}function Xo(n){let e,t='<a href="#btnHome" rel="noopener noreferrer" class="skip-link py-1 px-2 rounded-b-lg bg-bp-blue dark:bg-white focus:no-underline focus:outline-none">Sprung zur Navigation</a> <a href="#btnBurger" rel="noopener noreferrer" class="skip-link py-1 px-2 rounded-b-lg bg-bp-blue dark:bg-white focus:no-underline focus:outline-none">Sprung zur Burger Menü</a> <a href="#btnFaq" rel="noopener noreferrer" class="skip-link py-1 px-2 rounded-b-lg bg-bp-blue dark:bg-white focus:no-underline focus:outline-none">Sprung zur FAQ Seite</a> <a href="#readspeaker_lesen" rel="noopener noreferrer" class="skip-link py-1 px-2 rounded-b-lg bg-bp-blue dark:bg-white focus:no-underline focus:outline-none">Sprung zum Inhalt</a> <a href="#app-footer" rel="noopener noreferrer" class="skip-link py-1 px-2 rounded-b-lg bg-bp-blue dark:bg-white focus:no-underline focus:outline-none">Sprung zur FuÃzeile</a>',l,i,s,r,o,a,c,f,d,h=le(n[1]),g=[];for(let I=0;I<h.length;I+=1)g[I]=Ri(ji(n,h,I));const v=I=>N(g[I],1,1,()=>{g[I]=null});let y=!te.is_preview&&Jo(n);return{c(){e=p("div"),e.innerHTML=t,l=T(),i=p("div"),s=p("div"),r=p("div");for(let I=0;I<g.length;I+=1)g[I].c();o=T(),a=p("div"),c=T(),y&&y.c(),f=Z(),this.h()},l(I){e=b(I,"DIV",{class:!0,"data-svelte-h":!0}),ze(e)!=="svelte-qxmc3s"&&(e.innerHTML=t),l=L(I),i=b(I,"DIV",{class:!0});var C=k(i);s=b(C,"DIV",{class:!0});var E=k(s);r=b(E,"DIV",{class:!0,role:!0});var A=k(r);for(let S=0;S<g.length;S+=1)g[S].l(A);A.forEach(_),o=L(E),a=b(E,"DIV",{id:!0,class:!0}),k(a).forEach(_),E.forEach(_),C.forEach(_),c=L(I),y&&y.l(I),f=Z(),this.h()},h(){u(e,"class","skip-links flex justify-center text-white dark:text-black"),u(r,"class","order-0 inline-flex flex-none items-center bg-white dark:bg-black text-black dark:text-white"),u(r,"role","group"),u(a,"id","rsplayer"),u(a,"class","order-last mb-2 sm:order-1 sm:mb-0 rs_preserve rs_skip rs_addtools rs_splitbutton rs_exp svelte-17332n5"),u(s,"class","flex flex-wrap md:gap-8 items-center"),u(i,"class","max-w-screen-bp mx-auto h-[50px]")},m(I,C){D(I,e,C),D(I,l,C),D(I,i,C),m(i,s),m(s,r);for(let E=0;E<g.length;E+=1)g[E]&&g[E].m(r,null);m(s,o),m(s,a),D(I,c,C),y&&y.m(I,C),D(I,f,C),d=!0},p(I,[C]){if(C&2){h=le(I[1]);let E;for(E=0;E<h.length;E+=1){const A=ji(I,h,E);g[E]?(g[E].p(A,C),z(g[E],1)):(g[E]=Ri(A),g[E].c(),z(g[E],1),g[E].m(r,null))}for(ce(),E=h.length;E<g.length;E+=1)v(E);fe()}te.is_preview||y.p(I,C)},i(I){if(!d){for(let C=0;C<h.length;C+=1)z(g[C]);z(y),d=!0}},o(I){g=g.filter(Boolean);for(let C=0;C<g.length;C+=1)N(g[C]);N(y),d=!1},d(I){I&&(_(e),_(l),_(i),_(c),_(f)),Fe(g,I),y&&y.d(I)}}}function Qo(n,e,t){Pe&&Pe.links&&Pe.links;let l;yl.subscribe(h=>{l=h});let i;fr.subscribe(h=>{t(0,i=h)});let s;ql.subscribe(h=>{s=h});let r=0;Gl.subscribe(h=>{r=h});const o=[{group:"left",type:Ft,data:{id:"btnHome",title:"zur Startseite wechseln",icon:"fa-solid fa-home",href:te.is_preview?null:"/index.html",disabled:te.is_preview,action:()=>{te.is_preview||(window.location="/index.html")}}},{group:"left",type:Ft,data:{id:"btnCookie",title:"Cookie Einstellungen anpassen",icon:"fa-solid fa-cookie-bite",disabled:te.is_preview,action:()=>{t(0,i=!i)}}},{group:"left",type:Ft,data:{id:"btnDarkMode",title:"Kontrast anpassen",icon:"fa-solid fa-circle-half-stroke",action:()=>{d(!s)}}},{group:"left",type:Ft,data:{id:"btnFontMode",title:"SchriftgröÃe anpassen",icon:"fa-solid fa-magnifying-glass-plus",action:()=>{r++,f()}}},{group:"left",type:Ft,data:{id:"btnReadPage",title:"Seite vorlesen lassen",icon:"fa-solid fa-volume-high",disabled:te.is_preview,action:()=>{const g="//app-eu.readspeaker.com/cgi-bin/rsent?customerid=11160&lang=de_de&readid=readspeaker_lesen&url="+encodeURIComponent(window.location.origin+window.location.pathname);readpage(g,"rsplayer")}}}],a=o.filter(h=>h.group==="left");o.filter(h=>h.group==="right");function c(){i&&Qe("showBanner",!1)}function f(h=r){const g=["text-base","text-xl","text-2xl"];h>=g.length&&(h=0),Gl.set(h),l&&Qe("fontMode",h),document.documentElement.classList.remove(...g),document.documentElement.classList.add(g[h])}function d(h=s){const g=document.getElementById("btnDarkMode");h?g.classList.add("fa-flip-horizontal"):g.classList.remove("fa-flip-horizontal"),h!==s&&(ql.set(h),l&&Qe("darkMode",h)),h?(document.documentElement.classList.add("dark"),g.classList.add("fa-flip-horizontal")):(document.documentElement.classList.remove("dark"),g.classList.remove("fa-flip-horizontal"))}return Eo(()=>{d(),f(),c()}),[i,a]}class xo extends ye{constructor(e){super(),we(this,e,Qo,Xo,ve,{})}}function Ui(n){let e,t;return{c(){e=p("a"),t=j(" "),this.h()},l(l){e=b(l,"A",{id:!0,tabindex:!0});var i=k(e);
9t=R(i,"Â "),i.forEach(_),this.h()},h(){u(e,"id",n[0]),u(e,"tabindex","-1")},m(l,i){D(l,e,i),m(e,t)},p(l,i){i&1&&u(e,"id",l[0])},d(l){l&&_(e)}}}function Hi(n){let e,t='<a href="#auto-toc-anker" class="hover:text-bp-blue" title="zum Inhaltsverzeichnis"><i class="fa-solid fa-chevron-up"></i></a>';return{c(){e=p("span"),e.innerHTML=t,this.h()},l(l){e=b(l,"SPAN",{class:!0,"data-svelte-h":!0}),ze(e)!=="svelte-18nx36w"&&(e.innerHTML=t),this.h()},h(){u(e,"class","p-2")},m(l,i){D(l,e,i)},d(l){l&&_(e)}}}function $o(n){let e,t,l,i,s=n[3]()+"",r,o,a=n[0]&&te.has_autotoc&&Ui(n),c=n[0]&&te.has_autotoc&&!n[1]&&Hi();return{c(){e=p("div"),a&&a.c(),t=T(),l=p("div"),i=new je(!1),o=T(),c&&c.c(),this.h()},l(f){e=b(f,"DIV",{class:!0});var d=k(e);a&&a.l(d),t=L(d),l=b(d,"DIV",{class:!0});var h=k(l);i=We(h,!1),h.forEach(_),o=L(d),c&&c.l(d),d.forEach(_),this.h()},h(){i.a=null,u(l,"class",r="flex-1 "+(n[2]?"border-b border-bp-gray-middle":"")),u(e,"class","flex items-center")},m(f,d){D(f,e,d),a&&a.m(e,null),m(e,t),m(e,l),i.m(s,l),m(e,o),c&&c.m(e,null)},p(f,[d]){f[0]&&te.has_autotoc?a?a.p(f,d):(a=Ui(f),a.c(),a.m(e,t)):a&&(a.d(1),a=null),d&4&&r!==(r="flex-1 "+(f[2]?"border-b border-bp-gray-middle":""))&&u(l,"class",r),f[0]&&te.has_autotoc&&!f[1]?c||(c=Hi(),c.c(),c.m(e,null)):c&&(c.d(1),c=null)},i:q,o:q,d(f){f&&_(e),a&&a.d(),c&&c.d()}}}function ea(n,e,t){let l,i,s,r,{title:o="Ãberschrift fehlt"}=e,{badge:a=null}=e,{size:c="h2"}=e,{href:f=null}=e,{target:d="_self"}=e,{orientation:h="text-left"}=e,{anchor:g=null}=e,{bpblue:v=!1}=e,{bpborder:y=!1}=e,{is_toc:I=!1}=e,{icon:C=""}=e,{css:E=""}=e;const A=()=>{let S=`<${c} class="${r()}">`;return C&&C.length&&(S+=`<i class="${C}"></i>`),f&&f.length?S+=`<a href="${f}" target="${d}" class="hover:underline">${o}</a>`:S+=`<span>${o}</span>`,a&&a.length&&(S+=`<span class="ml-2 text-white text-xs align-top bg-bp-blue dark:bg-black p-2 rounded-full">${a}</span>`),S+=`</${c}>`,S};return n.$$set=S=>{"title"in S&&t(4,o=S.title),"badge"in S&&t(5,a=S.badge),"size"in S&&t(6,c=S.size),"href"in S&&t(7,f=S.href),"target"in S&&t(8,d=S.target),"orientation"in S&&t(9,h=S.orientation),"anchor"in S&&t(0,g=S.anchor),"bpblue"in S&&t(10,v=S.bpblue),"bpborder"in S&&t(11,y=S.bpborder),"is_toc"in S&&t(1,I=S.is_toc),"icon"in S&&t(12,C=S.icon),"css"in S&&t(13,E=S.css)},n.$$.update=()=>{n.$$.dirty&2112&&t(2,l=y||c==="h1"),n.$$.dirty&1088&&t(14,i=v||c==="h1"),n.$$.dirty&512&&t(15,s=h),n.$$.dirty&57344&&(r=()=>{let S=["m-0","w-full","dark:text-white","space-x-2"];return S.push(s),i&&S.push("text-bp-blue"),E&&S.push(E),S.join(" ")})},[g,I,l,A,o,a,c,f,d,h,v,y,C,E,i,s]}let ta=class extends ye{constructor(e){super(),we(this,e,ea,$o,ve,{title:4,badge:5,size:6,href:7,target:8,orientation:9,anchor:0,bpblue:10,bpborder:11,is_toc:1,icon:12,css:13})}};function Ki(n,e,t){const l=n.slice();return l[4]=e[t],l}function la(n,e,t){const l=n.slice();return l[7]=e[t],l}function ia(n,e,t){const l=n.slice();return l[10]=e[t],l}function na(n){let e,t,l,i=le(Ze.children),s=[];for(let a=0;a<i.length;a+=1)s[a]=oa(la(n,i,a));let r=le(n[0]),o=[];for(let a=0;a<r.length;a+=1)o[a]=qi(Ki(n,r,a));return{c(){e=p("ul");for(let a=0;a<s.length;a+=1)s[a].c();t=T();for(let a=0;a<o.length;a+=1)o[a].c();this.h()},l(a){e=b(a,"UL",{class:!0});var c=k(e);for(let f=0;f<s.length;f+=1)s[f].l(c);t=L(c);for(let f=0;f<o.length;f+=1)o[f].l(c);c.forEach(_),this.h()},h(){u(e,"class","list-inside")},m(a,c){D(a,e,c);for(let f=0;f<s.length;f+=1)s[f]&&s[f].m(e,null);m(e,t);for(let f=0;f<o.length;f+=1)o[f]&&o[f].m(e,null);l=!0},p(a,c){if(c&3){r=le(a[0]);let f;for(f=0;f<r.length;f+=1){const d=Ki(a,r,f);o[f]?o[f].p(d,c):(o[f]=qi(d),o[f].c(),o[f].m(e,null))}for(;f<o.length;f+=1)o[f].d(1);o.length=r.length}},i(a){if(!l){for(let c=0;c<i.length;c+=1)z(s[c]);l=!0}},o(a){s=s.filter(Boolean);for(let c=0;c<s.length;c+=1)N(s[c]);l=!1},d(a){a&&_(e),Fe(s,a),Fe(o,a)}}}function sa(n){let e,t,l,i,s;t=new ta({props:{title:n[7].title,size:"h4"}});let r=le(n[7].children),o=[];for(let a=0;a<r.length;a+=1)o[a]=ra(ia(n,r,a));return{c(){e=p("li"),se(t.$$.fragment),l=T(),i=p("ul");for(let a=0;a<o.length;a+=1)o[a].c();this.h()},l(a){e=b(a,"LI",{class:!0});var c=k(e);he(t.$$.fragment,c),l=L(c),i=b(c,"UL",{class:!0});var f=k(i);for(let d=0;d<o.length;d+=1)o[d].l(f);
9f.forEach(_),c.forEach(_),this.h()},h(){u(i,"class","list-disc list-inside"),u(e,"class","my-4")},m(a,c){D(a,e,c),ie(t,e,null),m(e,l),m(e,i);for(let f=0;f<o.length;f+=1)o[f]&&o[f].m(i,null);s=!0},i(a){s||(z(t.$$.fragment,a),s=!0)},o(a){N(t.$$.fragment,a),s=!1},d(a){a&&_(e),ne(t),Fe(o,a)}}}function ra(n){let e,t,l,i=n[10].title+"",s,r,o,a,c,f=n[10].document_source+"",d;return{c(){e=p("li"),t=p("a"),l=p("span"),s=j(i),r=j("Â "),o=T(),a=p("span"),c=j("Â "),d=j(f),this.h()},l(h){e=b(h,"LI",{class:!0});var g=k(e);t=b(g,"A",{class:!0,rel:!0,href:!0,target:!0});var v=k(t);l=b(v,"SPAN",{class:!0});var y=k(l);s=R(y,i),r=R(y,"Â "),y.forEach(_),o=L(v),a=b(v,"SPAN",{class:!0});var I=k(a);c=R(I,"Â "),d=R(I,f),I.forEach(_),v.forEach(_),g.forEach(_),this.h()},h(){u(l,"class",""),u(a,"class","hidden md:inline text-xs text-bp-gray-dark"),u(t,"class","hover:text-bp-blue duration-500 inline"),u(t,"rel","noopener noreferrer"),u(t,"href",n[10].href),u(t,"target",n[10].target),u(e,"class","my-2")},m(h,g){D(h,e,g),m(e,t),m(t,l),m(l,s),m(l,r),m(t,o),m(t,a),m(a,c),m(a,d)},p:q,d(h){h&&_(e)}}}function oa(n){let e,t,l=n[7].children&&n[7].children.length&&sa(n);return{c(){l&&l.c(),e=Z()},l(i){l&&l.l(i),e=Z()},m(i,s){l&&l.m(i,s),D(i,e,s),t=!0},p:q,i(i){t||(z(l),t=!0)},o(i){N(l),t=!1},d(i){i&&_(e),l&&l.d(i)}}}function aa(n){let e,t,l=n[4].title+"",i,s;return{c(){e=p("li"),t=p("a"),i=j(l),s=T(),this.h()},l(r){e=b(r,"LI",{class:!0});var o=k(e);t=b(o,"A",{href:!0,class:!0,rel:!0,target:!0});var a=k(t);i=R(a,l),a.forEach(_),s=L(o),o.forEach(_),this.h()},h(){u(t,"href",n[1](n[4])),u(t,"class","text-xl hover:text-bp-blue duration-500 inline"),u(t,"rel","noopener noreferrer"),u(t,"target",n[4].href.startsWith("http")?"_blank":"_self"),u(e,"class","my-4")},m(r,o){D(r,e,o),m(e,t),m(t,i),m(e,s)},p:q,d(r){r&&_(e)}}}function qi(n){let e,t=n[4].href&&aa(n);return{c(){t&&t.c(),e=Z()},l(l){t&&t.l(l),e=Z()},m(l,i){t&&t.m(l,i),D(l,e,i)},p(l,i){l[4].href&&t.p(l,i)},d(l){l&&_(e),t&&t.d(l)}}}function ca(n){let e,t,l=Ze&&Ze.children&&na(n);return{c(){l&&l.c(),e=Z()},l(i){l&&l.l(i),e=Z()},m(i,s){l&&l.m(i,s),D(i,e,s),t=!0},p(i,[s]){Ze&&Ze.children&&l.p(i,s)},i(i){t||(z(l),t=!0)},o(i){N(l),t=!1},d(i){i&&_(e),l&&l.d(i)}}}function fa(n){Pe&&Pe.social&&Pe.social;const e=Pe&&Pe.links?Pe.links:null;return[[{title:"Impressum",href:e&&e.imprint?e.imprint:null},{title:"Datenschutz",href:e&&e.dsgvo?e.dsgvo:null}],i=>te.is_preview?null:i.href]}class ua extends ye{constructor(e){super(),we(this,e,fa,ca,ve,{})}}const{window:Wl}=$s;function Gi(n,e,t){const l=n.slice();return l[16]=e[t],l}function Wi(n){let e,t,l;const i=[n[16].data];var s=n[16].type;function r(o,a){let c={};for(let f=0;f<i.length;f+=1)c=Ee(c,i[f]);return a!==void 0&&a&128&&(c=Ee(c,Te(i,[Ve(o[16].data)]))),{props:c}}return s&&(e=Ye(s,r(n))),{c(){e&&se(e.$$.fragment),t=Z()},l(o){e&&he(e.$$.fragment,o),t=Z()},m(o,a){e&&ie(e,o,a),D(o,t,a),l=!0},p(o,a){if(s!==(s=o[16].type)){if(e){ce();const c=e;N(c.$$.fragment,1,0,()=>{ne(c,1)}),fe()}s?(e=Ye(s,r(o,a)),se(e.$$.fragment),z(e.$$.fragment,1),ie(e,t.parentNode,t)):e=null}else if(s){const c=a&128?Te(i,[Ve(o[16].data)]):{};e.$set(c)}},i(o){l||(e&&z(e.$$.fragment,o),l=!0)},o(o){e&&N(e.$$.fragment,o),l=!1},d(o){o&&_(t),e&&ne(e,o)}}}function Zi(n){let e,t,l,i;return t=new ua({}),{c(){e=p("div"),se(t.$$.fragment),this.h()},l(s){e=b(s,"DIV",{class:!0,style:!0});var r=k(e);he(t.$$.fragment,r),r.forEach(_),this.h()},h(){u(e,"class","bg-bp-gray-middle dark:bg-black scroll-smooth max-w-screen-bp max-h-[400px] md:max-h-[400px] lg:max-h-[600px] overflow-auto mx-auto shadow-2xl shadow-bp-gray-dark p-4"),lt(e,"position","absolute"),lt(e,"top",n[3]+"px"),lt(e,"left",n[4]+"px"),lt(e,"width",n[5])},m(s,r){D(s,e,r),ie(t,e,null),i=!0},p(s,r){n=s,(!i||r&8)&<(e,"top",n[3]+"px"),(!i||r&16)&<(e,"left",n[4]+"px"),(!i||r&32)&<(e,"width",n[5])},i(s){i||(z(t.$$.fragment,s),s&&mt(()=>{i&&(l||(l=Pt(e,Fi,{y:{mTop:n[3]},duration:500},!0)),l.run(1))}),i=!0)},o(s){N(t.$$.fragment,s),s&&(l||(l=Pt(e,Fi,{y:{mTop:n[3]},duration:500},!1)),l.run(0)),i=!1},d(s){s&&_(e),ne(t),s&&l&&l.end()}}}function da(n){let e=!1,t=()=>{e=!1},l,i,s,r,o,a,c,f,d,h,g;mt(n[9]);let v=le(n[7]),y=[];for(let E=0;E<v.length;E+=1)y[E]=Wi(Gi(n,v,E));const I=E=>N(y[E],1,1,()=>{y[E]=null});let C=n[1]&&!n[2]&&Zi(n);return{c(){i=p("div"),s=p("div"),r=p("div");for(let E=0;E<y.length;E+=1)y[E].c();o=T(),C&&C.c(),a=T(),c=p("div"),f=p("div"),this.h()},l(E){i=b(E,"DIV",{id:!0,style:!0,class:!0});var A=k(i);s=b(A,"DIV",{class:!0});var S=k(s);r=b(S,"DIV",{class:!0,role:!0});var B=k(r);for(let V=0;V<y.length;V+=1)y[V].l(B);B.forEach(_),o=L(S),C&&C.l(S),a=L(S),c=b(S,"DIV",{class:!0});var F=k(c);f=b(F,"DIV",{class:!0,tabindex:!0,role:!0,title:!0}
9),k(f).forEach(_),F.forEach(_),S.forEach(_),A.forEach(_),this.h()},h(){u(r,"class","order-0 inline-flex flex-none items-center text-base md:text-xl"),u(r,"role","group"),u(f,"class","flex-auto bg-no-repeat bg-right bg-contain bg-[url('/static/img/nur_wappen.png')] xs:bg-[url('/static/img/wappen.png')] cursor-pointer"),u(f,"tabindex","0"),u(f,"role","link"),u(f,"title","zur Startseite wechseln"),u(c,"class","order-2 inline-flex flex-1"),u(s,"class","flex stretch md:gap-8 items-stretch h-full"),u(i,"id","menuContainer"),lt(i,"height",n[6]+"px"),u(i,"class","max-h-[50px] lg:max-h-[80px] max-w-screen-bp mx-auto transition-all")},m(E,A){D(E,i,A),m(i,s),m(s,r);for(let S=0;S<y.length;S+=1)y[S]&&y[S].m(r,null);m(s,o),C&&C.m(s,null),m(s,a),m(s,c),m(c,f),d=!0,h||(g=[de(Wl,"scroll",()=>{e=!0,clearTimeout(l),l=setTimeout(t,100),n[9]()}),de(f,"click",n[10]),de(f,"keypress",n[11])],h=!0)},p(E,[A]){if(A&1&&!e&&(e=!0,clearTimeout(l),scrollTo(Wl.pageXOffset,E[0]),l=setTimeout(t,100)),A&128){v=le(E[7]);let S;for(S=0;S<v.length;S+=1){const B=Gi(E,v,S);y[S]?(y[S].p(B,A),z(y[S],1)):(y[S]=Wi(B),y[S].c(),z(y[S],1),y[S].m(r,null))}for(ce(),S=v.length;S<y.length;S+=1)I(S);fe()}E[1]&&!E[2]?C?(C.p(E,A),A&6&&z(C,1)):(C=Zi(E),C.c(),z(C,1),C.m(s,a)):C&&(ce(),N(C,1,1,()=>{C=null}),fe()),(!d||A&64)&<(i,"height",E[6]+"px")},i(E){if(!d){for(let A=0;A<v.length;A+=1)z(y[A]);z(C),d=!0}},o(E){y=y.filter(Boolean);for(let A=0;A<y.length;A+=1)N(y[A]);N(C),d=!1},d(E){E&&_(i),Fe(y,E),C&&C.d(),h=!1,Ue(g)}}}function ha(n,e,t){let l=!1,i=!1;const s=[{group:"left",type:Ft,data:{id:"btnMenu",title:"Menü aufklappen",close_title:"Menü zuklappen",text:"Menu",icon:"fa-solid fa-bars",close_icon:"fa-solid fa-xmark",disabled:te.is_preview,store:Ti,action:()=>{t(1,l=!l),t(2,i=!1),Ti.set(l),Po.set(i),v()}}}],r=s.filter(E=>E.group==="left");s.filter(E=>E.group==="right");let o=document.getElementById("app-menu"),a,c,f,d=80,h=0;async function g(){await Co(),v()}function v(){t(8,o=document.getElementById("app-menu"));let E=o.getBoundingClientRect();t(3,a=E.height);let S=document.getElementById("menuContainer").getBoundingClientRect();t(4,c=S.left),t(5,f=S.width>960?"960px":"100%")}function y(){t(0,h=Wl.pageYOffset)}const I=()=>window.location="/index.html",C=()=>window.location="/index.html";return n.$$.update=()=>{n.$$.dirty&257&&(h>0?(o.classList.add("shadow-xl"),h>110&&t(6,d=50),h<70&&t(6,d=80)):(o.classList.remove("shadow-xl"),t(6,d=80)),g())},[h,l,i,a,c,f,d,r,o,y,I,C]}class _a extends ye{constructor(e){super(),we(this,e,ha,da,ve,{})}}function Yi(n){let e,t;return{c(){e=p("a"),t=j(" "),this.h()},l(l){e=b(l,"A",{id:!0,tabindex:!0});var i=k(e);t=R(i," "),i.forEach(_),this.h()},h(){u(e,"id",n[0]),u(e,"tabindex","-1")},m(l,i){D(l,e,i),m(e,t)},p(l,i){i&1&&u(e,"id",l[0])},d(l){l&&_(e)}}}function Ji(n){let e,t='<a href="#auto-toc-anker" class="hover:text-bp-blue" title="zum Inhaltsverzeichnis"><i class="fa-solid fa-chevron-up" role="presentation" tabindex="-1"></i></a>';return{c(){e=p("span"),e.innerHTML=t,this.h()},l(l){e=b(l,"SPAN",{class:!0,"data-svelte-h":!0}),ze(e)!=="svelte-yww25f"&&(e.innerHTML=t),this.h()},h(){u(e,"class","p-2")},m(l,i){D(l,e,i)},d(l){l&&_(e)}}}function ma(n){let e,t,l,i,s=n[3]()+"",r,o,a=n[0]&&te.has_autotoc&&Yi(n),c=n[0]&&te.has_autotoc&&!n[1]&&Ji();return{c(){e=p("div"),a&&a.c(),t=T(),l=p("div"),i=new je(!1),o=T(),c&&c.c(),this.h()},l(f){e=b(f,"DIV",{class:!0});var d=k(e);a&&a.l(d),t=L(d),l=b(d,"DIV",{class:!0});var h=k(l);i=We(h,!1),h.forEach(_),o=L(d),c&&c.l(d),d.forEach(_),this.h()},h(){i.a=null,u(l,"class",r="flex-1 "+(n[2]?"border-b border-bp-gray-middle":"")),u(e,"class","flex items-center")},m(f,d){D(f,e,d),a&&a.m(e,null),m(e,t),m(e,l),i.m(s,l),m(e,o),c&&c.m(e,null)},p(f,[d]){f[0]&&te.has_autotoc?a?a.p(f,d):(a=Yi(f),a.c(),a.m(e,t)):a&&(a.d(1),a=null),d&4&&r!==(r="flex-1 "+(f[2]?"border-b border-bp-gray-middle":""))&&u(l,"class",r),f[0]&&te.has_autotoc&&!f[1]?c||(c=Ji(),c.c(),c.m(e,null)):c&&(c.d(1),c=null)},i:q,o:q,d(f){f&&_(e),a&&a.d(),c&&c.d()}}}function ga(n,e,t){let l,i,s,r,{title:o="Ãberschrift fehlt"}=e,{badge:a=null}=e,{size:c="h2"}=e,{href:f=null}=e,{target:d="_self"}=e,{orientation:h="text-left"}=e,{anchor:g=null}=e,{bpblue:v=!1}=e,{bpborder:y=!1}=e,{is_toc:I=!1}=e,{icon:C=""}=e,{css:E=""}=e;const A=()=>{let S=`<${c} class="${r()}">`;return C&&C.length&&(S+=`<i class="${C}" role="presentation" tabindex="-1"></i>`),f&&f.length?S+=`<a href="${f}" target="${d}" class="hover:underline">${o}</a>`:S+=`<span>${o}</span>`,a&&a.length&&(S+=`<span class="ml-2 text-white text-xs align-top bg-bp-blue dark:bg-black p-2 rounded-full">${a}</span>`),S+=`</${c}>`,S};return n.$$set=S=>{"title"in S&&t(4,o=S.title),"badge"in S&&t(5,a=S.badge),"size"in S&&t(6,c=S.size),"href"in S&&t(7,f=S.href),"target"in S&&t(8,d=S.target),"orientation"in S&&t(9,h=S.orientation),"anchor"in S&&t(0,g=S.anch
9or),"bpblue"in S&&t(10,v=S.bpblue),"bpborder"in S&&t(11,y=S.bpborder),"is_toc"in S&&t(1,I=S.is_toc),"icon"in S&&t(12,C=S.icon),"css"in S&&t(13,E=S.css)},n.$$.update=()=>{n.$$.dirty&2048&&t(2,l=y),n.$$.dirty&1024&&t(14,i=v),n.$$.dirty&512&&t(15,s=h),n.$$.dirty&57344&&(r=()=>{let S=["m-0","w-full","dark:text-white","space-x-2"];return S.push(s),i&&S.push("text-bp-blue"),E&&S.push(E),S.join(" ")})},[g,I,l,A,o,a,c,f,d,h,v,y,C,E,i,s]}class He extends ye{constructor(e){super(),we(this,e,ga,ma,ve,{title:4,badge:5,size:6,href:7,target:8,orientation:9,anchor:0,bpblue:10,bpborder:11,is_toc:1,icon:12,css:13})}}function Xi(n){let e,t,l,i,s,r,o,a,c,f,d,h,g,v=n[1]&&n[1].title.length&&Qi(n);return{c(){e=p("div"),t=p("div"),v&&v.c(),l=T(),i=p("div"),s=p("div"),r=p("img"),c=T(),f=p("div"),d=p("p"),h=new je(!1),this.h()},l(y){e=b(y,"DIV",{class:!0});var I=k(e);t=b(I,"DIV",{class:!0});var C=k(t);v&&v.l(C),l=L(C),i=b(C,"DIV",{class:!0});var E=k(i);s=b(E,"DIV",{class:!0});var A=k(s);r=b(A,"IMG",{src:!0,alt:!0,role:!0,tabindex:!0,class:!0,loading:!0}),A.forEach(_),c=L(E),f=b(E,"DIV",{class:!0});var S=k(f);d=b(S,"P",{class:!0});var B=k(d);h=We(B,!1),B.forEach(_),S.forEach(_),E.forEach(_),C.forEach(_),I.forEach(_),this.h()},h(){pe(r.src,o=n[2].xsl)||u(r,"src",o),u(r,"alt",a=n[2].alt),u(r,"role","presentation"),u(r,"tabindex","-1"),u(r,"class","max-h-[300px] m-auto"),u(r,"loading","eager"),u(s,"class","w-[30%] h-full"),h.a=null,u(d,"class",""),u(f,"class","text-xs sm:text-sm md:text-base block w-[70%]"),u(i,"class","max-w-screen-bp flex flex-row gap-8 px-4 max-h-[300px] overflow-hidden"),u(t,"class","max-w-screen-bp mx-auto bg-white dark:bg-black flex flex-col gap-8"),u(e,"class","bg-none bg-repeat-x lg:bg-[url('/static/img/bgRaute.jpg')]")},m(y,I){D(y,e,I),m(e,t),v&&v.m(t,null),m(t,l),m(t,i),m(i,s),m(s,r),m(i,c),m(i,f),m(f,d),h.m(n[3],d),g=!0},p(y,I){y[1]&&y[1].title.length?v?(v.p(y,I),I&2&&z(v,1)):(v=Qi(y),v.c(),z(v,1),v.m(t,l)):v&&(ce(),N(v,1,1,()=>{v=null}),fe()),(!g||I&4&&!pe(r.src,o=y[2].xsl))&&u(r,"src",o),(!g||I&4&&a!==(a=y[2].alt))&&u(r,"alt",a),(!g||I&8)&&h.p(y[3])},i(y){g||(z(v),g=!0)},o(y){N(v),g=!1},d(y){y&&_(e),v&&v.d()}}}function Qi(n){let e,t,l;const i=[n[1]];let s={};for(let r=0;r<i.length;r+=1)s=Ee(s,i[r]);return t=new He({props:s}),{c(){e=p("div"),se(t.$$.fragment),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);he(t.$$.fragment,o),o.forEach(_),this.h()},h(){u(e,"class","flex-none hero-title mt-4")},m(r,o){D(r,e,o),ie(t,e,null),l=!0},p(r,o){const a=o&2?Te(i,[Ve(r[1])]):{};t.$set(a)},i(r){l||(z(t.$$.fragment,r),l=!0)},o(r){N(t.$$.fragment,r),l=!1},d(r){r&&_(e),ne(t)}}}function pa(n){let e,t,l=n[0]&&Xi(n);return{c(){l&&l.c(),e=Z()},l(i){l&&l.l(i),e=Z()},m(i,s){l&&l.m(i,s),D(i,e,s),t=!0},p(i,[s]){i[0]?l?(l.p(i,s),s&1&&z(l,1)):(l=Xi(i),l.c(),z(l,1),l.m(e.parentNode,e)):l&&(ce(),N(l,1,1,()=>{l=null}),fe())},i(i){t||(z(l),t=!0)},o(i){N(l),t=!1},d(i){i&&_(e),l&&l.d(i)}}}function ba(n,e,t){let l=bl&&bl.entries?bl:!1,i,s,r;return l&&(l.entries[0].img.alt=l.entries[0].alt,l.entries[0].img.title=l.entries[0].title,i=l.headline,s=l.entries[0].img,r=l.entries[0].text.replaceAll(` 10 11`,"<br/>")),[l,i,s,r]}class ka extends ye{constructor(e){super(),we(this,e,ba,pa,ve,{})}}function va(n){let e,t,l=n[0].text+"";return{c(){e=p("p"),t=new je(!1),this.h()},l(i){e=b(i,"P",{});var s=k(e);
11t=We(s,!1),s.forEach(_),this.h()},h(){t.a=null},m(i,s){D(i,e,s),t.m(l,e)},p(i,s){s&1&&l!==(l=i[0].text+"")&&t.p(l)},i:q,o:q,d(i){i&&_(e)}}}function wa(n){let e,t,l,i,s,r=n[0].text+"",o,a,c=`Zurück zur 12 <a href="/index.html" class="text-bp-blue hover:underline">Startseite</a>`,f;return t=new He({props:{title:n[0].code+" "+n[0].desc,size:"h3"}}),{c(){e=p("div"),se(t.$$.fragment),l=T(),i=p("p"),s=new je(!1),o=T(),a=p("span"),a.innerHTML=c,this.h()},l(d){e=b(d,"DIV",{class:!0});var h=k(e);he(t.$$.fragment,h),l=L(h),i=b(h,"P",{});var g=k(i);s=We(g,!1),g.forEach(_),o=L(h),a=b(h,"SPAN",{"data-svelte-h":!0}),ze(a)!=="svelte-10wnhtr"&&(a.innerHTML=c),h.forEach(_),this.h()},h(){s.a=null,u(e,"class","grid grid-cols-1 gap-8")},m(d,h){D(d,e,h),ie(t,e,null),m(e,l),m(e,i),s.m(r,i),m(e,o),m(e,a),f=!0},p(d,h){const g={};h&1&&(g.title=d[0].code+" "+d[0].desc),t.$set(g),(!f||h&1)&&r!==(r=d[0].text+"")&&s.p(r)},i(d){f||(z(t.$$.fragment,d),f=!0)},o(d){N(t.$$.fragment,d),f=!1},d(d){d&&_(e),ne(t)}}}function ya(n){let e,t,l='<img src="/static/img/error_page.jpg" alt="Fehlerseite" role="presentation" tabindex="-1"/>',i,s,r,o,a;const c=[wa,va],f=[];function d(h,g){return h[0].code>0?0:1}return r=d(n),o=f[r]=c[r](n),{c(){e=p("div"),t=p("div"),t.innerHTML=l,i=T(),s=p("div"),o.c(),this.h()},l(h){e=b(h,"DIV",{class:!0});var g=k(e);
12t=b(g,"DIV",{"data-svelte-h":!0}),ze(t)!=="svelte-71b8w4"&&(t.innerHTML=l),i=L(g),s=b(g,"DIV",{});var v=k(s);o.l(v),v.forEach(_),g.forEach(_),this.h()},h(){u(e,"class","grid grid-cols-1 sm:grid-cols-2 gap-8")},m(h,g){D(h,e,g),m(e,t),m(e,i),m(e,s),f[r].m(s,null),a=!0},p(h,[g]){let v=r;r=d(h),r===v?f[r].p(h,g):(ce(),N(f[v],1,1,()=>{f[v]=null}),fe(),o=f[r],o?o.p(h,g):(o=f[r]=c[r](h),o.c()),z(o,1),o.m(s,null))},i(h){a||(z(o),a=!0)},o(h){N(o),a=!1},d(h){h&&_(e),f[r].d()}}}function Ea(n,e,t){let l,{code:i=0}=e;const s=[{code:0,desc:"Wartungsarbeiten",text:"Sehr geehrte Damen und Herren,<br/><br/>das Internetangebot des Kontaktportals der Bayerischen Polizei ist wegen Wartungsarbeiten vorübergehend nicht erreichbar.<br/>Bitte versuchen Sie es zu einem späteren Zeitpunkt nochmals.<br/><br/>Vielen Dank für Ihr Verständnis.<br/>Ihre Bayerische Polizei"},{code:400,desc:"Ungültige Anfrage",text:"Der Client hat eine fehlerhafte Anfrage geschickt, die der Server aufgrund fehlerhafter Syntax nicht bearbeiten kann."},{code:401,desc:"Unautorisiert",text:"Die Anfrage kann ohne Autorisierung nicht verarbeitet werden. Zu diesem Zweck muss der Server einen WWW_Authenticate-Antwortheader mitschicken, der erläutert, wie die Authentifizierung vorzunehmen ist. HTTP definiert die zwei Methoden âBasicâ und âDigestâ vor."},{code:403,desc:"Verboten",text:"Der Zugriff ist dauerhaft verboten. Eine Authorisation wird nicht anerkannt, und der Client soll die Anfrage nicht noch einmal stellen."},{code:404,desc:"Seite nicht gefunden",text:"Der Server konnte die vom Client angeforderte Ressource nicht finden. Häufigste Ursache ist ein sogenannter Toter Link. Der 404-Status kann ebenfalls zurückgeliefert werden, wenn kein anderer Statuscode zutreffend ist oder der Client bewusst ohne Angabe eines näheren Grundes abgewiesen werden soll."},{code:405,desc:"Methode nicht erlaubt",text:"Die Anfrage-Methode (wie GET oder POST) ist nicht erlaubt. Diese Antwort kann z. B. zurückkommen, wenn man WebDAV-Methoden verwendet, ohne dass der Server diese beherrscht. In einem Allow-Antwortheader muss der Server erlaubte Methoden auflisten."},{code:408,desc:"Anfrage-Zeitüberschreitung",text:"Die Anfrage wurde vom Client nicht in der vom Server vorgegebenen Zeit beendet. Der Fehler kann z. B. beim Hochladen groÃer Dateien auftreten."},{code:500,desc:"Interner Server-Fehler",text:"Der Server entdeckt einen internen Fehler und kann deshalb die Anfrage nicht bearbeiten. Fehler in Programmen auf dem Server, z. B. in PHP-Skripten, können diese Antwort provozieren."},{code:502,desc:"Schlechtes Portal",text:"Der Server, in diesem Fall ein Proxy, kann die Anfrage nicht ausführen, weil im weiteren Verlauf ein Fehler aufgetreten ist."},{code:503,desc:"Dienst nicht verfügbar",text:"Der Dienst ist derzeit nicht verfügbar. Dies kann aufgrund hohen Datenaufkommens oder wegen Wartungsarbeiten passieren."},{code:504,desc:"Portal-Auszeit",text:"Der Proxy kann die Anfrage wegen einer Zeitüberschreitung nicht bearbeiten."}];return n.$$set=r=>{"code"in r&&t(1,i=r.code)},n.$$.update=()=>{n.$$.dirty&2&&t(0,l=s.find(r=>{if(r.code===i)return r}))},[l,i]}class Ia extends ye{constructor(e){super(),we(this,e,Ea,ya,ve,{code:1})}}const Ca="modulepreload",Sa=function(n){return"/"+n},xi={},dr=function(e,t,l){let i=Promise.resolve();if(t&&t.length>0){document.getElementsByTagName("link");const r=document.querySelector("meta[property=csp-nonce]"),o=r?.nonce||r?.getAttribute("nonce");i=Promise.allSettled(t.map(a=>{if(a=Sa(a),a in xi)return;xi[a]=!0;const c=a.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${a}"]${f}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":Ca,c||(d.as="script"),d.crossOrigin="",d.href=a,o&&d.setAttribute("nonce",o),document.head.appendChild(d),c)return new Promise((h,g)=>{d.addEventListener("load",h),d.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${a}`)))})}))}function s(r){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=r,window.dispatchEvent(o),!o.defaultPrevented)throw r}return i.then(r=>{for(const o of r||[])o.status==="rejected"&&s(o.reason);return e().catch(s)})};/*! 13 * PhotoSwipe Lightbox 5.4.4 - https://photoswipe.com 14 * (c) 2024 Dmytro Semenov 15 */function Jt(n,e,t){const l=document.createElement(e);return n&&(l.className=n),t&&t.appendChild(l),l}function Da(n,e,t){let l=`translate3d(${n}px,0px,0)`;return t!==void 0&&(l+=` scale3d(${t},${t},1)`),l}function Zl(n,e,t){n.style.width=typeof e=="number"?`${e}px`:e,n.style.height=typeof t=="number"?`${t}px`:t}
vendor: 12,329 bytes, line 15
15const xe={IDLE:"idle",LOADING:"loading",LOADED:"loaded",ERROR:"error"};function za(n){return"button"in n&&n.button===1||n.ctrlKey||n.metaKey||n.altKey||n.shiftKey}function Xt(n,e,t=document){let l=[];if(n instanceof Element)l=[n];else if(n instanceof NodeList||Array.isArray(n))l=Array.from(n);else{const i=typeof n=="string"?n:e;i&&(l=Array.from(t.querySelectorAll(i)))}return l}function Aa(n){return typeof n=="function"&&n.prototype&&n.prototype.goTo}function $i(){return!!(navigator.vendor&&navigator.vendor.match(/apple/i))}class Ta{constructor(e,t){this.type=e,this.defaultPrevented=!1,t&&Object.assign(this,t)}preventDefault(){this.defaultPrevented=!0}}class La{constructor(){this._listeners={},this._filters={},this.pswp=void 0,this.options=void 0}addFilter(e,t,l=100){var i,s,r;this._filters[e]||(this._filters[e]=[]),(i=this._filters[e])===null||i===void 0||i.push({fn:t,priority:l}),(s=this._filters[e])===null||s===void 0||s.sort((o,a)=>o.priority-a.priority),(r=this.pswp)===null||r===void 0||r.addFilter(e,t,l)}removeFilter(e,t){this._filters[e]&&(this._filters[e]=this._filters[e].filter(l=>l.fn!==t)),this.pswp&&this.pswp.removeFilter(e,t)}applyFilters(e,...t){var l;return(l=this._filters[e])===null||l===void 0||l.forEach(i=>{t[0]=i.fn.apply(this,t)}),t[0]}on(e,t){var l,i;this._listeners[e]||(this._listeners[e]=[]),(l=this._listeners[e])===null||l===void 0||l.push(t),(i=this.pswp)===null||i===void 0||i.on(e,t)}off(e,t){var l;this._listeners[e]&&(this._listeners[e]=this._listeners[e].filter(i=>t!==i)),(l=this.pswp)===null||l===void 0||l.off(e,t)}dispatch(e,t){var l;if(this.pswp)return this.pswp.dispatch(e,t);const i=new Ta(e,t);return(l=this._listeners[e])===null||l===void 0||l.forEach(s=>{s.call(this,i)}),i}}class Va{constructor(e,t){if(this.element=Jt("pswp__img pswp__img--placeholder",e?"img":"div",t),e){const l=this.element;l.decoding="async",l.alt="",l.src=e,l.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(e,t){this.element&&(this.element.tagName==="IMG"?(Zl(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=Da(0,0,e/250)):Zl(this.element,e,t))}destroy(){var e;(e=this.element)!==null&&e!==void 0&&e.parentNode&&this.element.remove(),this.element=null}}class Fa{constructor(e,t,l){this.instance=t,this.data=e,this.index=l,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=xe.IDLE,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout(()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)},1e3)}load(e,t){if(this.slide&&this.usePlaceholder())if(this.placeholder){const l=this.placeholder.element;l&&!l.parentElement&&this.slide.container.prepend(l)}else{const l=this.instance.applyFilters("placeholderSrc",this.data.msrc&&this.slide.isFirstSlide?this.data.msrc:!1,this);this.placeholder=new Va(l,this.slide.container)}this.element&&!t||this.instance.dispatch("contentLoad",{content:this,isLazy:e}).defaultPrevented||(this.isImageContent()?(this.element=Jt("pswp__img","img"),this.displayedImageWidth&&this.loadImage(e)):(this.element=Jt("pswp__content","div"),this.element.innerHTML=this.data.html||""),t&&this.slide&&this.slide.updateContentSize(!0))}loadImage(e){var t,l;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:e}).defaultPrevented)return;const i=this.element;this.updateSrcsetSizes(),this.data.srcset&&(i.srcset=this.data.srcset),i.src=(t=this.data.src)!==null&&t!==void 0?t:"",i.alt=(l=this.data.alt)!==null&&l!==void 0?l:"",this.state=xe.LOADING,i.complete?this.onLoaded():(i.onload=()=>{this.onLoaded()},i.onerror=()=>{this.onError()})}setSlide(e){this.slide=e,this.hasSlide=!0,this.instance=e.pswp}onLoaded(){this.state=xe.LOADED,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),(this.state===xe.LOADED||this.state===xe.ERROR)&&this.removePlaceholder())}onError(){this.state=xe.ERROR,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===xe.LOADING,this)}isError(){return this.state===xe.ERROR}isImageContent(){return this.type==="image"}setDisplayedSize(e,t){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(e,t),!this.instance.dispatch("contentResize",{content:this,width:e,height:t}).defaultPrevented&&(Zl(this.element,e,t),this.isImageContent()&&!this.isError()))){const l=!this.displayedImageWidth&&e;this.displayedImageWidth=e,this.displayedImageHeight=t,l?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:e,height:t,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==xe.ERROR,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const e=this.element,t=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!e.dataset.largestUsedSize||t>parseInt(e.dataset.largestUsedSize,10))&&(e.sizes=t+"px",e.dataset.largestUsedSize=String(t))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,!this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented&&(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var e,t;let l=Jt("pswp__error-msg","div");l.innerText=(e=(t=this.instance.options)===null||t===void 0?void 0:t.errorMsg)!==null&&e!==void 0?e:"",l=this.instance.applyFilters("contentErrorElement",l,this),this.element=Jt("pswp__content pswp__error-msg-container","div"),this.element.appendChild(l),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===xe.ERROR){this.displayError();return}if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const e="decode"in this.element;this.isImageContent()?e&&this.slide&&(!this.slide.isActive||$i())?(this.isDecoding=!0,this.element.decode().catch(()=>{}).finally(()=>{this.isDecoding=!1,this.appendImage()})):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){this.instance.dispatch("contentActivate",{content:this}).defaultPrevented||!this.slide||(this.isImageContent()&&this.isDecoding&&!$i()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,!this.instance.dispatch("contentRemove",{content:this}).defaultPrevented&&(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),(this.state===xe.LOADED||this.state===xe.ERROR)&&this.removePlaceholder()))}}function Na(n,e){if(n.getViewportSizeFn){const t=n.getViewportSizeFn(n,e);if(t)return t}return{x:document.documentElement.clientWidth,y:window.innerHeight}}function dl(n,e,t,l,i){let s=0;if(e.paddingFn)s=e.paddingFn(t,l,i)[n];else if(e.padding)s=e.padding[n];else{const r="padding"+n[0].toUpperCase()+n.slice(1);e[r]&&(s=e[r])}return Number(s)||0}function Ma(n,e,t,l){return{x:e.x-dl("left",n,e,t,l)-dl("right",n,e,t,l),y:e.y-dl("top",n,e,t,l)-dl("bottom",n,e,t,l)}}const en=4e3;class Ba{constructor(e,t,l,i){this.pswp=i,this.options=e,this.itemData=t,this.index=l,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(e,t,l){const i={x:e,y:t};this.elementSize=i,this.panAreaSize=l;const s=l.x/i.x,r=l.y/i.y;this.fit=Math.min(1,s<r?s:r),this.fill=Math.min(1,s>r?s:r),this.vFill=Math.min(1,r),this.initial=this._getInitial(),this.secondary=this._getSecondary(),this.max=Math.max(this.initial,this.secondary,this._getMax()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}_parseZoomLevelOption(e){const t=e+"ZoomLevel",l=this.options[t];if(l)return typeof l=="function"?l(this):l==="fill"?this.fill:l==="fit"?this.fit:Number(l)}_getSecondary(){let e=this._parseZoomLevelOption("secondary");return e||(e=Math.min(1,this.fit*3),this.elementSize&&e*this.elementSize.x>en&&(e=en/this.elementSize.x),e)}_getInitial(){return this._parseZoomLevelOption("initial")||this.fit}_getMax(){return this._parseZoomLevelOption("max")||Math.max(1,this.fit*4)}}function hr(n,e,t){const l=e.createContentFromData(n,t);let i;const{options:s}=e;if(s){i=new Ba(s,n,-1);let r;e.pswp?r=e.pswp.viewportSize:r=Na(s,e);const o=Ma(s,r,n,t);i.update(l.width,l.height,o)}return l.lazyLoad(),i&&l.setDisplayedSize(Math.ceil(l.width*i.initial),Math.ceil(l.height*i.initial)),l}function Pa(n,e){const t=e.getItemData(n);if(!e.dispatch("lazyLoadSlide",{index:n,itemData:t}).defaultPrevented)return hr(t,e,n)}class Oa extends La{getNumItems(){var e;let t=0;const l=(e=this.options)===null||e===void 0?void 0:e.dataSource;l&&"length"in l?t=l.length:l&&"gallery"in l&&(l.items||(l.items=this._getGalleryDOMElements(l.gallery)),l.items&&(t=l.items.length));const i=this.dispatch("numItems",{dataSource:l,numItems:t});return this.applyFilters("numItems",i.numItems,l)}createContentFromData(e,t){return new Fa(e,this,t)}getItemData(e){var t;const l=(t=this.options)===null||t===void 0?void 0:t.dataSource;let i={};Array.isArray(l)?i=l[e]:l&&"gallery"in l&&(l.items||(l.items=this._getGalleryDOMElements(l.gallery)),i=l.items[e]);let s=i;s instanceof Element&&(s=this._domElementToItemData(s));const r=this.dispatch("itemData",{itemData:s||{},index:e});return this.applyFilters("itemData",r.itemData,e)}_getGalleryDOMElements(e){var t,l;return(t=this.options)!==null&&t!==void 0&&t.children||(l=this.options)!==null&&l!==void 0&&l.childSelector?Xt(this.options.children,this.options.childSelector,e)||[]:[e]}_domElementToItemData(e){const t={element:e},l=e.tagName==="A"?e:e.querySelector("a");if(l){t.src=l.dataset.pswpSrc||l.href,l.dataset.pswpSrcset&&(t.srcset=l.dataset.pswpSrcset),t.width=l.dataset.pswpWidth?parseInt(l.dataset.pswpWidth,10):0,t.height=l.dataset.pswpHeight?parseInt(l.dataset.pswpHeight,10):0,t.w=t.width,t.h=t.height,l.dataset.pswpType&&(t.type=l.dataset.pswpType);const s=e.querySelector("img");if(s){var i;t.msrc=s.currentSrc||s.src,t.alt=(i=s.getAttribute("alt"))!==null&&i!==void 0?i:""}(l.dataset.pswpCropped||l.dataset.cropped)&&(t.thumbCropped=!0)}return this.applyFilters("domItemData",t,e,l)}lazyLoadData(e,t){return hr(e,this,t)}}class _r extends Oa{constructor(e){super(),this.options=e||{},this._uid=0,this.shouldOpen=!1,this._preloadedContent=void 0,this.onThumbnailsClick=this.onThumbnailsClick.bind(this)}init(){Xt(this.options.gallery,this.options.gallerySelector).forEach(e
15=>{e.addEventListener("click",this.onThumbnailsClick,!1)})}onThumbnailsClick(e){if(za(e)||window.pswp)return;let t={x:e.clientX,y:e.clientY};!t.x&&!t.y&&(t=null);let l=this.getClickedIndex(e);l=this.applyFilters("clickedIndex",l,e,this);const i={gallery:e.currentTarget};l>=0&&(e.preventDefault(),this.loadAndOpen(l,i,t))}getClickedIndex(e){if(this.options.getClickedIndexFn)return this.options.getClickedIndexFn.call(this,e);const t=e.target,i=Xt(this.options.children,this.options.childSelector,e.currentTarget).findIndex(s=>s===t||s.contains(t));return i!==-1?i:this.options.children||this.options.childSelector?-1:0}loadAndOpen(e,t,l){if(window.pswp||!this.options)return!1;if(!t&&this.options.gallery&&this.options.children){const i=Xt(this.options.gallery);i[0]&&(t={gallery:i[0]})}return this.options.index=e,this.options.initialPointerPos=l,this.shouldOpen=!0,this.preload(e,t),!0}preload(e,t){const{options:l}=this;t&&(l.dataSource=t);const i=[],s=typeof l.pswpModule;if(Aa(l.pswpModule))i.push(Promise.resolve(l.pswpModule));else{if(s==="string")throw new Error("pswpModule as string is no longer supported");if(s==="function")i.push(l.pswpModule());else throw new Error("pswpModule is not valid")}typeof l.openPromise=="function"&&i.push(l.openPromise()),l.preloadFirstSlide!==!1&&e>=0&&(this._preloadedContent=Pa(e,this));const r=++this._uid;Promise.all(i).then(o=>{if(this.shouldOpen){const a=o[0];this._openPhotoswipe(a,r)}})}_openPhotoswipe(e,t){if(t!==this._uid&&this.shouldOpen||(this.shouldOpen=!1,window.pswp))return;const l=typeof e=="object"?new e.default(this.options):new e(this.options);this.pswp=l,window.pswp=l,Object.keys(this._listeners).forEach(i=>{var s;(s=this._listeners[i])===null||s===void 0||s.forEach(r=>{l.on(i,r)})}),Object.keys(this._filters).forEach(i=>{var s;(s=this._filters[i])===null||s===void 0||s.forEach(r=>{l.addFilter(i,r.fn,r.priority)})}),this._preloadedContent&&(l.contentLoader.addToCache(this._preloadedContent),this._preloadedContent=void 0),l.on("destroy",()=>{this.pswp=void 0,delete window.pswp}),l.init()}destroy(){var e;(e=this.pswp)===null||e===void 0||e.destroy(),this.shouldOpen=!1,this._listeners={},Xt(this.options.gallery,this.options.gallerySelector).forEach(t=>{t.removeEventListener("click",this.onThumbnailsClick,!1)})}}function tn(n,e,t){const l=n.slice();return l[6]=e[t],l[8]=t,l}function ln(n){let e,t;const l=[n[2]];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new He({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},p(s,r){const o=r&4?Te(l,[Ve(s[2])]):{};e.$set(o)},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function ja(n){let e,t,l;return{c(){e=p("img"),this.h()},l(i){e=b(i,"IMG",{src:!0,alt:!0,class:!0,role:!0,tabindex:!0}),this.h()},h(){pe(e.src,t=n[6].src)||u(e,"src",t),u(e,"alt",l=n[6].alt),u(e,"class",""),u(e,"role","presentation"),u(e,"tabindex","-1")},m(i,s){D(i,e,s)},p(i,s){s&8&&!pe(e.src,t=i[6].src)&&u(e,"src",t),s&8&&l!==(l=i[6].alt)&&u(e,"alt",l)},d(i){i&&_(e)}}}function Ra(n){let e,t,l,i,s,r;return{c(){e=p("a"),t=p("img"),this.h()},l(o){e=b(o,"A",{href:!0,target:!0,rel:!0});var a=k(e);t=b(a,"IMG",{src:!0,alt:!0,class:!0,role:!0,tabindex:!0}),a.forEach(_),this.h()},h(){pe(t.src,l=n[6].src)||u(t,"src",l),u(t,"alt",i=n[6].alt),u(t,"class",""),u(t,"role","presentation"),u(t,"tabindex","-1"),u(e,"href",s=n[6].href),u(e,"target",r=n[6].target),u(e,"rel","noopener noreferrer")},m(o,a){D(o,e,a),m(e,t)},p(o,a){a&8&&!pe(t.src,l=o[6].src)&&u(t,"src",l),a&8&&i!==(i=o[6].alt)&&u(t,"alt",i),a&8&&s!==(s=o[6].href)&&u(e,"href",s),a&8&&r!==(r=o[6].target)&&u(e,"target",r)},d(o){o&&_(e)}}}function nn(n){let e,t,l=n[0]&&sn(n),i=n[1]&&rn(n);return{c(){e=p("div"),l&&l.c(),t=T(),i&&i.c(),this.h()},l(s){e=b(s,"DIV",{class:!0});var r=k(e);l&&l.l(r),t=L(r),i&&i.l(r),r.forEach(_),this.h()},h(){u(e,"class","flex flex-row justify-end bg-bp-gray-light dark:bg-black")},m(s,r){D(s,e,r),l&&l.m(e,null),m(e,t),i&&i.m(e,null)},p(s,r){s[0]?l?l.p(s,r):(l=sn(s),l.c(),l.m(e,t)):l&&(l.d(1),l=null),s[1]?i?i.p(s,r):(i=rn(s),i.c(),i.m(e,null)):i&&(i.d(1),i=null)},d(s){s&&_(e),l&&l.d(),i&&i.d()}}}function sn(n){let e,t,l,i;return{c(){e=p("a"),t=p("i"),this.h()},l(s){e=b(s,"A",{href:!0,target:!0,rel:!0,download:!0,type:!0,title:!0,class:!0});var r=k(e);
15t=b(r,"I",{class:!0,role:!0,tabindex:!0}),k(t).forEach(_),r.forEach(_),this.h()},h(){u(t,"class","fa-solid fa-download hover:text-bp-blue text-base"),u(t,"role","presentation"),u(t,"tabindex","-1"),u(e,"href",l=n[6].src),u(e,"target","_blank"),u(e,"rel","noopener noreferrer"),u(e,"download",i=n[6].file),u(e,"type","button"),u(e,"title","Bild speichern"),u(e,"class","px-2 py-1 hover:text-bp-blue text-black dark:text-white")},m(s,r){D(s,e,r),m(e,t)},p(s,r){r&8&&l!==(l=s[6].src)&&u(e,"href",l),r&8&&i!==(i=s[6].file)&&u(e,"download",i)},d(s){s&&_(e)}}}function rn(n){let e,t='<i class="fa-solid fa-magnifying-glass-plus hover:text-bp-blue text-base" role="presentation" tabindex="-1"></i>',l,i;return{c(){e=p("button"),e.innerHTML=t,this.h()},l(s){e=b(s,"BUTTON",{type:!0,title:!0,class:!0,"data-svelte-h":!0}),ze(e)!=="svelte-141b6qr"&&(e.innerHTML=t),this.h()},h(){u(e,"type","button"),u(e,"title","Bild zoomen"),u(e,"class","px-2 py-1 hover:text-bp-blue text-black dark:text-white")},m(s,r){D(s,e,r),l||(i=de(e,"click",Qt(function(){gt(n[4].loadAndOpen(n[8]))&&n[4].loadAndOpen(n[8]).apply(this,arguments)})),l=!0)},p(s,r){n=s},d(s){s&&_(e),l=!1,i()}}}function on(n){let e,t,l;function i(a,c){return a[6].href?Ra:ja}let s=i(n),r=s(n),o=(n[0]||n[1])&&nn(n);return{c(){e=p("div"),r.c(),t=T(),o&&o.c(),l=T(),this.h()},l(a){e=b(a,"DIV",{class:!0});var c=k(e);r.l(c),t=L(c),o&&o.l(c),l=L(c),c.forEach(_),this.h()},h(){u(e,"class","h-max hover:shadow-lg")},m(a,c){D(a,e,c),r.m(e,null),m(e,t),o&&o.m(e,null),m(e,l)},p(a,c){s===(s=i(a))&&r?r.p(a,c):(r.d(1),r=s(a),r&&(r.c(),r.m(e,t))),a[0]||a[1]?o?o.p(a,c):(o=nn(a),o.c(),o.m(e,l)):o&&(o.d(1),o=null)},d(a){a&&_(e),r.d(),o&&o.d()}}}function Ua(n){let e,t,l,i,s,r=n[2]&&ln(n),o=le(n[3]),a=[];for(let c=0;c<o.length;c+=1)a[c]=on(tn(n,o,c));return{c(){e=p("div"),r&&r.c(),t=T(),l=p("div");for(let c=0;c<a.length;c+=1)a[c].c();this.h()},l(c){e=b(c,"DIV",{class:!0});var f=k(e);r&&r.l(f),t=L(f),l=b(f,"DIV",{class:!0});var d=k(l);for(let h=0;h<a.length;h+=1)a[h].l(d);d.forEach(_),f.forEach(_),this.h()},h(){u(l,"class",i="grid "+n[5]()+" gap-8"),u(e,"class","component-imagegallery grid grid-cols-1 gap-8")},m(c,f){D(c,e,f),r&&r.m(e,null),m(e,t),m(e,l);for(let d=0;d<a.length;d+=1)a[d]&&a[d].m(l,null);s=!0},p(c,[f]){if(c[2]?r?(r.p(c,f),f&4&&z(r,1)):(r=ln(c),r.c(),z(r,1),r.m(e,t)):r&&(ce(),N(r,1,1,()=>{r=null}),fe()),f&27){o=le(c[3]);let d;for(d=0;d<o.length;d+=1){const h=tn(c,o,d);a[d]?a[d].p(h,f):(a[d]=on(h),a[d].c(),a[d].m(l,null))}for(;d<a.length;d+=1)a[d].d(1);a.length=o.length}(!s||f&32&&i!==(i="grid "+c[5]()+" gap-8"))&&u(l,"class",i)},i(c){s||(z(r),s=!0)},o(c){N(r),s=!1},d(c){c&&_(e),r&&r.d(),Fe(a,c)}}}function Ha(n,e,t){let l,{zoom:i=!1}=e,{download:s=!1}=e,{headline:r=null}=e,{blocks:o=[]}=e;o.map(async c=>{c.src=c.src_prev;let f=null;c.src_prev&&(f=window.location.origin+c.src,c.file=c.src.split("/").pop());const d=new Image;d.onload=function(){c.width=this.width,c.height=this.height},d.src=f});let a;return(async()=>(t(4,a=new _r({gallery:"#lala",dataSource:o,showHideAnimationType:"fade",pswpModule:()=>dr(()=>import("./photoswipe.esm.js"),[])})),a.init()))(),n.$$set=c=>{"zoom"in c&&t(0,i=c.zoom),"download"in c&&t(1,s=c.download),"headline"in c&&t(2,r=c.headline),"blocks"in c&&t(3,o=c.blocks)},n.$$.update=()=>{n.$$.dirty&8&&t(5,l=()=>o.length>=4?"grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4":o.length===3?"grid-cols-1 sm:grid-cols-2 md:grid-cols-3":o.length===2?"grid-cols-1 sm:grid-cols-2":"grid-cols-1")},[i,s,r,o,a,l]}class Ka extends ye{constructor(e){super(),we(this,e,Ha,Ua,ve,{zoom:0,download:1,headline:2,blocks:3})}}function an(n){let e,t,l,i,s;return{c(){e=p("div"),t=p("i"),l=T(),i=p("a"),s=j("Routenplaner"),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);t=b(o,"I",{class:!0,role:!0,tabindex:!0}),k(t).forEach(_),l=L(o),i=b(o,"A",{href:!0,target:!0,rel:!0,class:!0});var a=k(i);s=R(a,"Routenplaner"),a.forEach(_),o.forEach(_),this.h()},h(){u(t,"class","fa-solid fa-route text-bp-blue"),u(t,"role","presentation"),u(t,"tabindex","-1"),u(i,"href",n[1]),u(i,"target","_blank"),u(i,"rel","noopener noreferrer"),u(i,"class","text-bp-blue hover:underline"),u(e,"class","flex items-center gap-2")},m(r,o){D(r,e,o),m(e,t),m(e,l),m(e,i),m(i,s)},p(r,o){o&2&&u(i,"href",r[1])},d(r){r&&_(e)}}}function cn(n){let e,t,l,i,s;return{c(){e=p("div"),t=p("i"),l=T(),i=p("a"),s=j("Kartenausschnitt"),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);
15t=b(o,"I",{class:!0,role:!0,tabindex:!0}),k(t).forEach(_),l=L(o),i=b(o,"A",{href:!0,target:!0,rel:!0,class:!0});var a=k(i);s=R(a,"Kartenausschnitt"),a.forEach(_),o.forEach(_),this.h()},h(){u(t,"class","fa-solid fa-map-location text-bp-blue"),u(t,"role","presentation"),u(t,"tabindex","-1"),u(i,"href",n[0]),u(i,"target","_blank"),u(i,"rel","noopener noreferrer"),u(i,"class","text-bp-blue hover:underline"),u(e,"class","flex items-center gap-2")},m(r,o){D(r,e,o),m(e,t),m(e,l),m(e,i),m(i,s)},p(r,o){o&1&&u(i,"href",r[0])},d(r){r&&_(e)}}}function qa(n){let e,t,l,i,s=`Anfahrtshilfe mit freundlicher Unterstützung von 16 <a href="http://www.bayerninfo.de/" target="_blank" rel="noopener noreferrer" class="text-bp-blue hover:underline">BayernInfo</a> und 17 <a href="http://www.bayernatlas.de/" target="_blank" rel="noopener noreferrer" class="text-bp-blue hover:underline">BayernAtlas 18 </a>.`,r=n[1]&&an(n),o=n[0]&&cn(n);return{c(){e=p("div"),r&&r.c(),t=T(),o&&o.c(),l=T(),i=p("span"),i.innerHTML=s,this.h()},l(a){e=b(a,"DIV",{class:!0});var c=k(e);r&&r.l(c),t=L(c),o&&o.l(c),l=L(c),i=b(c,"SPAN",{class:!0,"data-svelte-h":!0}),ze(i)!=="svelte-11b9bnw"&&(i.innerHTML=s),c.forEach(_),this.h()},h(){u(i,"class",""),u(e,"class","component-autotoc grid grid-cols-1 gap-2")},m(a,c){D(a,e,c),r&&r.m(e,null),m(e,t),o&&o.m(e,null),m(e,l),m(e,i)},p(a,[c]){a[1]?r?r.p(a,c):(r=an(a),r.c(),r.m(e,t)):r&&(r.d(1),r=null),a[0]?o?o.p(a,c):(o=cn(a),o.c(),o.m(e,l)):o&&(o.d(1),o=null)},i:q,o:q,d(a){a&&_(e),r&&r.d(),o&&o.d()}}}function Ga(n,e,t){let{href_map:l=null}=e,{href_route:i=null}=e;return n.$$set=s=>{"href_map"in s&&t(0,l=s.href_map),"href_route"in s&&t(1,i=s.href_route)},[l,i]}class Wa extends ye{constructor(e){super(),we(this,e,Ga,qa,ve,{href_map:0,href_route:1})}}function Za(n){let e,t,l,i,s,r,o,a,c,f,d,h,g,v,y;return{c(){e=p("picture"),t=p("source"),i=T(),s=p("source"),o=T(),a=p("source"),f=T(),d=p("source"),g=T(),v=p("img"),this.h()},l(I){e=b(I,"PICTURE",{class:!0});var C=k(e);t=b(C,"SOURCE",{media:!0,srcset:!0}),i=L(C),s=b(C,"SOURCE",{media:!0,srcset:!0}),o=L(C),a=b(C,"SOURCE",{media:!0,srcset:!0}),f=L(C),d=b(C,"SOURCE",{media:!0,srcset:!0}),g=L(C),v=b(C,"IMG",{src:!0,alt:!0,class:!0,loading:!0,role:!0,tabindex:!0}),C.forEach(_),this.h()},h(){u(t,"media","(max-width: 576px)"),ht(t,l=n[11].xs)||u(t,"srcset",l),u(s,"media","(max-width: 768px)"),ht(s,r=n[11].sm)||u(s,"srcset",r),u(a,"media","(max-width: 992px)"),ht(a,c=n[11].md)||u(a,"srcset",c),u(d,"media","(min-width: 993px)"),ht(d,h=n[11].xl)||u(d,"srcset",h),pe(v.src,y=n[11].md)||u(v,"src",y),u(v,"alt",n[3]),u(v,"class",n[16]()),u(v,"loading",n[15]()),u(v,"role","presentation"),u(v,"tabindex","-1"),u(e,"class",n[16]())},m(I,C){D(I,e,C),m(e,t),m(e,i),m(e,s),m(e,o),m(e,a),m(e,f),m(e,d),m(e,g),m(e,v)},p(I,C){C&2048&&l!==(l=I[11].xs)&&u(t,"srcset",l),C&2048&&r!==(r=I[11].sm)&&u(s,"srcset",r),C&2048&&c!==(c=I[11].md)&&u(a,"srcset",c),C&2048&&h!==(h=I[11].xl)&&u(d,"srcset",h),C&2048&&!pe(v.src,y=I[11].md)&&u(v,"src",y),C&8&&u(v,"alt",I[3])},d(I){I&&_(e)}}}function Ya(n){let e,t;return{c(){e=p("img"),this.h()},l(l){e=b(l,"IMG",{src:!0,alt:!0,class:!0,loading:!0,role:!0,tabindex:!0}),this.h()},h(){pe(e.src,t=n[11].xs)||u(e,"src",t),u(e,"alt",n[3]),u(e,"class",n[16]()),u(e,"loading",n[15]()),u(e,"role","presentation"),u(e,"tabindex","-1")},m(l,i){D(l,e,i)},p(l,i){i&2048&&!pe(e.src,t=l[11].xs)&&u(e,"src",t),i&8&&u(e,"alt",l[3])},d(l){l&&_(e)}}}function Ja(n){let e;function t(s,r){return s[10]===2?Qa:Xa}let l=t(n),i=l(n);return{c(){i.c(),e=Z()},l(s){i.l(s),e=Z()},m(s,r){i.m(s,r),D(s,e,r)},p(s,r){l===(l=t(s))&&i?i.p(s,r):(i.d(1),i=l(s),i&&(i.c(),i.m(e.parentNode,e)))},d(s){s&&_(e),i.d(s)}}}function Xa(n){let e,t,l,i,s,r,o,a,c,f,d,h,g,v,y,I;return{c(){e=p("a"),t=p("picture"),l=p("source"),s=T(),r=p("source"),a=T(),c=p("source"),d=T(),h=p("source"),v=T(),y=p("img"),this.h()},l(C){e=b(C,"A",{href:!0,target:!0,title:!0});var E=k(e);t=b(E,"PICTURE",{class:!0});var A=k(t);l=b(A,"SOURCE",{media:!0,srcset:!0}),s=L(A),r=b(A,"SOURCE",{media:!0,srcset:!0}),a=L(A),c=b(A,"SOURCE",{media:!0,srcset:!0}),d=L(A),h=b(A,"SOURCE",{media:!0,srcset:!0}),v=L(A),y=b(A,"IMG",{src:!0,alt:!0,class:!0,loading:!0,role:!0,tabindex:!0}
18),A.forEach(_),E.forEach(_),this.h()},h(){u(l,"media","(max-width: 576px)"),ht(l,i=n[11].xs)||u(l,"srcset",i),u(r,"media","(max-width: 768px)"),ht(r,o=n[11].sm)||u(r,"srcset",o),u(c,"media","(max-width: 992px)"),ht(c,f=n[11].md)||u(c,"srcset",f),u(h,"media","(min-width: 993px)"),ht(h,g=n[11].xl)||u(h,"srcset",g),pe(y.src,I=n[11].md)||u(y,"src",I),u(y,"alt",n[3]),u(y,"class",n[16]()),u(y,"loading",n[15]()),u(y,"role","presentation"),u(y,"tabindex","-1"),u(t,"class",n[16]()),u(e,"href",n[0]),u(e,"target",n[1]),u(e,"title",n[2])},m(C,E){D(C,e,E),m(e,t),m(t,l),m(t,s),m(t,r),m(t,a),m(t,c),m(t,d),m(t,h),m(t,v),m(t,y)},p(C,E){E&2048&&i!==(i=C[11].xs)&&u(l,"srcset",i),E&2048&&o!==(o=C[11].sm)&&u(r,"srcset",o),E&2048&&f!==(f=C[11].md)&&u(c,"srcset",f),E&2048&&g!==(g=C[11].xl)&&u(h,"srcset",g),E&2048&&!pe(y.src,I=C[11].md)&&u(y,"src",I),E&8&&u(y,"alt",C[3]),E&1&&u(e,"href",C[0]),E&2&&u(e,"target",C[1]),E&4&&u(e,"title",C[2])},d(C){C&&_(e)}}}function Qa(n){let e,t,l;return{c(){e=p("a"),t=p("img"),this.h()},l(i){e=b(i,"A",{href:!0,target:!0,title:!0});var s=k(e);t=b(s,"IMG",{src:!0,alt:!0,class:!0,loading:!0,role:!0,tabindex:!0}),s.forEach(_),this.h()},h(){pe(t.src,l=n[11].xs)||u(t,"src",l),u(t,"alt",n[3]),u(t,"class",n[16]()),u(t,"loading",n[15]()),u(t,"role","presentation"),u(t,"tabindex","-1"),u(e,"href",n[0]),u(e,"target",n[1]),u(e,"title",n[2])},m(i,s){D(i,e,s),m(e,t)},p(i,s){s&2048&&!pe(t.src,l=i[11].xs)&&u(t,"src",l),s&8&&u(t,"alt",i[3]),s&1&&u(e,"href",i[0]),s&2&&u(e,"target",i[1]),s&4&&u(e,"title",i[2])},d(i){i&&_(e)}}}function fn(n){let e,t;return{c(){e=p("p"),t=j(n[5]),this.h()},l(l){e=b(l,"P",{class:!0});var i=k(e);t=R(i,n[5]),i.forEach(_),this.h()},h(){u(e,"class","px-1 bg-bp-gray-light")},m(l,i){D(l,e,i),m(e,t)},p(l,i){i&32&&J(t,l[5])},d(l){l&&_(e)}}}function un(n){let e,t,l=n[4]&&n[7]&&dn(n),i=n[14]&&n[12]&&(n[9]||n[8])&&hn(n);return{c(){e=p("div"),l&&l.c(),t=T(),i&&i.c(),this.h()},l(s){e=b(s,"DIV",{class:!0});var r=k(e);l&&l.l(r),t=L(r),i&&i.l(r),r.forEach(_),this.h()},h(){u(e,"class","flex flex-row items-center justify-end bg-bp-gray-light dark:bg-black")},m(s,r){D(s,e,r),l&&l.m(e,null),m(e,t),i&&i.m(e,null)},p(s,r){s[4]&&s[7]?l?l.p(s,r):(l=dn(s),l.c(),l.m(e,t)):l&&(l.d(1),l=null),s[14]&&s[12]&&(s[9]||s[8])?i?i.p(s,r):(i=hn(s),i.c(),i.m(e,null)):i&&(i.d(1),i=null)},d(s){s&&_(e),l&&l.d(),i&&i.d()}}}function dn(n){let e,t;return{c(){e=p("p"),t=j(n[4]),this.h()},l(l){e=b(l,"P",{class:!0});var i=k(e);t=R(i,n[4]),i.forEach(_),this.h()},h(){u(e,"class","grow px-1")},m(l,i){D(l,e,i),m(e,t)},p(l,i){i&16&&J(t,l[4])},d(l){l&&_(e)}}}function hn(n){let e,t,l=n[8]&&_n(n),i=n[9]&&mn(n);return{c(){l&&l.c(),e=T(),i&&i.c(),t=Z()},l(s){l&&l.l(s),e=L(s),i&&i.l(s),t=Z()},m(s,r){l&&l.m(s,r),D(s,e,r),i&&i.m(s,r),D(s,t,r)},p(s,r){s[8]?l?l.p(s,r):(l=_n(s),l.c(),l.m(e.parentNode,e)):l&&(l.d(1),l=null),s[9]?i?i.p(s,r):(i=mn(s),i.c(),i.m(t.parentNode,t)):i&&(i.d(1),i=null)},d(s){s&&(_(e),_(t)),l&&l.d(s),i&&i.d(s)}}}function _n(n){let e,t,l;return{c(){e=p("a"),t=p("i"),this.h()},l(i){e=b(i,"A",{href:!0,target:!0,rel:!0,download:!0,type:!0,title:!0,class:!0});var s=k(e);t=b(s,"I",{class:!0,role:!0,tabindex:!0}),k(t).forEach(_),s.forEach(_),this.h()},h(){u(t,"class","fa-solid fa-download text-base"),u(t,"role","presentation"),u(t,"tabindex","-1"),u(e,"href",l=n[11].dz),u(e,"target","_blank"),u(e,"rel","noopener noreferrer"),u(e,"download",n[13]),u(e,"type","button"),u(e,"title","Bild speichern"),u(e,"class","inline-block px-2 py-1 text-black dark:text-white hover:text-bp-blue")},m(i,s){D(i,e,s),m(e,t)},p(i,s){s&2048&&l!==(l=i[11].dz)&&u(e,"href",l),s&8192&&u(e,"download",i[13])},d(i){i&&_(e)}}}function mn(n){let e,t='<i class="fa-solid fa-magnifying-glass-plus text-base" role="presentation" tabindex="-1"></i>',l,i;return{c(){e=p("button"),e.innerHTML=t,this.h()},l(s){e=b(s,"BUTTON",{type:!0,title:!0,class:!0,"data-svelte-h":!0}),ze(e)!=="svelte-1c6zp1k"&&(e.innerHTML=t),this.h()},h(){u(e,"type","button"),u(e,"title","Bild zoomen"),u(e,"class","inline-block px-2 py-1 text-black dark:text-white hover:text-bp-blue")},m(s,r){D(s,e,r),l||(i=de(e,"click",Qt(function(){gt(n[14].loadAndOpen())&&n[14].loadAndOpen().apply(this,arguments)})),l=!0)},p(s,r){n=s},d(s){s&&_(e),l=!1,i()}}}function xa(n){let e,t,l,i;function s(f,d){return f[0]&&!te.is_preview?Ja:f[10]===2?Ya:Za}let r=s(n),o=r(n),a=n[5]&&n[6]&&fn(n),c=(n[4]&&n[7]||n[9]||n[8])&&un(n);return{c(){e=p("figure"),o.c(),t=T(),a&&a.c(),l=T(),c&&c.c(),this.h()},l(f){e=b(f,"FIGURE",{class:!0});var d=k(e);o.l(d),t=L(d),a&&a.l(d),l=L(d),c&&c.l(d),d.forEach(_),this.h()},h(){u(e,"class",i="component-image "+n[16]()+" "+n[17]()+" "+n[18]()+" slot-"+n[10])},m(f,d){D(f,e,d),o.m(e,null),m(e,t),a&&a.m(e,null),m(e,l),c&&c.m(e,null)},p(f,[d]){r===(r=s(f))&&o?o.p(f,d):(o.d(1),o=r(f),o&&(o.c(),o.m(e,t))),f[5]&&f[6]?a?a.p(f,d):(a=fn(f),a.c(),a.m(e,l)):a&&(a.d(1),a=null),f[4]&&f[7]||f[9]||f[8]?c?c.p(f,d):(c=un(f),c.c(),c.m(e,null)):c&&(c.d(1),c=null),d&1024&&i!==(i="component-image "+f[16]()+" "+f[17]()+" "+f[18]()+" slot-"+f[10])&&u(e,"class",i)},i:q,o:q,d(f){f&&_(e),o.d(),a&&a.d(),c&&c.d()}}}function $a(n,e,t){let{action:l=!1}=e,{shadow:i=!1}
18=e,{href:s=null}=e,{target:r="_blank"}=e,{title:o=null}=e,{alt:a=null}=e,{copyright:c=null}=e,{size:f="full"}=e,{desc:d=null}=e,{show_desc:h=!0}=e,{hero:g=!1}=e,{justification:v=null}=e,{withcopy:y=0}=e,{download:I=0}=e,{zoom:C=0}=e,{slot:E=1}=e,{img:A={xs:null,sm:null,md:null,xl:null,dz:null}}=e,S=null,B=null;l?S=window.location.origin+A.xs:A.dz&&(S=window.location.origin+A.dz,B=A.dz.split("/").pop());const F=()=>g?"eager":"lazy",V=()=>{const O=[];return g&&!A.md&&O.push("h-[300px] w-[960px]"),i&&O.push("hover:shadow-lg"),O.join(" ")},M=()=>g?"":v==="image-left"?"float-left m-0 sm:mr-4":v==="image-right"?"float-right m-0 sm:ml-4":"float-none m-0",U=()=>{const O=[];return f==="full"?O.push("w-full"):f.toString()==="20"?O.push("sm:w-1/5"):f.toString()==="25"?O.push("sm:w-1/4"):f.toString()==="33"?O.push("sm:w-1/3"):f.toString()==="50"?O.push("sm:w-1/2"):f.toString()==="66"?O.push("sm:w-2/3"):f.toString()==="75"?O.push("sm:w-3/4"):f.toString()==="100"&&O.push("sm:w-full"),O.join(" ")};let W;return g||(async()=>{const O=new Image;O.src=S,await O.decode();const ee=[{src:S,width:O.width,height:O.height,alt:a}];t(14,W=new _r({dataSource:ee,showHideAnimationType:"fade",pswpModule:()=>dr(()=>import("./photoswipe.esm.js"),[])})),W.init()})(),n.$$set=O=>{"action"in O&&t(19,l=O.action),"shadow"in O&&t(20,i=O.shadow),"href"in O&&t(0,s=O.href),"target"in O&&t(1,r=O.target),"title"in O&&t(2,o=O.title),"alt"in O&&t(3,a=O.alt),"copyright"in O&&t(4,c=O.copyright),"size"in O&&t(21,f=O.size),"desc"in O&&t(5,d=O.desc),"show_desc"in O&&t(6,h=O.show_desc),"hero"in O&&t(22,g=O.hero),"justification"in O&&t(23,v=O.justification),"withcopy"in O&&t(7,y=O.withcopy),"download"in O&&t(8,I=O.download),"zoom"in O&&t(9,C=O.zoom),"slot"in O&&t(10,E=O.slot),"img"in O&&t(11,A=O.img)},[s,r,o,a,c,d,h,y,I,C,E,A,S,B,W,F,V,M,U,l,i,f,g,v]}class ti extends ye{constructor(e){super(),we(this,e,$a,xa,ve,{action:19,shadow:20,href:0,target:1,title:2,alt:3,copyright:4,size:21,desc:5,show_desc:6,hero:22,justification:23,withcopy:7,download:8,zoom:9,slot:10,img:11})}}function gn(n){let e,t,l;const i=[n[2]];let s={};for(let r=0;r<i.length;r+=1)s=Ee(s,i[r]);return t=new He({props:s}),{c(){e=p("div"),se(t.$$.fragment),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);he(t.$$.fragment,o),o.forEach(_),this.h()},h(){u(e,"class","template-headline")},m(r,o){D(r,e,o),ie(t,e,null),l=!0},p(r,o){const a=o&4?Te(i,[Ve(r[2])]):{};t.$set(a)},i(r){l||(z(t.$$.fragment,r),l=!0)},o(r){N(t.$$.fragment,r),l=!1},d(r){r&&_(e),ne(t)}}}function pn(n){let e,t,l,i=n[0].title&&bn(n),s=n[1]&&kn(n);return{c(){e=p("div"),i&&i.c(),t=T(),s&&s.c(),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);i&&i.l(o),t=L(o),s&&s.l(o),o.forEach(_),this.h()},h(){u(e,"class","template-content")},m(r,o){D(r,e,o),i&&i.m(e,null),m(e,t),s&&s.m(e,null),l=!0},p(r,o){r[0].title?i?(i.p(r,o),o&1&&z(i,1)):(i=bn(r),i.c(),z(i,1),i.m(e,t)):i&&(ce(),N(i,1,1,()=>{i=null}),fe()),r[1]?s?s.p(r,o):(s=kn(r),s.c(),s.m(e,null)):s&&(s.d(1),s=null)},i(r){l||(z(i),l=!0)},o(r){N(i),l=!1},d(r){r&&_(e),i&&i.d(),s&&s.d()}}}function bn(n){let e,t,l;return t=new ti({props:{title:n[0].title,desc:n[0].description,href:n[0].href,alt:n[0].alt,size:n[0].size||"full",show_desc:!1,justification:n[0].justification,copyright:n[0].copyright,zoom:n[0].zoom,download:n[0].download,slot:n[3],img:n[4]}}),{c(){e=p("div"),se(t.$$.fragment),this.h()},l(i){e=b(i,"DIV",{class:!0});var s=k(e);he(t.$$.fragment,s),s.forEach(_),this.h()},h(){u(e,"class","template-image")},m(i,s){D(i,e,s),ie(t,e,null),l=!0},p(i,s){const r={};s&1&&(r.title=i[0].title),s&1&&(r.desc=i[0].description),s&1&&(r.href=i[0].href),s&1&&(r.alt=i[0].alt),s&1&&(r.size=i[0].size||"full"),s&1&&(r.justification=i[0].justification),s&1&&(r.copyright=i[0].copyright),s&1&&(r.zoom=i[0].zoom),s&1&&(r.download=i[0].download),s&8&&(r.slot=i[3]),t.$set(r)},i(i){l||(z(t.$$.fragment,i),l=!0)},o(i){N(t.$$.fragment,i),l=!1},d(i){i&&_(e),ne(t)}}}function kn(n){let e,t;return{c(){e=p("div"),t=new je(!1),this.h()},l(l){e=b(l,"DIV",{class:!0});var i=k(e);t=We(i,!1),i.forEach(_),this.h()},h(){t.a=null,u(e,"class","template-text svelte-x4m2r9")},m(l,i){D(l,e,i),t.m(n[1],e)},p(l,i){i&2&&t.p(l[1])},d(l){l&&_(e)}}}function ec(n){let e,t,l,i=n[2]&&n[2].title.length&&gn(n),s=(n[1]&&n[1].length||n[0])&&pn(n);return{c(){e=p("div"),i&&i.c(),t=T(),s&&s.c(),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);i&&i.l(o),t=L(o),s&&s.l(o),o.forEach(_),this.h()},h(){u(e,"class","component-text-with-image grid grid-cols-1 gap-8")},m(r,o){D(r,e,o),i&&i.m(e,null),m(e,t),s&&s.m(e,null),l=!0}
18,p(r,[o]){r[2]&&r[2].title.length?i?(i.p(r,o),o&4&&z(i,1)):(i=gn(r),i.c(),z(i,1),i.m(e,t)):i&&(ce(),N(i,1,1,()=>{i=null}),fe()),r[1]&&r[1].length||r[0]?s?(s.p(r,o),o&3&&z(s,1)):(s=pn(r),s.c(),z(s,1),s.m(e,null)):s&&(ce(),N(s,1,1,()=>{s=null}),fe())},i(r){l||(z(i),z(s),l=!0)},o(r){N(i),N(s),l=!1},d(r){r&&_(e),i&&i.d(),s&&s.d()}}}function tc(n,e,t){let{headline:l=null}=e,{image:i={}}=e,{iwe2:s=null}=e,{slot:r=1}=e;const o={xs:i.xs||null,sm:i.sm||null,md:i.md||null,xl:i.xl||null,dz:i.dz||i.xl};return s?s=s.replace(/\\"/g,'"'):!i.justification&&typeof i.justification=="object"&&(i.justification=null),n.$$set=a=>{"headline"in a&&t(2,l=a.headline),"image"in a&&t(0,i=a.image),"iwe2"in a&&t(1,s=a.iwe2),"slot"in a&&t(3,r=a.slot)},[i,s,l,r,o]}class $t extends ye{constructor(e){super(),we(this,e,tc,ec,ve,{headline:2,image:0,iwe2:1,slot:3})}}function vn(n,e,t){const l=n.slice();return l[5]=e[t],l}function wn(n){let e,t;return{c(){e=p("i"),this.h()},l(l){e=b(l,"I",{class:!0,role:!0,tabindex:!0}),k(e).forEach(_),this.h()},h(){u(e,"class",t="w-[24px] fa-solid fa-"+n[1](n[5].icon)+" text-bp-blue"),u(e,"role","presentation"),u(e,"tabindex","-1")},m(l,i){D(l,e,i)},p(l,i){i&1&&t!==(t="w-[24px] fa-solid fa-"+l[1](l[5].icon)+" text-bp-blue")&&u(e,"class",t)},d(l){l&&_(e)}}}function yn(n){let e,t,l,i=n[5].title+"",s,r,o,a,c=n[5].icon&&wn(n);return{c(){e=p("div"),c&&c.c(),t=T(),l=p("a"),s=j(i),a=T(),this.h()},l(f){e=b(f,"DIV",{class:!0});var d=k(e);c&&c.l(d),t=L(d),l=b(d,"A",{class:!0,rel:!0,href:!0,target:!0});var h=k(l);s=R(h,i),h.forEach(_),a=L(d),d.forEach(_),this.h()},h(){u(l,"class","whitespace-nowrap text-bp-blue dark:text-white hover:underline"),u(l,"rel","noopener noreferrer"),u(l,"href",r=n[5].href),u(l,"target",o=n[5].target),u(e,"class","flex flex-row gap-1 items-center")},m(f,d){D(f,e,d),c&&c.m(e,null),m(e,t),m(e,l),m(l,s),m(e,a)},p(f,d){f[5].icon?c?c.p(f,d):(c=wn(f),c.c(),c.m(e,t)):c&&(c.d(1),c=null),d&1&&i!==(i=f[5].title+"")&&J(s,i),d&1&&r!==(r=f[5].href)&&u(l,"href",r),d&1&&o!==(o=f[5].target)&&u(l,"target",o)},d(f){f&&_(e),c&&c.d()}}}function lc(n){let e,t,l=le(n[0]),i=[];for(let s=0;s<l.length;s+=1)i[s]=yn(vn(n,l,s));return{c(){e=p("div"),t=p("div");for(let s=0;s<i.length;s+=1)i[s].c();this.h()},l(s){e=b(s,"DIV",{class:!0});var r=k(e);t=b(r,"DIV",{class:!0});var o=k(t);for(let a=0;a<i.length;a+=1)i[a].l(o);o.forEach(_),r.forEach(_),this.h()},h(){u(t,"class",n[2]()),u(e,"class","component-linklist")},m(s,r){D(s,e,r),m(e,t);for(let o=0;o<i.length;o+=1)i[o]&&i[o].m(t,null)},p(s,[r]){if(r&3){l=le(s[0]);let o;for(o=0;o<l.length;o+=1){const a=vn(s,l,o);i[o]?i[o].p(a,r):(i[o]=yn(a),i[o].c(),i[o].m(t,null))}for(;o<i.length;o+=1)i[o].d(1);i.length=l.length}},i:q,o:q,d(s){s&&_(e),Fe(i,s)}}}function ic(n,e,t){let{links:l=[]}=e,{orientation:i=0}=e;const s="list",r=a=>({"link-45deg":"link","box-arrow-up-right":"arrow-up-right-from-square",download:"download"})[a],o=()=>i?"flex flex-wrap gap-8":"grid grid-col-1 gap-2";return n.$$set=a=>{"links"in a&&t(0,l=a.links),"orientation"in a&&t(3,i=a.orientation)},[l,r,o,i,s]}class Cl extends ye{constructor(e){super(),we(this,e,ic,lc,ve,{links:0,orientation:3,listtype:4})}get listtype(){return this.$$.ctx[4]}}function nc(n){let e,t,l,i,s,r,o,a,c='<i class="fa-brands fa-square-youtube"></i><span>Video starten</span>',f,d,h,g,v="Einstellung setzen",y,I,C,E,A,S,B,F,V,M,U,W,O,ee,H,Q="YouTube Videos zukünftig immer laden",P,K;return{c(){e=p("div"),t=p("p"),l=j(`Wenn Sie das Video starten, werden Inhalte von Youtube geladen und dadurch Ihre IP-Adresse an Youtube 19 übertragen. Weitere Informationen zum Datenschutz finden Sie 20 `),i=p("a"),s=j("hier"),r=j("."),o=T(),a=p("div"),a.innerHTML=c,f=T(),d=p("div"),h=p("button"),g=p("span"),g.textContent=v,y=T(),I=p("span"),C=p("span"),E=nt("svg"),A=nt("path"),B=T(),F=p("span"),V=nt("svg"),M=nt("path"),ee=T(),H=p("span"),H.textContent=Q,this.h()},l(ue){e=b(ue,"DIV",{class:!0});var $=k(e);t=b($,"P",{});var oe=k(t);l=R(oe,`Wenn Sie das Video starten, werden Inhalte von Youtube geladen und dadurch Ihre IP-Adresse an Youtube 21 übertragen. Weitere Informationen zum Datenschutz finden Sie 22 `),i=b(oe,"A",{class:!0,href:!0});var me=k(i);s=R(me,"hier"),me.forEach(_),r=R(oe,"."),oe.forEach(_),o=L($),a=b($,"DIV",{class:!0,role:!0,tabindex:!0,"data-svelte-h":!0}),ze(a)!=="svelte-qb9a8j"&&(a.innerHTML=c),f=L($),d=b($,"DIV",{class:!0});var x=k(d);h=b(x,"BUTTON",{type:!0,class:!0,role:!0,"aria-checked":!0});var be=k(h);g=b(be,"SPAN",{class:!0,"data-svelte-h":!0}),ze(g)!=="svelte-m5dfvc"&&(g.textContent=v),y=L(be),I=b(be,"SPAN",{class:!0});var _e=k(I);C=b(_e,"SPAN",{class:!0,"aria-hidden":!0});var Ne=k(C);E=_t(Ne,"svg",{class:!0,fill:!0,viewBox:!0});var Ie=k(E);A=_t(Ie,"path",{d:!0,stroke:!0,"stroke-width":!0,"stroke-linecap":!0,"stroke-linejoin":!0}),k(A).forEach(_),Ie.forEach(_),Ne.forEach(_),B=L(_e),F=b(_e,"SPAN",{class:!0,"aria-hidden":!0});var Me=k(F);V=_t(Me,"svg",{class:!0,fill:!0,viewBox:!0});var X=k(V);M=_t(X,"path",{d:!0}
22),k(M).forEach(_),X.forEach(_),Me.forEach(_),_e.forEach(_),be.forEach(_),ee=L(x),H=b(x,"SPAN",{"data-svelte-h":!0}),ze(H)!=="svelte-pe9w0b"&&(H.textContent=Q),x.forEach(_),$.forEach(_),this.h()},h(){u(i,"class","text-bp-blue hover:underline"),u(i,"href",n[11]()),u(a,"class","m-auto hover:cursor-pointer flex gap-2 content-center text-bp-blue-dark hover:text-bp-blue dark:text-white text-5xl"),u(a,"role","button"),u(a,"tabindex","0"),u(g,"class","sr-only"),u(A,"d","M4 8l2-2m0 0l2-2M6 6L4 4m2 2l2 2"),u(A,"stroke","currentColor"),u(A,"stroke-width","2"),u(A,"stroke-linecap","round"),u(A,"stroke-linejoin","round"),u(E,"class","h-3 w-3 text-gray-400"),u(E,"fill","none"),u(E,"viewBox","0 0 12 12"),u(C,"class",S=n[8]+" absolute inset-0 flex h-full w-full items-center justify-center transition-opacity"),u(C,"aria-hidden","true"),u(M,"d","M3.707 5.293a1 1 0 00-1.414 1.414l1.414-1.414zM5 8l-.707.707a1 1 0 001.414 0L5 8zm4.707-3.293a1 1 0 00-1.414-1.414l1.414 1.414zm-7.414 2l2 2 1.414-1.414-2-2-1.414 1.414zm3.414 2l4-4-1.414-1.414-4 4 1.414 1.414z"),u(V,"class","h-3 w-3 text-indigo-600"),u(V,"fill","currentColor"),u(V,"viewBox","0 0 12 12"),u(F,"class",U=n[7]+" absolute inset-0 flex h-full w-full items-center justify-center transition-opacity"),u(F,"aria-hidden","true"),u(I,"class",W=n[9]+" pointer-events-none relative inline-block h-5 w-5 transform rounded-full bg-white text-black shadow ring-0 transition duration-200 ease-in-out"),u(h,"type","button"),u(h,"class",O=n[6]+" relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"),u(h,"role","switch"),u(h,"aria-checked","false"),u(d,"class","flex gap-2 justify-left"),u(e,"class","grid grid-cols-1 gap-2 border border-bp-gray-middle p-2")},m(ue,$){D(ue,e,$),m(e,t),m(t,l),m(t,i),m(i,s),m(t,r),m(e,o),m(e,a),m(e,f),m(e,d),m(d,h),m(h,g),m(h,y),m(h,I),m(I,C),m(C,E),m(E,A),m(I,B),m(I,F),m(F,V),m(V,M),m(d,ee),m(d,H),P||(K=[de(a,"click",n[16]),de(a,"keypress",n[17]),de(h,"click",n[18])],P=!0)},p(ue,$){$&256&&S!==(S=ue[8]+" absolute inset-0 flex h-full w-full items-center justify-center transition-opacity")&&u(C,"class",S),$&128&&U!==(U=ue[7]+" absolute inset-0 flex h-full w-full items-center justify-center transition-opacity")&&u(F,"class",U),$&512&&W!==(W=ue[9]+" pointer-events-none relative inline-block h-5 w-5 transform rounded-full bg-white text-black shadow ring-0 transition duration-200 ease-in-out")&&u(I,"class",W),$&64&&O!==(O=ue[6]+" relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2")&&u(h,"class",O)},d(ue){ue&&_(e),P=!1,Ue(K)}}}function sc(n){let e;function t(s,r){return s[0]?oc:rc}let l=t(n),i=l(n);return{c(){e=p("div"),i.c(),this.h()},l(s){e=b(s,"DIV",{class:!0});var r=k(e);i.l(r),r.forEach(_),this.h()},h(){u(e,"class","embed-responsive embed-responsive-16by9")},m(s,r){D(s,e,r),i.m(e,null)},p(s,r){l===(l=t(s))&&i?i.p(s,r):(i.d(1),i=l(s),i&&(i.c(),i.m(e,null)))},d(s){s&&_(e),i.d()}}}function rc(n){let e,t='<span class="text-red-500">Es wurde kein Youtube Link angegeben.</span>';return{c(){e=p("div"),e.innerHTML=t},l(l){e=b(l,"DIV",{"data-svelte-h":!0}),ze(e)!=="svelte-e8rnza"&&(e.innerHTML=t)},m(l,i){D(l,e,i)},p:q,d(l){l&&_(e)}}}function oc(n){let e,t,l=n[5]&&En(n);return{c(){e=p("iframe"),l&&l.c(),this.h()},l(i){e=b(i,"IFRAME",{src:!0,allowtransparency:!0,title:!0,class:!0});var s=k(e);l&&l.l(s),s.forEach(_),this.h()},h(){pe(e.src,t=n[0])||u(e,"src",t),e.allowFullscreen=n[2],u(e,"allowtransparency","true"),u(e,"title",n[4]),u(e,"class","embed-responsive-item")},m(i,s){D(i,e,s),l&&l.m(e,null)},p(i,s){i[5]?l?l.p(i,s):(l=En(i),l.c(),l.m(e,null)):l&&(l.d(1),l=null),s&1&&!pe(e.src,t=i[0])&&u(e,"src",t),s&4&&(e.allowFullscreen=i[2]),s&16&&u(e,"title",i[4])},d(i){i&&_(e),l&&l.d()}}}function En(n){let e,t;return{c(){e=p("span"),t=j(n[5])},l(l){e=b(l,"SPAN",{});var i=k(e);
22t=R(i,n[5]),i.forEach(_)},m(l,i){D(l,e,i),m(e,t)},p(l,i){i&32&&J(t,l[5])},d(l){l&&_(e)}}}function In(n){let e,t,l;return{c(){e=p("div"),t=j("© "),l=j(n[3]),this.h()},l(i){e=b(i,"DIV",{class:!0});var s=k(e);t=R(s,"© "),l=R(s,n[3]),s.forEach(_),this.h()},h(){u(e,"class","copyright")},m(i,s){D(i,e,s),m(e,t),m(e,l)},p(i,s){s&8&&J(l,i[3])},d(i){i&&_(e)}}}function ac(n){let e,t;function l(o,a){return o[10]?sc:nc}let i=l(n),s=i(n),r=n[3]&&n[1]&&In(n);return{c(){e=p("div"),s.c(),t=T(),r&&r.c(),this.h()},l(o){e=b(o,"DIV",{class:!0});var a=k(e);s.l(a),t=L(a),r&&r.l(a),a.forEach(_),this.h()},h(){u(e,"class","component-youtube grid grid-cols-1 gap-2")},m(o,a){D(o,e,a),s.m(e,null),m(e,t),r&&r.m(e,null)},p(o,[a]){i===(i=l(o))&&s?s.p(o,a):(s.d(1),s=i(o),s&&(s.c(),s.m(e,t))),o[3]&&o[1]?r?r.p(o,a):(r=In(o),r.c(),r.m(e,null)):r&&(r.d(1),r=null)},i:q,o:q,d(o){o&&_(e),s.d(),r&&r.d()}}}function cc(n,e,t){let l,i,s,r,o;const a=()=>{let F=Pe&&Pe.links&&Pe.links.dsgvo?Pe.links.dsgvo:null;return te.is_preview&&(F=null),F};let c=!1;Kl.subscribe(F=>{t(14,c=F)});let{show_copyright:f=0}=e,{fullscreen:d=0}=e,{autoplay:h=0}=e,{copyright:g=null}=e,{title:v=null}=e,{alt:y=null}=e,{link:I=""}=e,C=!1;if(I.startsWith("https://www.youtube")){let F=I.replace("enablejsapi=1","");F+="ecver=1&cc_load_policy=1&iv_load_policy=1&loop=0&rel=0&yt:stretch=16:9&autohide=1",h&&(F+="&autoplay=1"),I=F}const E=()=>{t(15,C=!C),C!==c&&(Kl.set(C),Qe("allowYoutubeCookies",C))},A=()=>{t(10,l=!0)},S=()=>{t(10,l=!0)},B=()=>{E()};return n.$$set=F=>{"show_copyright"in F&&t(1,f=F.show_copyright),"fullscreen"in F&&t(2,d=F.fullscreen),"autoplay"in F&&t(13,h=F.autoplay),"copyright"in F&&t(3,g=F.copyright),"title"in F&&t(4,v=F.title),"alt"in F&&t(5,y=F.alt),"link"in F&&t(0,I=F.link)},n.$$.update=()=>{n.$$.dirty&16384&&t(10,l=c),n.$$.dirty&32768&&t(9,i=C?"translate-x-5":"translate-x-0"),n.$$.dirty&32768&&t(8,s=C?"opacity-0 ease-out duration-100":"opacity-100 ease-in duration-200"),n.$$.dirty&32768&&t(7,r=C?"opacity-100 ease-in duration-200":"opacity-0 ease-out duration-100"),n.$$.dirty&32768&&t(6,o=C?"bg-green-500":"bg-red-500")},[I,f,d,g,v,y,o,r,s,i,l,a,E,h,c,C,A,S,B]}class fc extends ye{constructor(e){super(),we(this,e,cc,ac,ve,{show_copyright:1,fullscreen:2,autoplay:13,copyright:3,title:4,alt:5,link:0})}}function uc(n){let e,t,l,i,s,r;return{c(){e=p("audio"),t=p("source"),i=p("a"),s=j(n[5]),r=j(` 23 Ihr Browser unterstützt das Audio Element nicht.`),this.h()},l(o){e=b(o,"AUDIO",{title:!0,preload:!0});var a=k(e);t=b(a,"SOURCE",{src:!0,type:!0}),i=b(a,"A",{href:!0});var c=k(i);s=R(c,n[5]),c.forEach(_),r=R(a,` 24 Ihr Browser unterstützt das Audio Element nicht.`),a.forEach(_),this.h()},h(){pe(t.src,l=n[4])||u(t,"src",l),u(t,"type",n[3]),u(i,"href",n[5]),u(e,"title",n[2]),u(e,"preload","metadata"),e.controls=!0},m(o,a){D(o,e,a),m(e,t),m(e,i),m(i,s),m(e,r)},p(o,a){a&16&&!pe(t.src,l=o[4])&&u(t,"src",l),a&8&&u(t,"type",o[3]),a&32&&J(s,o[5]),a&32&&u(i,"href",o[5]),a&4&&u(e,"title",o[2])},d(o){o&&_(e)}}}function dc(n){let e,t,l,i,s,r;return{c(){e=p("audio"),t=p("source"),i=p("a"),s=j(n[5]),r=j(` 25 Ihr Browser unterstützt das Audio Element nicht.`),this.h()},l(o){e=b(o,"AUDIO",{title:!0,preload:!0});var a=k(e);t=b(a,"SOURCE",{src:!0,type:!0}),i=b(a,"A",{href:!0});var c=k(i);s=R(c,n[5]),c.forEach(_),r=R(a,` 26 Ihr Browser unterstützt das Audio Element nicht.`),a.forEach(_),this.h()},h(){pe(t.src,l=n[4])||u(t,"src",l),u(t,"type",n[3]),u(i,"href",n[5]),u(e,"title",n[2]),u(e,"preload","metadata"),e.controls=!0,e.autoplay=!0},m(o,a){D(o,e,a),m(e,t),m(e,i),m(i,s),m(e,r)},p(o,a){a&16&&!pe(t.src,l=o[4])&&u(t,"src",l),a&8&&u(t,"type",o[3]),a&32&&J(s,o[5]),a&32&&u(i,"href",o[5]),a&4&&u(e,"title",o[2])},d(o){o&&_(e)}}}function Cn(n){let e,t,l;return{c(){e=p("div"),t=j("© "),l=j(n[0]),this.h()},l(i){e=b(i,"DIV",{class:!0});var s=k(e);t=R(s,"© "),l=R(s,n[0]),s.forEach(_),this.h()},h(){u(e,"class","copyright")},m(i,s){D(i,e,s),m(e,t),m(e,l)},p(i,s){s&1&&J(l,i[0])},d(i){i&&_(e)}}}function hc(n){let e,t;function l(o,a){return o[1]?dc:uc}let i=l(n),s=i(n),r=n[0]&&Cn(n);return{c(){e=p("div"),s.c(),t=T(),r&&r.c(),this.h()},l(o){e=b(o,"DIV",{class:!0});var a=k(e);s.l(a),t=L(a),r&&r.l(a),a.forEach(_),this.h()},h(){u(e,"class","component-audio grid grid-cols-1 gap-2")},m(o,a){D(o,e,a),s.m(e,null),m(e,t),r&&r.m(e,null)},p(o,[a]){i===(i=l(o))&&s?s.p(o,a):(s.d(1),s=i(o),s&&(s.c(),s.m(e,t))),o[0]?r?r.p(o,a):(r=Cn(o),r.c(),r.m(e,null)):r&&(r.d(1),r=null)},i:q,o:q,d(o){o&&_(e),s.d(),r&&r.d()}}}
26function _c(n,e,t){let{copyright:l=null}=e,{autoplay:i=0}=e,{title:s=null}=e,{type:r="audio/mpeg"}=e,{src:o=null}=e,{file:a=null}=e;return n.$$set=c=>{"copyright"in c&&t(0,l=c.copyright),"autoplay"in c&&t(1,i=c.autoplay),"title"in c&&t(2,s=c.title),"type"in c&&t(3,r=c.type),"src"in c&&t(4,o=c.src),"file"in c&&t(5,a=c.file)},[l,i,s,r,o,a]}class mc extends ye{constructor(e){super(),we(this,e,_c,hc,ve,{copyright:0,autoplay:1,title:2,type:3,src:4,file:5})}}function gc(n){let e,t,l,i,s,r,o,a,c;return{c(){e=p("video"),t=p("source"),i=p("track"),r=p("track"),a=p("track"),c=j(` 27 Ihr Browser unterstützt das Video Element nicht.`),this.h()},l(f){e=b(f,"VIDEO",{width:!0,title:!0,preload:!0});var d=k(e);t=b(d,"SOURCE",{src:!0,type:!0}),i=b(d,"TRACK",{label:!0,kind:!0,srclang:!0,src:!0}),r=b(d,"TRACK",{label:!0,kind:!0,srclang:!0,src:!0}),a=b(d,"TRACK",{kind:!0}),c=R(d,` 28 Ihr Browser unterstützt das Video Element nicht.`),d.forEach(_),this.h()},h(){pe(t.src,l=n[0])||u(t,"src",l),u(t,"type",n[4]),u(i,"label","Deutsch"),u(i,"kind","captions"),u(i,"srclang","de"),pe(i.src,s=n[6])||u(i,"src",s),u(r,"label","Deutsch"),u(r,"kind","subtitles"),u(r,"srclang","de"),pe(r.src,o=n[6])||u(r,"src",o),u(a,"kind","captions"),u(e,"width","100%"),u(e,"title",n[3]),u(e,"preload","metadata"),e.controls=!0},m(f,d){D(f,e,d),m(e,t),m(e,i),m(e,r),m(e,a),m(e,c)},p(f,d){d&1&&!pe(t.src,l=f[0])&&u(t,"src",l),d&16&&u(t,"type",f[4]),d&64&&!pe(i.src,s=f[6])&&u(i,"src",s),d&64&&!pe(r.src,o=f[6])&&u(r,"src",o),d&8&&u(e,"title",f[3])},d(f){f&&_(e)}}}function pc(n){let e,t,l,i,s,r,o,a;return{c(){e=p("video"),t=p("source"),i=p("track"),r=p("track"),a=j(` 29 Ihr Browser unterstützt das Video Element nicht.`),this.h()},l(c){e=b(c,"VIDEO",{width:!0,title:!0,preload:!0});var f=k(e);
29t=b(f,"SOURCE",{src:!0,type:!0}),i=b(f,"TRACK",{label:!0,kind:!0,srclang:!0,src:!0}),r=b(f,"TRACK",{label:!0,kind:!0,srclang:!0,src:!0}),a=R(f,` 30 Ihr Browser unterstützt das Video Element nicht.`),f.forEach(_),this.h()},h(){pe(t.src,l=n[0])||u(t,"src",l),u(t,"type",n[4]),u(i,"label","Deutsch"),u(i,"kind","captions"),u(i,"srclang","de"),pe(i.src,s=n[6])||u(i,"src",s),u(r,"label","Deutsch"),u(r,"kind","subtitles"),u(r,"srclang","de"),pe(r.src,o=n[6])||u(r,"src",o),u(e,"width","100%"),u(e,"title",n[3]),u(e,"preload","metadata"),e.controls=!0,e.autoplay=!0},m(c,f){D(c,e,f),m(e,t),m(e,i),m(e,r),m(e,a)},p(c,f){f&1&&!pe(t.src,l=c[0])&&u(t,"src",l),f&16&&u(t,"type",c[4]),f&64&&!pe(i.src,s=c[6])&&u(i,"src",s),f&64&&!pe(r.src,o=c[6])&&u(r,"src",o),f&8&&u(e,"title",c[3])},d(c){c&&_(e)}}}function Sn(n){let e,t,l;return{c(){e=p("div"),t=j("© "),l=j(n[1]),this.h()},l(i){e=b(i,"DIV",{class:!0});var s=k(e);t=R(s,"© "),l=R(s,n[1]),s.forEach(_),this.h()},h(){u(e,"class","copyright")},m(i,s){D(i,e,s),m(e,t),m(e,l)},p(i,s){s&2&&J(l,i[1])},d(i){i&&_(e)}}}function bc(n){let e,t;function l(o,a){return o[5]?pc:gc}let i=l(n),s=i(n),r=n[1]&&n[2]&&Sn(n);return{c(){e=p("div"),s.c(),t=T(),r&&r.c(),this.h()},l(o){e=b(o,"DIV",{class:!0});var a=k(e);s.l(a),t=L(a),r&&r.l(a),a.forEach(_),this.h()},h(){u(e,"class","component-video grid grid-cols-1 gap-2 "+n[7]())},m(o,a){D(o,e,a),s.m(e,null),m(e,t),r&&r.m(e,null)},p(o,[a]){i===(i=l(o))&&s?s.p(o,a):(s.d(1),s=i(o),s&&(s.c(),s.m(e,t))),o[1]&&o[2]?r?r.p(o,a):(r=Sn(o),r.c(),r.m(e,null)):r&&(r.d(1),r=null)},i:q,o:q,d(o){o&&_(e),s.d(),r&&r.d()}}}function kc(n,e,t){let{src:l=null}=e,{copyright:i=null}=e,{show_copyright:s=0}=e,{size:r="25%"}=e,{title:o=null}=e,{type:a="video/mp4"}=e,{autoplay:c=0}=e,{subtitle:f=null}=e;const d=()=>{const h=r.replace("%","");if(t(8,r=h),r==="full")return"w-full";if(r.toString()==="20")return"sm:w-1/5";if(r.toString()==="25")return"sm:w-1/4";if(r.toString()==="33")return"sm:w-1/3";if(r.toString()==="50")return"sm:w-1/2";if(r.toString()==="66")return"sm:w-2/3";if(r.toString()==="75")return"sm:w-3/4"};return n.$$set=h=>{"src"in h&&t(0,l=h.src),"copyright"in h&&t(1,i=h.copyright),"show_copyright"in h&&t(2,s=h.show_copyright),"size"in h&&t(8,r=h.size),"title"in h&&t(3,o=h.title),"type"in h&&t(4,a=h.type),"autoplay"in h&&t(5,c=h.autoplay),"subtitle"in h&&t(6,f=h.subtitle)},[l,i,s,o,a,c,f,d,r]}class vc extends ye{constructor(e){super(),we(this,e,kc,bc,ve,{src:0,copyright:1,show_copyright:2,size:8,title:3,type:4,autoplay:5,subtitle:6})}}function Dn(n){let e,t;const l=[n[1]];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new He({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},p(s,r){const o=r&2?Te(l,[Ve(s[1])]):{};e.$set(o)},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function wc(n){let e,t,l,i;return{c(){e=p("div"),t=j("Komponente "),l=j(n[0]),i=j(" nicht gefunden"),this.h()},l(s){e=b(s,"DIV",{class:!0});var r=k(e);t=R(r,"Komponente "),l=R(r,n[0]),i=R(r," nicht gefunden"),r.forEach(_),this.h()},h(){u(e,"class","text-red-500")},m(s,r){D(s,e,r),m(e,t),m(e,l),m(e,i)},p(s,r){r&1&&J(l,s[0])},i:q,o:q,d(s){s&&_(e)}}}function yc(n){let e,t,l;const i=[n[2]];var s=n[3].find(n[5]).component;function r(o,a){let c={};for(let f=0;f<i.length;f+=1)c=Ee(c,i[f]);return a!==void 0&&a&4&&(c=Ee(c,Te(i,[Ve(o[2])]))),{props:c}}return s&&(e=Ye(s,r(n))),{c(){e&&se(e.$$.fragment),t=Z()},l(o){e&&he(e.$$.fragment,o),t=Z()},m(o,a){e&&ie(e,o,a),D(o,t,a),l=!0},p(o,a){if(a&1&&s!==(s=o[3].find(o[5]).component)){if(e){ce();const c=e;N(c.$$.fragment,1,0,()=>{ne(c,1)}),fe()}s?(e=Ye(s,r(o,a)),se(e.$$.fragment),z(e.$$.fragment,1),ie(e,t.parentNode,t)):e=null}else if(s){const c=a&4?Te(i,[Ve(o[2])]):{};e.$set(c)}},i(o){l||(e&&z(e.$$.fragment,o),l=!0)},o(o){e&&N(e.$$.fragment,o),l=!1},d(o){o&&_(t),e&&ne(e,o)}}}function Ec(n){let e,t,l,i,s,r,o=n[1]&&Dn(n);const a=[yc,wc],c=[];function f(d,h){return h&1&&(l=null),l==null&&(l=!!d[3].find(d[4])),l?0:1}return i=f(n,-1),s=c[i]=a[i](n),{c(){e=p("div"),o&&o.c(),t=T(),s.c(),this.h()},l(d){e=b(d,"DIV",{class:!0});var h=k(e);o&&o.l(h),t=L(h),s.l(h),h.forEach(_),this.h()},h(){u(e,"class","component-media grid grid-cols-1 gap-8")},m(d,h){D(d,e,h),o&&o.m(e,null),m(e,t),c[i].m(e,null),r=!0},p(d,[h]){d[1]?o?(o.p(d,h),h&2&&z(o,1)):(o=Dn(d),o.c(),z(o,1),o.m(e,t)):o&&(ce(),N(o,1,1,()=>{o=null}),fe());let g=i;i=f(d,h),i===g?c[i].p(d,h):(ce(),N(c[g],1,1,()=>{c[g]=null}),fe(),s=c[i],s?s.p(d,h):(s=c[i]=a[i](d),s.c()),z(s,1),s.m(e,null))},i(d){r||(z(o),z(s),r=!0)},o(d){N(o),N(s),r=!1},d(d){d&&_(e),o&&o.d(),c[i].d()}}}function Ic(n,e,t){let{media:l=null}=e,{headline:i=null}=e,{data:s={}}=e;const r=[{id:"youtube",component:fc},{id:"audio",component:mc},{id:"video",component:vc}],o=c=>c.id===l,a=c=>c.id===l;return n.$$set=c=>{"media"in c&&t(0,l=c.media),"headline"in c&&t(1,i=c.headline),"data"in c&&t(2,s=c.data)},[l,i,s,r,o,a]}class Yl extends ye{constructor(e){super(),we(this,e,Ic,Ec,ve,{media:0,headline:1,data:2})}}function zn(n,e,t){const l=n.slice();return l[4]=e[t],l}function Cc(n){let e,t,l=n[4].type+"",i,s;return{c(){e=p("div"),t=j("Komponente "),i=j(l),s=j(" nicht gefunden"),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);t=R(o,"Komponente "),i=R(o,l),s=R(o," nicht gefunden"),o.forEach(_),this.h()},h(){u(e,"class","text-red-500")},m(r,o){D(r,e,o),m(e,t),m(e,i),m(e,s)},p(r,o){o&1&&l!==(l=r[4].type+"")&&J(i,l)},i:q,o:q,d(r){r&&_(e)}}}function Sc(n){let e,t,l;const i=[{listtype:n[4].type},n[4]];function s(...a){return n[3](n[4],...a)}
30var r=n[1].find(s).component;function o(a,c){let f={};for(let d=0;d<i.length;d+=1)f=Ee(f,i[d]);return c!==void 0&&c&1&&(f=Ee(f,Te(i,[{listtype:a[4].type},Ve(a[4])]))),{props:f}}return r&&(e=Ye(r,o(n))),{c(){e&&se(e.$$.fragment),t=Z()},l(a){e&&he(e.$$.fragment,a),t=Z()},m(a,c){e&&ie(e,a,c),D(a,t,c),l=!0},p(a,c){if(n=a,c&1&&r!==(r=n[1].find(s).component)){if(e){ce();const f=e;N(f.$$.fragment,1,0,()=>{ne(f,1)}),fe()}r?(e=Ye(r,o(n,c)),se(e.$$.fragment),z(e.$$.fragment,1),ie(e,t.parentNode,t)):e=null}else if(r){const f=c&1?Te(i,[{listtype:n[4].type},Ve(n[4])]):{};e.$set(f)}},i(a){l||(e&&z(e.$$.fragment,a),l=!0)},o(a){e&&N(e.$$.fragment,a),l=!1},d(a){a&&_(t),e&&ne(e,a)}}}function An(n){let e,t,l=n[4].item+"",i,s,r,o,a,c,f,d,h;function g(...C){return n[2](n[4],...C)}const v=[Sc,Cc],y=[];function I(C,E){return E&1&&(o=null),o==null&&(o=!!C[1].find(g)),o?0:1}return a=I(n,-1),c=y[a]=v[a](n),{c(){e=p("details"),t=p("summary"),i=j(l),s=T(),r=p("div"),c.c(),f=T(),this.h()},l(C){e=b(C,"DETAILS",{class:!0});var E=k(e);t=b(E,"SUMMARY",{class:!0});var A=k(t);i=R(A,l),A.forEach(_),s=L(E),r=b(E,"DIV",{class:!0});var S=k(r);c.l(S),S.forEach(_),f=L(E),E.forEach(_),this.h()},h(){u(t,"class","bg-inherit py-2 px-4 cursor-pointer hover:text-bp-blue"),u(r,"class","bg-white dark:bg-black block p-4 text-black dark:text-white"),u(e,"class","border border-bp-gray-middle bg-bp-gray-light dark:bg-black text-black dark:text-white duration-500"),e.open=d=n[4].open},m(C,E){D(C,e,E),m(e,t),m(t,i),m(e,s),m(e,r),y[a].m(r,null),m(e,f),h=!0},p(C,E){n=C,(!h||E&1)&&l!==(l=n[4].item+"")&&J(i,l);let A=a;a=I(n,E),a===A?y[a].p(n,E):(ce(),N(y[A],1,1,()=>{y[A]=null}),fe(),c=y[a],c?c.p(n,E):(c=y[a]=v[a](n),c.c()),z(c,1),c.m(r,null)),(!h||E&1&&d!==(d=n[4].open))&&(e.open=d)},i(C){h||(z(c),h=!0)},o(C){N(c),h=!1},d(C){C&&_(e),y[a].d()}}}function Dc(n){let e,t,l=le(n[0]),i=[];for(let r=0;r<l.length;r+=1)i[r]=An(zn(n,l,r));const s=r=>N(i[r],1,1,()=>{i[r]=null});return{c(){e=p("div");for(let r=0;r<i.length;r+=1)i[r].c();this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);for(let a=0;a<i.length;a+=1)i[a].l(o);o.forEach(_),this.h()},h(){u(e,"class","component-accordion grid grid-cols-1 gap-1")},m(r,o){D(r,e,o);for(let a=0;a<i.length;a+=1)i[a]&&i[a].m(e,null);t=!0},p(r,[o]){if(o&3){l=le(r[0]);let a;for(a=0;a<l.length;a+=1){const c=zn(r,l,a);i[a]?(i[a].p(c,o),z(i[a],1)):(i[a]=An(c),i[a].c(),z(i[a],1),i[a].m(e,null))}for(ce(),a=l.length;a<i.length;a+=1)s(a);fe()}},i(r){if(!t){for(let o=0;o<l.length;o+=1)z(i[o]);t=!0}}
30,o(r){i=i.filter(Boolean);for(let o=0;o<i.length;o+=1)N(i[o]);t=!1},d(r){r&&_(e),Fe(i,r)}}}function zc(n,e,t){let{blocks:l=[]}=e;const i=[{id:"tbl",component:$t},{id:"lld",component:Cl},{id:"med",component:Yl}],s=(o,a)=>a.id===o.type,r=(o,a)=>a.id===o.type;return n.$$set=o=>{"blocks"in o&&t(0,l=o.blocks)},[l,i,s,r]}class mr extends ye{constructor(e){super(),we(this,e,zc,Dc,ve,{blocks:0})}}function Tn(n,e,t){const l=n.slice();return l[13]=e[t],l}function Ln(n){let e,t;const l=[n[0]];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new He({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},p(s,r){const o=r&1?Te(l,[Ve(s[0])]):{};e.$set(o)},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function Vn(n){let e,t=n[13].desc+"",l;return{c(){e=p("div"),l=j(t),this.h()},l(i){e=b(i,"DIV",{class:!0});var s=k(e);l=R(s,t),s.forEach(_),this.h()},h(){u(e,"class","pt-1 border-t border-bp-gray-middle")},m(i,s){D(i,e,s),m(e,l)},p(i,s){s&2&&t!==(t=i[13].desc+"")&&J(l,t)},d(i){i&&_(e)}}}function Fn(n){let e,t,l,i,s,r,o=n[13].text+"",a,c,f,d=n[2](n[13].type,"desc")+"",h,g,v=n[3](n[13].size)+"",y,I,C,E,A,S,B,F=n[13].desc&&Vn(n);return{c(){e=p("a"),t=p("div"),l=p("i"),s=T(),r=p("span"),a=j(o),c=T(),f=p("div"),h=j(d),g=j(": "),y=j(v),I=T(),F&&F.c(),C=T(),this.h()},l(V){e=b(V,"A",{class:!0,href:!0,target:!0,rel:!0,title:!0,download:!0});var M=k(e);t=b(M,"DIV",{class:!0});var U=k(t);l=b(U,"I",{class:!0,role:!0,tabindex:!0}),k(l).forEach(_),s=L(U),r=b(U,"SPAN",{class:!0});var W=k(r);
30a=R(W,o),W.forEach(_),U.forEach(_),c=L(M),f=b(M,"DIV",{class:!0});var O=k(f);h=R(O,d),g=R(O,": "),y=R(O,v),O.forEach(_),I=L(M),F&&F.l(M),C=L(M),M.forEach(_),this.h()},h(){u(l,"class",i="text-3xl fa-solid fa-file-"+n[2](n[13].type,"icon")),u(l,"role","presentation"),u(l,"tabindex","-1"),u(r,"class","inline-block"),u(t,"class","flex flex-row gap-1 items-center"),u(f,"class","text-xs"),u(e,"class","grid grid-rows-3 gap-1 p-2 text-bp-blue dark:text-white hover:underline border border-bp-gray-middle hover:shadow-md"),u(e,"href",E=n[13].link),u(e,"target",A=n[13].target),u(e,"rel","noopener noreferrer"),u(e,"title",S=n[13].link.split("/").pop()+" herunterladen"),u(e,"download",B=n[13].link.split("/").pop())},m(V,M){D(V,e,M),m(e,t),m(t,l),m(t,s),m(t,r),m(r,a),m(e,c),m(e,f),m(f,h),m(f,g),m(f,y),m(e,I),F&&F.m(e,null),m(e,C)},p(V,M){M&2&&i!==(i="text-3xl fa-solid fa-file-"+V[2](V[13].type,"icon"))&&u(l,"class",i),M&2&&o!==(o=V[13].text+"")&&J(a,o),M&2&&d!==(d=V[2](V[13].type,"desc")+"")&&J(h,d),M&2&&v!==(v=V[3](V[13].size)+"")&&J(y,v),V[13].desc?F?F.p(V,M):(F=Vn(V),F.c(),F.m(e,C)):F&&(F.d(1),F=null),M&2&&E!==(E=V[13].link)&&u(e,"href",E),M&2&&A!==(A=V[13].target)&&u(e,"target",A),M&2&&S!==(S=V[13].link.split("/").pop()+" herunterladen")&&u(e,"title",S),M&2&&B!==(B=V[13].link.split("/").pop())&&u(e,"download",B)},d(V){V&&_(e),F&&F.d()}}}function Ac(n){let e,t,l,i,s=n[0]&&Ln(n),r=le(n[1]),o=[];for(let a=0;a<r.length;a+=1)o[a]=Fn(Tn(n,r,a));return{c(){e=p("div"),s&&s.c(),t=T(),l=p("div");for(let a=0;a<o.length;a+=1)o[a].c();this.h()},l(a){e=b(a,"DIV",{class:!0});var c=k(e);s&&s.l(c),t=L(c),l=b(c,"DIV",{class:!0});var f=k(l);for(let d=0;d<o.length;d+=1)o[d].l(f);f.forEach(_),c.forEach(_),this.h()},h(){u(l,"class","grid "+n[4]()+" gap-2"),u(e,"class","component-downloads grid grid-cols-1 gap-8")},m(a,c){D(a,e,c),s&&s.m(e,null),m(e,t),m(e,l);for(let f=0;f<o.length;f+=1)o[f]&&o[f].m(l,null);i=!0},p(a,[c]){if(a[0]?s?(s.p(a,c),c&1&&z(s,1)):(s=Ln(a),s.c(),z(s,1),s.m(e,t)):s&&(ce(),N(s,1,1,()=>{s=null}),fe()),c&14){r=le(a[1]);let f;for(f=0;f<r.length;f+=1){const d=Tn(a,r,f);o[f]?o[f].p(d,c):(o[f]=Fn(d),o[f].c(),o[f].m(l,null))}for(;f<o.length;f+=1)o[f].d(1);o.length=r.length}},i(a){i||(z(s),i=!0)},o(a){N(s),i=!1},d(a){a&&_(e),s&&s.d(),Fe(o,a)}}}function Tc(n,e,t){let{text:l=null}=e,{link:i=null}=e,{size:s=null}=e,{desc:r=null}=e,{type:o=null}=e,{headline:a=null}=e,{target:c="_blank"}=e,{intable:f=!1}=e,{blocks:d=[]}=e;d.unshift({size:s,text:l,target:c,type:o,desc:r,link:i});const h=[{id:"jpg",icon:"image",desc:"JPG Bild"},{id:"svg",icon:"image",desc:"SVG Bild"},{id:"png",icon:"image",desc:"PNG Bild"},{id:"mp3",icon:"audio",desc:"MP3 Audio"},{id:"aac",icon:"audio",desc:"AAC Audio"},{id:"m2a",icon:"audio",desc:"M2A Audio"},{id:"m4a",icon:"audio",desc:"M4A Audio"},{id:"mp4",icon:"video",desc:"MP4 Video"},{id:"pdf",icon:"pdf",desc:"PDF Dokument"},{id:"docx",icon:"word",desc:"Word Dokument"},{id:"xlsx",icon:"excel",desc:"Excel Dokument"},{id:"pptx",icon:"powerpoint",desc:"Powerpoint Dokument"}],g=(I,C)=>h.find(A=>A.id===I)[C],v=(I,C=2)=>{if(I===0)return"0 Bytes";const E=1e3,A=["Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"],S=Math.floor(Math.log(I)/Math.log(E));return parseFloat((I/Math.pow(E,S)).toFixed(C))+" "+A[S]},y=()=>{let I=["grid-cols-1"];return!f&&d.length>1&&(I.push("sm:grid-cols-2"),d.length>2&&I.push("md:grid-cols-3"),d.length>3&&I.push("lg:grid-cols-4")),I.join(" ")};return n.$$set=I=>{"text"in I&&t(5,l=I.text),"link"in I&&t(6,i=I.link),"size"in I&&t(7,s=I.size),"desc"in I&&t(8,r=I.desc),"type"in I&&t(9,o=I.type),"headline"in I&&t(0,a=I.headline),"target"in I&&t(10,c=I.target),"intable"in I&&t(11,f=I.intable),"blocks"in I&&t(1,d=I.blocks)},[a,d,g,v,y,l,i,s,r,o,c,f]}class li extends ye{constructor(e){super(),we(this,e,Tc,Ac,ve,{text:5,link:6,size:7,desc:8,type:9,headline:0,target:10,intable:11,blocks:1})}}function Nn(n,e,t){const l=n.slice();return l[3]=e[t],l}function Mn(n){let e,t;const l=[{size:"h5"},{bpblue:!0},n[0]];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new He({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},p(s,r){const o=r&1?Te(l,[l[0],l[1],Ve(s[0])]):{};e.$set(o)},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function Lc(n){let e,t,l;return{c(){e=p("img"),this.h()},l(i){e=b(i,"IMG",{src:!0,alt:!0,role:!0,tabindex:!0}),this.h()},h(){pe(e.src,t=n[3].icon_list_icon)||u(e,"src",t),u(e,"alt",l=n[3].icon_list_title),u(e,"role","presentation"),u(e,"tabindex","-1")},m(i,s){D(i,e,s)},p(i,s){s&2&&!pe(e.src,t=i[3].icon_list_icon)&&u(e,"src",t),s&2&&l!==(l=i[3].icon_list_title)&&u(e,"alt",l)},d(i){i&&_(e)}}}function Vc(n){let e,t;return{c(){e=p("i"),this.h()},l(l){e=b(l,"I",{class:!0,role:!0,tabindex:!0}),k(e).forEach(_),this.h()},h(){u(e,"class",t="w-full h-full "+n[2](n[3].icon_blue)+" "+n[3].icon_list_icon),u(e,"role","presentation"),u(e,"tabindex","-1")},m(l,i){D(l,e,i)},p(l,i){i&2&&t!==(t="w-full h-full "+l[2](l[3].icon_blue)+" "+l[3].icon_list_icon)&&u(e,"class",t)},d(l){l&&_(e)}}}function Fc(n){let e,t=n[3].icon_list_title+"",l;return{c(){e=p("span"),l=j(t)},l(i){e=b(i,"SPAN",{});var s=k(e);
30l=R(s,t),s.forEach(_)},m(i,s){D(i,e,s),m(e,l)},p(i,s){s&2&&t!==(t=i[3].icon_list_title+"")&&J(l,t)},d(i){i&&_(e)}}}function Nc(n){let e,t,l=n[3].icon_list_title+"",i,s,r;return{c(){e=p("a"),t=p("span"),i=j(l),this.h()},l(o){e=b(o,"A",{class:!0,href:!0,target:!0,rel:!0});var a=k(e);t=b(a,"SPAN",{});var c=k(t);i=R(c,l),c.forEach(_),a.forEach(_),this.h()},h(){u(e,"class","text-bp-blue dark:text-white hover:underline"),u(e,"href",s=n[3].icon_list_href),u(e,"target",r=n[3].icon_list_target),u(e,"rel","noopener noreferrer")},m(o,a){D(o,e,a),m(e,t),m(t,i)},p(o,a){a&2&&l!==(l=o[3].icon_list_title+"")&&J(i,l),a&2&&s!==(s=o[3].icon_list_href)&&u(e,"href",s),a&2&&r!==(r=o[3].icon_list_target)&&u(e,"target",r)},d(o){o&&_(e)}}}function Bn(n){let e,t,l,i;function s(d,h){return d[3].icon_type==="icon"?Vc:Lc}let r=s(n),o=r(n);function a(d,h){return d[3].icon_list_href?Nc:Fc}let c=a(n),f=c(n);return{c(){e=p("div"),t=p("div"),o.c(),l=T(),f.c(),i=T(),this.h()},l(d){e=b(d,"DIV",{class:!0});var h=k(e);t=b(h,"DIV",{class:!0});var g=k(t);o.l(g),g.forEach(_),l=L(h),f.l(h),i=L(h),h.forEach(_),this.h()},h(){u(t,"class","w-[24px] h-[24px]"),u(e,"class","flex gap-2 items-center")},m(d,h){D(d,e,h),m(e,t),o.m(t,null),m(e,l),f.m(e,null),m(e,i)},p(d,h){r===(r=s(d))&&o?o.p(d,h):(o.d(1),o=r(d),o&&(o.c(),o.m(t,null))),c===(c=a(d))&&f?f.p(d,h):(f.d(1),f=c(d),f&&(f.c(),f.m(e,i)))},d(d){d&&_(e),o.d(),f.d()}}}function Mc(n){let e,t,l,i,s=n[0]&&Mn(n),r=le(n[1]),o=[];for(let a=0;a<r.length;a+=1)o[a]=Bn(Nn(n,r,a));return{c(){e=p("div"),s&&s.c(),t=T(),l=p("div");for(let a=0;a<o.length;a+=1)o[a].c();this.h()},l(a){e=b(a,"DIV",{class:!0});var c=k(e);s&&s.l(c),t=L(c),l=b(c,"DIV",{class:!0});var f=k(l);for(let d=0;d<o.length;d+=1)o[d].l(f);f.forEach(_),c.forEach(_),this.h()},h(){u(l,"class","grid grid-cols-1 gap-4"),u(e,"class","component-icon-text grid grid-cols-1 gap-8")},m(a,c){D(a,e,c),s&&s.m(e,null),m(e,t),m(e,l);for(let f=0;f<o.length;f+=1)o[f]&&o[f].m(l,null);i=!0},p(a,[c]){if(a[0]?s?(s.p(a,c),c&1&&z(s,1)):(s=Mn(a),s.c(),z(s,1),s.m(e,t)):s&&(ce(),N(s,1,1,()=>{s=null}),fe()),c&6){r=le(a[1]);let f;for(f=0;f<r.length;f+=1){const d=Nn(a,r,f);o[f]?o[f].p(d,c):(o[f]=Bn(d),o[f].c(),o[f].m(l,null))}for(;f<o.length;f+=1)o[f].d(1);o.length=r.length}},i(a){i||(z(s),i=!0)},o(a){N(s),i=!1},d(a){a&&_(e),s&&s.d(),Fe(o,a)}}}function Bc(n,e,t){let{headline:l=null}=e,{blocks:i=[]}=e;const s=(r=!1)=>r!==!1?"text-bp-blue":"text-black";return n.$$set=r=>{"headline"in r&&t(0,l=r.headline),"blocks"in r&&t(1,i=r.blocks)},[l,i,s]}class Pc extends ye{constructor(e){super(),we(this,e,Bc,Mc,ve,{headline:0,blocks:1})}}function Pn(n,e,t){const l=n.slice();return l[4]=e[t],l}function On(n){let e,t;const l=[n[0]];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new He({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},p(s,r){const o=r&1?Te(l,[Ve(s[0])]):{};e.$set(o)},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function jn(n){let e;return{c(){e=p("i"),this.h()},l(t){e=b(t,"I",{class:!0}),k(e).forEach(_),this.h()},h(){u(e,"class","fa-solid fa-circle text-[0.3rem] mr-2")},m(t,l){D(t,e,l)},d(t){t&&_(e)}}}function Rn(n){let e,t,l,i=n[3](n[4])+"",s,r=n[1]&&jn();return{c(){e=p("div"),r&&r.c(),t=T(),l=new je(!1),s=T(),this.h()},l(o){e=b(o,"DIV",{class:!0});var a=k(e);r&&r.l(a),t=L(a),l=We(a,!1),s=L(a),a.forEach(_),this.h()},h(){l.a=s,u(e,"class","flex items-center")},m(o,a){D(o,e,a),r&&r.m(e,null),m(e,t),l.m(i,e),m(e,s)},p(o,a){o[1]?r||(r=jn(),r.c(),r.m(e,t)):r&&(r.d(1),r=null),a&4&&i!==(i=o[3](o[4])+"")&&l.p(i)},d(o){o&&_(e),r&&r.d()}}}function Oc(n){let e,t,l,i,s=n[0]&&On(n),r=le(n[2]),o=[];for(let a=0;a<r.length;a+=1)o[a]=Rn(Pn(n,r,a));return{c(){e=p("div"),s&&s.c(),t=T(),l=p("div");for(let a=0;a<o.length;a+=1)o[a].c();this.h()},l(a){e=b(a,"DIV",{class:!0});var c=k(e);s&&s.l(c),t=L(c),l=b(c,"DIV",{class:!0});var f=k(l);for(let d=0;d<o.length;d+=1)o[d].l(f);f.forEach(_),c.forEach(_),this.h()},h(){u(l,"class","grid grid-cols-1 gap-2"),u(e,"class","component-autotoc grid grid-cols-1 gap-8")},m(a,c){D(a,e,c),s&&s.m(e,null),m(e,t),m(e,l);for(let f=0;f<o.length;f+=1)o[f]&&o[f].m(l,null);i=!0}
30,p(a,[c]){if(a[0]?s?(s.p(a,c),c&1&&z(s,1)):(s=On(a),s.c(),z(s,1),s.m(e,t)):s&&(ce(),N(s,1,1,()=>{s=null}),fe()),c&14){r=le(a[2]);let f;for(f=0;f<r.length;f+=1){const d=Pn(a,r,f);o[f]?o[f].p(d,c):(o[f]=Rn(d),o[f].c(),o[f].m(l,null))}for(;f<o.length;f+=1)o[f].d(1);o.length=r.length}},i(a){i||(z(s),i=!0)},o(a){N(s),i=!1},d(a){a&&_(e),s&&s.d(),Fe(o,a)}}}function jc(n,e,t){let{headline:l=null}=e,{use_icons:i=!1}=e,{blocks:s=[]}=e;l.is_toc=!0;const r=o=>`<${o.size}><a class="text-bp-blue hover:underline" href="${o.href}">${o.title}</a></${o.size}>`;return n.$$set=o=>{"headline"in o&&t(0,l=o.headline),"use_icons"in o&&t(1,i=o.use_icons),"blocks"in o&&t(2,s=o.blocks)},[l,i,s,r]}class Rc extends ye{constructor(e){super(),we(this,e,jc,Oc,ve,{headline:0,use_icons:1,blocks:2})}}function Un(n){let e,t;return{c(){e=p("div"),t=new je(!1),this.h()},l(l){e=b(l,"DIV",{});var i=k(e);t=We(i,!1),i.forEach(_),this.h()},h(){t.a=null},m(l,i){D(l,e,i),t.m(n[0],e)},p(l,i){i&1&&t.p(l[0])},d(l){l&&_(e)}}}function Uc(n){let e,t,l,i,s,r,o,a,c,f,d,h,g,v,y,I,C,E,A,S,B,F,V=n[0]&&Un(n);return{c(){e=p("div"),t=p("div"),l=j(n[1]),i=T(),s=p("div"),r=j(n[2]),o=T(),a=j(n[3]),c=T(),f=p("div"),d=j(n[4]),h=T(),g=j(n[5]),v=T(),y=p("div"),I=p("i"),C=j(n[6]),E=T(),A=p("div"),S=p("i"),B=j(n[7]),F=T(),V&&V.c(),this.h()},l(M){e=b(M,"DIV",{class:!0});var U=k(e);t=b(U,"DIV",{});var W=k(t);l=R(W,n[1]),W.forEach(_),i=L(U),s=b(U,"DIV",{});var O=k(s);r=R(O,n[2]),o=L(O),a=R(O,n[3]),O.forEach(_),c=L(U),f=b(U,"DIV",{});var ee=k(f);d=R(ee,n[4]),h=L(ee),g=R(ee,n[5]),ee.forEach(_),v=L(U),y=b(U,"DIV",{});var H=k(y);I=b(H,"I",{class:!0,role:!0,tabindex:!0}),k(I).forEach(_),C=R(H,n[6]),H.forEach(_),E=L(U),A=b(U,"DIV",{});var Q=k(A);S=b(Q,"I",{class:!0,role:!0,tabindex:!0}),k(S).forEach(_),B=R(Q,n[7]),Q.forEach(_),F=L(U),V&&V.l(U),U.forEach(_),this.h()},h(){u(I,"class","mr-2 fa-solid fa-phone text-bp-blue dark:text-white"),u(I,"role","presentation"),u(I,"tabindex","-1"),u(S,"class","mr-2 fa-solid fa-fax text-bp-blue dark:text-white"),u(S,"role","presentation"),u(S,"tabindex","-1"),u(e,"class","component-contact grid grid-cols-1 gap-1")},m(M,U){D(M,e,U),m(e,t),m(t,l),m(e,i),m(e,s),m(s,r),m(s,o),m(s,a),m(e,c),m(e,f),m(f,d),m(f,h),m(f,g),m(e,v),m(e,y),m(y,I),m(y,C),m(e,E),m(e,A),m(A,S),m(A,B),m(e,F),V&&V.m(e,null)},p(M,[U]){U&2&&J(l,M[1]),U&4&&J(r,M[2]),U&8&&J(a,M[3]),U&16&&J(d,M[4]),U&32&&J(g,M[5]),U&64&&J(C,M[6]),U&128&&J(B,M[7]),M[0]?V?V.p(M,U):(V=Un(M),V.c(),V.m(e,null)):V&&(V.d(1),V=null)},i:q,o:q,d(M){M&&_(e),V&&V.d()}}}function Hc(n,e,t){const l={method:"GET",headers:{Accept:"application/json"}};let{dstog2s:i="0900000000000"}=e,{dstinfo:s=null}=e,r=null,o=null,a=null,c=null,f=null,d=null,h=null,g;async function v(){g=(await(await fetch("/sa/dienststellen/dienststellen.json",l)).json()).find(C=>C.dstog2s===i),t(1,r=g.dstdesc),t(2,o=g.dststr),t(3,a=g.dsthnr),t(4,c=g.dstplz),t(5,f=g.dstgmdkt),g.dstmail,t(6,d=g.dsttele),t(7,h=g.dsttelf)}return v(),n.$$set=y=>{"dstog2s"in y&&t(8,i=y.dstog2s),"dstinfo"in y&&t(0,s=y.dstinfo)},[s,r,o,a,c,f,d,h,i]}class ii extends ye{constructor(e){super(),we(this,e,Hc,Uc,ve,{dstog2s:8,dstinfo:0})}}function Hn(n){let e,t;const l=[n[0]];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new He({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},p(s,r){const o=r&1?Te(l,[Ve(s[0])]):{};e.$set(o)},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function Kc(n){let e,t,l,i,s=n[2]()+"",r,o=n[0]&&Hn(n);return{c(){e=p("div"),o&&o.c(),t=T(),l=p("div"),i=new je(!1),this.h()},l(a){e=b(a,"DIV",{class:!0});var c=k(e);o&&o.l(c),t=L(c),l=b(c,"DIV",{class:!0});var f=k(l);i=We(f,!1),f.forEach(_),c.forEach(_),this.h()},h(){i.a=null,u(l,"class",n[1]),u(e,"class","component-list grid grid-cols-1 gap-8")},m(a,c){D(a,e,c),o&&o.m(e,null),m(e,t),m(e,l),i.m(s,l),r=!0},p(a,[c]){a[0]?o?(o.p(a,c),c&1&&z(o,1)):(o=Hn(a),o.c(),z(o,1),o.m(e,t)):o&&(ce(),N(o,1,1,()=>{o=null}),fe()),(!r||c&2)&&u(l,"class",a[1])},i(a){r||(z(o),r=!0)},o(a){N(o),r=!1},d(a){a&&_(e),o&&o.d()}}}function qc(n,e,t){let l,{headline:i=null}=e,{type:s="ul"}=e,{icon:r=null}=e,{blocks:o=[]}=e;const a=()=>r?[{square:"list-[square]",disc:"list-[disc]",circle:"list-[circle]",decimal:"list-[decimal]","lower-roman":"list-[lower-roman]","upper-roman":"list-[upper-roman]","lower-latin":"list-[lower-latin]","upper-latin":"list-[upper-latin]"}[r]].join(" "):"",c=()=>{let f="";return s==="dl"?(f='<dl class="grid grid-cols-1 gap-2">',o.map(d=>{f+='<div class="dl-entry">',f+=`<dt class="underline">${d.item}</dt>`,f+=`<dd>${d.item_dd}</dd>`,f+="</div>"})):(f=`<${s} role="list" class="grid grid-cols-1 gap-2 ${a()}">`,o.map(d=>{f+=`<li class="${s}-entry" role="presentation" tabindex="-1">${d.item}</li>`})),f+=`</${s}>`,f};return n.$$set=f=>{"headline"in f&&t(0,i=f.headline),"type"in f&&t(3,s=f.type),"icon"in f&&t(4,r=f.icon),"blocks"in f&&t(5,o=f.blocks)},n.$$.update=()=>{n.$$.dirty&8&&t(1,l=s==="dl"?"":"pl-4")},[i,l,c,s,r,o]}class gr extends ye{constructor(e){super(),we(this,e,qc,Kc,ve,{headline:0,type:3,icon:4,blocks:5})}}function Kn(n){let e,t;return e=new He({props:{size:"h5",title:n[0],bpblue:!0}}),{c(){se(e.$$.fragment)},l(l){he(e.$$.fragment,l)},m(l,i){ie(e,l,i),t=!0},p(l,i){const s={};i&1&&(s.title=l[0]),e.$set(s)},i(l){t||(z(e.$$.fragment,l),t=!0)},o(l){N(e.$$.fragment,l),t=!1},d(l){ne(e,l)}
30}}function Gc(n){let e,t=n[8].message+"",l;return{c(){e=p("p"),l=j(t),this.h()},l(i){e=b(i,"P",{style:!0});var s=k(e);l=R(s,t),s.forEach(_),this.h()},h(){lt(e,"color","red")},m(i,s){D(i,e,s),m(e,l)},p(i,s){s&2&&t!==(t=i[8].message+"")&&J(l,t)},i:q,o:q,d(i){i&&_(e)}}}function Wc(n){let e,t,l,i,s,r;function o(...d){return n[4](n[7],...d)}const a=[Yc,Zc],c=[];function f(d,h){return h&2&&(t=null),t==null&&(t=!!d[2].find(o)),t?0:1}return l=f(n,-1),i=c[l]=a[l](n),{c(){e=p("div"),i.c(),this.h()},l(d){e=b(d,"DIV",{class:!0});var h=k(e);i.l(h),h.forEach(_),this.h()},h(){u(e,"class",s="flexmodul-"+n[7].flexmodule.name)},m(d,h){D(d,e,h),c[l].m(e,null),r=!0},p(d,h){n=d;let g=l;l=f(n,h),l===g?c[l].p(n,h):(ce(),N(c[g],1,1,()=>{c[g]=null}),fe(),i=c[l],i?i.p(n,h):(i=c[l]=a[l](n),i.c()),z(i,1),i.m(e,null)),(!r||h&2&&s!==(s="flexmodul-"+n[7].flexmodule.name))&&u(e,"class",s)},i(d){r||(z(i),r=!0)},o(d){N(i),r=!1},d(d){d&&_(e),c[l].d()}}}function Zc(n){let e,t,l=n[7].flexmodule.name+"",i,s;return{c(){e=p("div"),t=j("Komponente "),i=j(l),s=j(" nicht gefunden"),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);t=R(o,"Komponente "),i=R(o,l),s=R(o," nicht gefunden"),o.forEach(_),this.h()},h(){u(e,"class","text-red-500")},m(r,o){D(r,e,o),m(e,t),m(e,i),m(e,s)},p(r,o){o&2&&l!==(l=r[7].flexmodule.name+"")&&J(i,l)},i:q,o:q,d(r){r&&_(e)}}}function Yc(n){let e,t,l;const i=[n[7].flexmodule.props];function s(...a){return n[5](n[7],...a)}var r=n[2].find(s).component;function o(a,c){let f={};for(let d=0;d<i.length;d+=1)f=Ee(f,i[d]);return c!==void 0&&c&2&&(f=Ee(f,Te(i,[Ve(a[7].flexmodule.props)]))),{props:f}}return r&&(e=Ye(r,o(n))),{c(){e&&se(e.$$.fragment),t=Z()},l(a){e&&he(e.$$.fragment,a),t=Z()},m(a,c){e&&ie(e,a,c),D(a,t,c),l=!0},p(a,c){if(n=a,c&2&&r!==(r=n[2].find(s).component)){if(e){ce();const f=e;N(f.$$.fragment,1,0,()=>{ne(f,1)}),fe()}r?(e=Ye(r,o(n,c)),se(e.$$.fragment),z(e.$$.fragment,1),ie(e,t.parentNode,t)):e=null}else if(r){const f=c&2?Te(i,[Ve(n[7].flexmodule.props)]):{};e.$set(f)}},i(a){l||(e&&z(e.$$.fragment,a),l=!0)},o(a){e&&N(e.$$.fragment,a),l=!1},d(a){a&&_(t),e&&ne(e,a)}}}function Jc(n){let e,t="Einen kleinen Moment bitte...";return{c(){e=p("p"),e.textContent=t},l(l){e=b(l,"P",{"data-svelte-h":!0}),ze(e)!=="svelte-1us4m93"&&(e.textContent=t)},m(l,i){D(l,e,i)},p:q,i:q,o:q,d(l){l&&_(e)}}}function Xc(n){let e,t,l,i,s=n[0]&&Kn(n),r={ctx:n,current:null,token:null,hasCatch:!0,pending:Jc,then:Wc,catch:Gc,value:7,error:8,blocks:[,,,]};return wl(l=n[1],r),{c(){e=p("div"),s&&s.c(),t=T(),r.block.c(),this.h()},l(o){e=b(o,"DIV",{class:!0});var a=k(e);s&&s.l(a),t=L(a),r.block.l(a),a.forEach(_),this.h()},h(){u(e,"class","grid grid-cols-1 gap-2")},m(o,a){D(o,e,a),s&&s.m(e,null),m(e,t),r.block.m(e,r.anchor=null),r.mount=()=>e,r.anchor=null,i=!0},p(o,[a]){n=o,n[0]?s?(s.p(n,a),a&1&&z(s,1)):(s=Kn(n),s.c(),z(s,1),s.m(e,t)):s&&(ce(),N(s,1,1,()=>{s=null}),fe()),r.ctx=n,a&2&&l!==(l=n[1])&&wl(l,r)||ar(r,n,a)},i(o){i||(z(s),z(r.block),i=!0)},o(o){N(s);for(let a=0;a<3;a+=1){const c=r.blocks[a];N(c)}i=!1},d(o){o&&_(e),s&&s.d(),r.block.d(),r.token=null,r=null}}}function Qc(n,e,t){let{selection:l=null}=e,{name:i=null}=e;const s=[{id:"textblock-image",component:$t},{id:"accordion",component:mr},{id:"download",component:li},{id:"linklist",component:Cl},{id:"contact",component:ii},{id:"list",component:gr}];let r;async function o(){if(!l)return;let d=await fetch(l,{method:"GET",headers:{Accept:"application/json"}});return d.ok?await d.json():{flexmodule:{name:null}}}r=o();const a=(f,d)=>d.id===f.flexmodule.name,c=(f,d)=>d.id===f.flexmodule.name;return n.$$set=f=>{"selection"in f&&t(3,l=f.selection),"name"in f&&t(0,i=f.name)},[i,r,s,l,a,c]}class xc extends ye{constructor(e){super(),we(this,e,Qc,Xc,ve,{selection:3,name:0})}}function $c(n){let e,t=`Auf unserer Website werden âTweetsâ aus Twitter eingebunden, um Ihnen relevante Inhalte aus diesem Netzwerk 31 anzubieten. Wir benötigen ihre Zustimmung, um Inhalte aus Twitter von @PolizeiBayern anzeigen zu können. 32 <br/> 33 Dieser Service kann Daten über Ihre Aktivitäten sammeln.<br/><br/> 34 Ãber die Cookie-Einstellungen können Sie ihre Zustimmung erteilen.`;return{c(){e=p("p"),e.innerHTML=t,this.h()},l(l){e=b(l,"P",{class:!0,"data-svelte-h":!0}),ze(e)!=="svelte-j23pqt"&&(e.innerHTML=t),this.h()},h(){u(e,"class","m-0")},m(l,i){D(l,e,i)},p:q,d(l){l&&_(e)}}}function ef(n){let e,t;return{c(){e=p("a"),t=j("lade Tweets..."),this.h()},l(l){e=b(l,"A",{class:!0,"data-lang":!0,"data-height":!0,"data-dnt":!0,href:!0});var i=k(e);
34t=R(i,"lade Tweets..."),i.forEach(_),this.h()},h(){u(e,"class","twitter-timeline"),u(e,"data-lang","de"),u(e,"data-height","1000"),u(e,"data-dnt","true"),u(e,"href",n[0])},m(l,i){D(l,e,i),m(e,t)},p(l,i){i&1&&u(e,"href",l[0])},d(l){l&&_(e)}}}function tf(n){let e;function t(s,r){return s[1]?ef:$c}let l=t(n),i=l(n);return{c(){e=p("div"),i.c(),this.h()},l(s){e=b(s,"DIV",{class:!0});var r=k(e);i.l(r),r.forEach(_),this.h()},h(){u(e,"class","component-twitter")},m(s,r){D(s,e,r),i.m(e,null)},p(s,[r]){l===(l=t(s))&&i?i.p(s,r):(i.d(1),i=l(s),i&&(i.c(),i.m(e,null)))},i:q,o:q,d(s){s&&_(e),i.d()}}}function lf(n,e,t){let l,i=!1;cr.subscribe(r=>{t(2,i=r)});let{url:s=null}=e;return n.$$set=r=>{"url"in r&&t(0,s=r.url)},n.$$.update=()=>{n.$$.dirty&4&&t(1,l=i)},[s,l,i]}class nf extends ye{constructor(e){super(),we(this,e,lf,tf,ve,{url:0})}}function sf(n){let e;return{c(){e=p("hr"),this.h()},l(t){e=b(t,"HR",{class:!0,role:!0,tabindex:!0}),this.h()},h(){u(e,"class","text-bp-gray-middle bg-bp-gray-middle h-[1px]"),u(e,"role","presentation"),u(e,"tabindex","-1")},m(t,l){D(t,e,l)},p:q,i:q,o:q,d(t){t&&_(e)}}}class rf extends ye{constructor(e){super(),we(this,e,null,sf,ve,{})}}function qn(n){let e,t;const l=[n[1]];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new He({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},p(s,r){const o=r&2?Te(l,[Ve(s[1])]):{};e.$set(o)},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function of(n){let e,t,l,i,s;return{c(){e=p("div"),t=p("iframe"),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);t=b(o,"IFRAME",{title:!0,src:!0,width:!0,height:!0}),k(t).forEach(_),o.forEach(_),this.h()}
34,h(){u(t,"title","iFrame"),pe(t.src,l=n[3].src)||u(t,"src",l),u(t,"width",i=n[3].width),u(t,"height",s=n[3].height),u(e,"class","flex "+n[4]())},m(r,o){D(r,e,o),m(e,t)},p(r,o){o&8&&!pe(t.src,l=r[3].src)&&u(t,"src",l),o&8&&i!==(i=r[3].width)&&u(t,"width",i),o&8&&s!==(s=r[3].height)&&u(t,"height",s)},d(r){r&&_(e)}}}function af(n){let e,t;return{c(){e=p("div"),t=new je(!1),this.h()},l(l){e=b(l,"DIV",{class:!0});var i=k(e);t=We(i,!1),i.forEach(_),this.h()},h(){t.a=null,u(e,"class","flex embed-code")},m(l,i){D(l,e,i),t.m(n[2],e)},p(l,i){i&4&&t.p(l[2])},d(l){l&&_(e)}}}function cf(n){let e,t,l,i,s,r=n[1]&&qn(n);function o(f,d){return f[0]==="code"?af:of}let a=o(n),c=a(n);return{c(){e=p("div"),r&&r.c(),t=T(),c.c(),l=T(),i=j(n[0]),this.h()},l(f){e=b(f,"DIV",{class:!0});var d=k(e);r&&r.l(d),t=L(d),c.l(d),l=L(d),i=R(d,n[0]),d.forEach(_),this.h()},h(){u(e,"class","component-embed grid grid-cols-1 gap-8")},m(f,d){D(f,e,d),r&&r.m(e,null),m(e,t),c.m(e,null),m(e,l),m(e,i),s=!0},p(f,[d]){f[1]?r?(r.p(f,d),d&2&&z(r,1)):(r=qn(f),r.c(),z(r,1),r.m(e,t)):r&&(ce(),N(r,1,1,()=>{r=null}),fe()),a===(a=o(f))&&c?c.p(f,d):(c.d(1),c=a(f),c&&(c.c(),c.m(e,l))),(!s||d&1)&&J(i,f[0])},i(f){s||(z(r),s=!0)},o(f){N(r),s=!1},d(f){f&&_(e),r&&r.d(),c.d()}}}function ff(n,e,t){let{media:l=null}=e,{headline:i={}}=e,{iwe2:s=null}=e,{data:r=null}=e;const o=()=>{let a="justify-start";return r.justification==="text-center"?a="justify-center":r.justification==="text-right"&&(a="justify-end"),a};return n.$$set=a=>{"media"in a&&t(0,l=a.media),"headline"in a&&t(1,i=a.headline),"iwe2"in a&&t(2,s=a.iwe2),"data"in a&&t(3,r=a.data)},[l,i,s,r,o]}class uf extends ye{constructor(e){super(),we(this,e,ff,cf,ve,{media:0,headline:1,iwe2:2,data:3})}}function Gn(n,e,t){const l=n.slice();return l[9]=e[t],l}function Wn(n,e,t){const l=n.slice();return l[12]=e[t],l}function Zn(n,e,t){const l=n.slice();return l[12]=e[t],l[16]=t,l}function df(n){let e,t=n[0].caption+"",l;return{c(){e=p("caption"),l=j(t),this.h()},l(i){e=b(i,"CAPTION",{class:!0});var s=k(e);l=R(s,t),s.forEach(_),this.h()},h(){u(e,"class","table-caption text-left py-2 svelte-kiqyi7")},m(i,s){D(i,e,s),m(e,l)},p:q,d(i){i&&_(e)}}}function hf(n){let e,t=le(n[0].header.rows.cols),l=[];for(let i=0;i<t.length;i+=1)l[i]=Yn(Zn(n,t,i));return{c(){e=p("thead");for(let i=0;i<l.length;i+=1)l[i].c()},l(i){e=b(i,"THEAD",{});var s=k(e);for(let r=0;r<l.length;r+=1)l[r].l(s);s.forEach(_)},m(i,s){D(i,e,s);for(let r=0;r<l.length;r+=1)l[r]&&l[r].m(e,null)},p(i,s){if(s&5){t=le(i[0].header.rows.cols);let r;for(r=0;r<t.length;r+=1){const o=Zn(i,t,r);l[r]?l[r].p(o,s):(l[r]=Yn(o),l[r].c(),l[r].m(e,null))}for(;r<l.length;r+=1)l[r].d(1);l.length=t.length}},d(i){i&&_(e),Fe(l,i)}}}function Yn(n){let e,t=n[12].text+"",l;return{c(){e=p("th"),l=j(t),this.h()},l(i){e=b(i,"TH",{class:!0});var s=k(e);l=R(s,t),s.forEach(_),this.h()},h(){u(e,"class","p-2 text-black dark:text-white bg-bp-gray-light dark:bg-black "+n[2](n[12]))},m(i,s){D(i,e,s),m(e,l)},p:q,d(i){i&&_(e)}}}function _f(n){let e,t,l=le(n[0].body.rows),i=[];for(let r=0;r<l.length;r+=1)i[r]=Xn(Gn(n,l,r));const s=r=>N(i[r],1,1,()=>{i[r]=null});return{c(){e=p("tbody");for(let r=0;r<i.length;r+=1)i[r].c()},l(r){e=b(r,"TBODY",{});var o=k(e);for(let a=0;a<i.length;a+=1)i[a].l(o);o.forEach(_)},m(r,o){D(r,e,o);for(let a=0;a<i.length;a+=1)i[a]&&i[a].m(e,null);t=!0},p(r,o){if(o&121){l=le(r[0].body.rows);let a;for(a=0;a<l.length;a+=1){const c=Gn(r,l,a);i[a]?(i[a].p(c,o),z(i[a],1)):(i[a]=Xn(c),i[a].c(),z(i[a],1),i[a].m(e,null))}for(ce(),a=l.length;a<i.length;a+=1)s(a);fe()}},i(r){if(!t){for(let o=0;o<l.length;o+=1)z(i[o]);t=!0}}
34,o(r){i=i.filter(Boolean);for(let o=0;o<i.length;o+=1)N(i[o]);t=!1},d(r){r&&_(e),Fe(i,r)}}}function mf(n){let e,t;return e=new $t({props:{iwe2:n[12].fields.textarea}}),{c(){se(e.$$.fragment)},l(l){he(e.$$.fragment,l)},m(l,i){ie(e,l,i),t=!0},p:q,i(l){t||(z(e.$$.fragment,l),t=!0)},o(l){N(e.$$.fragment,l),t=!1},d(l){ne(e,l)}}}function gf(n){let e,t;return e=new ii({props:{dstog2s:n[12].fields.og2s}}),{c(){se(e.$$.fragment)},l(l){he(e.$$.fragment,l)},m(l,i){ie(e,l,i),t=!0},p:q,i(l){t||(z(e.$$.fragment,l),t=!0)},o(l){N(e.$$.fragment,l),t=!1},d(l){ne(e,l)}}}function pf(n){let e,t;const l=[n[4](n[12])];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new ti({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},p(s,r){const o=r&17?Te(l,[Ve(s[4](s[12]))]):{};e.$set(o)},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function bf(n){let e,t;const l=[n[5](n[12])];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new Cl({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},p(s,r){const o=r&33?Te(l,[Ve(s[5](s[12]))]):{};e.$set(o)},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function kf(n){let e,t;const l=[{intable:!0},n[6](n[12])];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new li({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},p(s,r){const o=r&65?Te(l,[l[0],Ve(s[6](s[12]))]):{};e.$set(o)},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function Jn(n){let e,t,l,i,s,r,o=n[12].type==="cellText"&&mf(n),a=n[12].type==="cellContact"&&gf(n),c=n[12].type==="cellImage"&&pf(n),f=n[12].type==="cellLink"&&bf(n),d=n[12].type==="cellDownload"&&kf(n);return{c(){e=p("td"),o&&o.c(),t=T(),a&&a.c(),l=T(),c&&c.c(),i=T(),f&&f.c(),s=T(),d&&d.c(),this.h()},l(h){e=b(h,"TD",{class:!0});var g=k(e);o&&o.l(g),t=L(g),a&&a.l(g),l=L(g),c&&c.l(g),i=L(g),f&&f.l(g),s=L(g),d&&d.l(g),g.forEach(_),this.h()},h(){u(e,"class","dark:bg-black align-top p-2 "+n[3](n[12]))},m(h,g){D(h,e,g),o&&o.m(e,null),m(e,t),a&&a.m(e,null),m(e,l),c&&c.m(e,null),m(e,i),f&&f.m(e,null),m(e,s),d&&d.m(e,null),r=!0},p(h,g){h[12].type==="cellText"&&o.p(h,g),h[12].type==="cellContact"&&a.p(h,g),h[12].type==="cellImage"&&c.p(h,g),h[12].type==="cellLink"&&f.p(h,g),h[12].type==="cellDownload"&&d.p(h,g)},i(h){r||(z(o),z(a),z(c),z(f),z(d),r=!0)},o(h){N(o),N(a),N(c),N(f),N(d),r=!1},d(h){h&&_(e),o&&o.d(),a&&a.d(),c&&c.d(),f&&f.d(),d&&d.d()}}}function Xn(n){let e,t,l,i=le(n[9].cols),s=[];for(let o=0;o<i.length;o+=1)s[o]=Jn(Wn(n,i,o));const r=o=>N(s[o],1,1,()=>{s[o]=null});return{c(){e=p("tr");for(let o=0;o<s.length;o+=1)s[o].c();t=T()},l(o){e=b(o,"TR",{});var a=k(e);for(let c=0;c<s.length;c+=1)s[c].l(a);t=L(a),a.forEach(_)},m(o,a){D(o,e,a);for(let c=0;c<s.length;c+=1)s[c]&&s[c].m(e,null);m(e,t),l=!0},p(o,a){if(a&121){i=le(o[9].cols);let c;for(c=0;c<i.length;c+=1){const f=Wn(o,i,c);s[c]?(s[c].p(f,a),z(s[c],1)):(s[c]=Jn(f),s[c].c(),z(s[c],1),s[c].m(e,t))}for(ce(),c=i.length;c<s.length;c+=1)r(c);fe()}},i(o){if(!l){for(let a=0;a<i.length;a+=1)z(s[a]);l=!0}},o(o){s=s.filter(Boolean);for(let a=0;a<s.length;a+=1)N(s[a]);l=!1},d(o){o&&_(e),Fe(s,o)}}}function vf(n){let e,t,l,i,s,r=n[0].caption&&df(n),o=n[0].header&&n[0].header.rows&&n[0].header.rows.cols&&hf(n),a=n[0].body&&n[0].body.rows&&_f(n);return{c(){e=p("div"),t=p("table"),r&&r.c(),l=T(),o&&o.c(),i=T(),a&&a.c(),this.h()},l(c){e=b(c,"DIV",{class:!0});var f=k(e);
34t=b(f,"TABLE",{class:!0});var d=k(t);r&&r.l(d),l=L(d),o&&o.l(d),i=L(d),a&&a.l(d),d.forEach(_),f.forEach(_),this.h()},h(){u(t,"class",n[1]()),u(e,"class","component-table")},m(c,f){D(c,e,f),m(e,t),r&&r.m(t,null),m(t,l),o&&o.m(t,null),m(t,i),a&&a.m(t,null),s=!0},p(c,[f]){c[0].caption&&r.p(c,f),c[0].header&&c[0].header.rows&&c[0].header.rows.cols&&o.p(c,f),c[0].body&&c[0].body.rows&&a.p(c,f)},i(c){s||(z(a),s=!0)},o(c){N(a),s=!1},d(c){c&&_(e),r&&r.d(),o&&o.d(),a&&a.d()}}}function wf(n,e,t){let{content:l=null}=e;const i=JSON.parse(l)||{},s=()=>{let d=[];return i.width==="auto"?d.push("table-auto"):parseInt(i.width)===50?d.push("w-1/2"):parseInt(i.width)===60?d.push("w-3/5"):parseInt(i.width)===70?d.push("w-7/10"):parseInt(i.width)===80?d.push("w-4/5"):parseInt(i.width)===90?d.push("w-9/10"):parseInt(i.width)===100&&d.push("w-full"),i.border!=="none"&&(d.push("border border-collapse border-bp-gray-middle"),i.border==="middle"?d.push("border-2"):i.border==="thick"&&d.push("border-4")),d.join(" ")},r=d=>{let h=[];if(i.border!=="none"&&(h.push("border border-bp-gray-middle"),i.border==="middle"?h.push("border-2"):i.border==="thick"&&h.push("border-4")),parseInt(d.width)){const g=parseInt(d.width);g===0?h.push("w-auto"):g===5?h.push("w-[5%]"):g===10?h.push("w-[10%]"):g===15?h.push("w-[15%]"):g===20?h.push("w-[20%]"):g===25?h.push("w-[25%]"):g===30?h.push("w-[30%]"):g===35?h.push("w-[35%]"):g===40?h.push("w-[40%]"):g===45?h.push("w-[45%]"):g===50?h.push("w-[50%]"):g===55?h.push("w-[55%
34]"):g===60?h.push("w-[60%]"):g===65?h.push("w-[65%]"):g===70?h.push("w-[70%]"):g===75?h.push("w-[75%]"):g===80?h.push("w-[80%]"):g===85?h.push("w-[85%]"):g===90?h.push("w-[90%]"):g===95?h.push("w-[95%]"):g===100&&h.push("w-full")}return h.join(" ")},o=d=>{let h=[];return i.border!=="none"&&(h.push("border border-bp-gray-middle"),i.border==="middle"?h.push("border-2"):i.border==="thick"&&h.push("border-4")),d.align==="right"?h.push("text-right"):d.align==="center"?h.push("text-center"):h.push("text-left"),d.color==="grey"?h.push("bg-bp-gray-middle"):d.align==="lightgrey"?h.push("bg-bp-gray-light"):d.align==="darkgrey"&&h.push("bg-bp-gray-dark"),h.join(" ")},a=d=>({title:d.fields.img.title,alt:d.fields.img.alt,show_desc:!1,hero:!1,justification:null,copyright:null,withcopy:!1,download:d.fields.img.is_down,zoom:d.fields.img.is_zoom,img:{xs:d.fields.img.norm,sm:d.fields.img.norm,md:d.fields.img.zoom?d.fields.img.zoom:d.fields.img.norm,xl:d.fields.img.zoom?d.fields.img.zoom:d.fields.img.norm,dz:d.fields.img.down?d.fields.img.down:d.fields.img.href}}),c=d=>({links:[{target:d.fields.a.target,title:d.fields.a.title,href:d.fields.a.href,alt:d.fields.a.desc}]}),f=d=>({target:d.fields.a.target,text:d.fields.a.title,link:d.fields.a.href,size:d.fields.a.size,desc:d.fields.a.desc,type:d.fields.a.type});return n.$$set=d=>{"content"in d&&t(7,l=d.content)},[i,s,r,o,a,c,f,l]}class yf extends ye{constructor(e){super(),we(this,e,wf,vf,ve,{content:7})}}function Qn(n,e,t){const l=n.slice();return l[5]=e[t],l[7]=t,l}function xn(n){let e,t,l=le(n[0]),i=[];for(let r=0;r<l.length;r+=1)i[r]=$n(Qn(n,l,r));const s=r=>N(i[r],1,1,()=>{i[r]=null});return{c(){e=p("div");for(let r=0;r<i.length;r+=1)i[r].c();this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);for(let a=0;a<i.length;a+=1)i[a].l(o);o.forEach(_),this.h()},h(){u(e,"class","grid grid-cols-1 gap-8")},m(r,o){D(r,e,o);for(let a=0;a<i.length;a+=1)i[a]&&i[a].m(e,null);t=!0},p(r,o){if(o&7){l=le(r[0]);let a;for(a=0;a<l.length;a+=1){const c=Qn(r,l,a);i[a]?(i[a].p(c,o),z(i[a],1)):(i[a]=$n(c),i[a].c(),z(i[a],1),i[a].m(e,null))}for(ce(),a=l.length;a<i.length;a+=1)s(a);fe()}},i(r){if(!t){for(let o=0;o<l.length;o+=1)z(i[o]);t=!0}}
34,o(r){i=i.filter(Boolean);for(let o=0;o<i.length;o+=1)N(i[o]);t=!1},d(r){r&&_(e),Fe(i,r)}}}function Ef(n){let e,t,l=n[5].name+"",i,s;return{c(){e=p("div"),t=j("Komponente "),i=j(l),s=j(" nicht gefunden"),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);t=R(o,"Komponente "),i=R(o,l),s=R(o," nicht gefunden"),o.forEach(_),this.h()},h(){u(e,"class","text-red-500")},m(r,o){D(r,e,o),m(e,t),m(e,i),m(e,s)},p(r,o){o&1&&l!==(l=r[5].name+"")&&J(i,l)},i:q,o:q,d(r){r&&_(e)}}}function If(n){let e,t,l;const i=[{slot:parseInt(n[1])},{media:n[5].media},{orientation:n[5].orientation},n[5].props];function s(...a){return n[4](n[5],...a)}var r=n[2].find(s).component;function o(a,c){let f={};for(let d=0;d<i.length;d+=1)f=Ee(f,i[d]);return c!==void 0&&c&3&&(f=Ee(f,Te(i,[c&2&&{slot:parseInt(a[1])},c&1&&{media:a[5].media},c&1&&{orientation:a[5].orientation},c&1&&Ve(a[5].props)]))),{props:f}}return r&&(e=Ye(r,o(n))),{c(){e&&se(e.$$.fragment),t=Z()},l(a){e&&he(e.$$.fragment,a),t=Z()},m(a,c){e&&ie(e,a,c),D(a,t,c),l=!0},p(a,c){if(n=a,c&1&&r!==(r=n[2].find(s).component)){if(e){ce();const f=e;N(f.$$.fragment,1,0,()=>{ne(f,1)}),fe()}r?(e=Ye(r,o(n,c)),se(e.$$.fragment),z(e.$$.fragment,1),ie(e,t.parentNode,t)):e=null}else if(r){const f=c&3?Te(i,[c&2&&{slot:parseInt(n[1])},c&1&&{media:n[5].media},c&1&&{orientation:n[5].orientation},c&1&&Ve(n[5].props)]):{};e.$set(f)}},i(a){l||(e&&z(e.$$.fragment,a),l=!0)},o(a){e&&N(e.$$.fragment,a),l=!1},d(a){a&&_(t),e&&ne(e,a)}}}function $n(n){let e,t,l,i,s,r,o;function a(...h){return n[3](n[5],...h)}const c=[If,Ef],f=[];function d(h,g){return g&1&&(t=null),t==null&&(t=!!h[2].find(a)),t?0:1}return l=d(n,-1),i=f[l]=c[l](n),{c(){e=p("div"),i.c(),s=T(),this.h()},l(h){e=b(h,"DIV",{class:!0});var g=k(e);i.l(g),s=L(g),g.forEach(_),this.h()},h(){u(e,"class",r="flexmodul-"+n[5].name+"-"+n[7])},m(h,g){D(h,e,g),f[l].m(e,null),m(e,s),o=!0},p(h,g){n=h;let v=l;l=d(n,g),l===v?f[l].p(n,g):(ce(),N(f[v],1,1,()=>{f[v]=null}),fe(),i=f[l],i?i.p(n,g):(i=f[l]=c[l](n),i.c()),z(i,1),i.m(e,s)),(!o||g&1&&r!==(r="flexmodul-"+n[5].name+"-"+n[7]))&&u(e,"class",r)},i(h){o||(z(i),o=!0)},o(h){N(i),o=!1},d(h){h&&_(e),f[l].d()}}}function Cf(n){let e,t,l=n[0].length&&xn(n);return{c(){l&&l.c(),e=Z()},l(i){l&&l.l(i),e=Z()},m(i,s){l&&l.m(i,s),D(i,e,s),t=!0},p(i,[s]){i[0].length?l?(l.p(i,s),s&1&&z(l,1)):(l=xn(i),l.c(),z(l,1),l.m(e.parentNode,e)):l&&(ce(),N(l,1,1,()=>{l=null}),fe())},i(i){t||(z(l),t=!0)},o(i){N(l),t=!1},d(i){i&&_(e),l&&l.d(i)}}}function Sf(n,e,t){let{flexmodules:l=[]}=e,{slot:i=1}=e;const s=[{id:"textblock-image",component:$t},{id:"imagegallery",component:Ka},{id:"directions",component:Wa},{id:"accordion",component:mr},{id:"download",component:li},{id:"icon-list",component:Pc},{id:"headline",component:He},{id:"linklist",component:Cl},{id:"auto-toc",component:Rc},{id:"contact",component:ii},{id:"infobox",component:xc},{id:"twitter",component:nf},{id:"spacer",component:rf},{id:"media",component:Yl},{id:"table",component:yf},{id:"media",component:Yl},{id:"embed",component:uf},{id:"list",component:gr}],r=(a,c)=>c.id===a.name,o=(a,c)=>c.id===a.name;return n.$$set=a=>{"flexmodules"in a&&t(0,l=a.flexmodules),"slot"in a&&t(1,i=a.slot)},[l,i,s,r,o]}class ni extends ye{constructor(e){super(),we(this,e,Sf,Cf,ve,{flexmodules:0,slot:1})}}function es(n,e,t){const l=n.slice();return l[4]=e[t],l[6]=t,l}function ts(n,e,t){const l=n.slice();return l[7]=e[t],l}function Df(n){let e,t,l=le(Ze.children),i=[];for(let r=0;r<l.length;r+=1)i[r]=is(es(n,l,r));const s=r=>N(i[r],1,1,()=>{i[r]=null});return{c(){for(let r=0;r<i.length;r+=1)i[r].c();e=Z()},l(r){for(let o=0;o<i.length;o+=1)i[o].l(r);e=Z()},m(r,o){for(let a=0;a<i.length;a+=1)i[a]&&i[a].m(r,o);D(r,e,o),t=!0},p(r,o){if(o&1){l=le(Ze.children);let a;for(a=0;a<l.length;a+=1){const c=es(r,l,a);i[a]?(i[a].p(c,o),z(i[a],1)):(i[a]=is(c),i[a].c(),z(i[a],1),i[a].m(e.parentNode,e))}for(ce(),a=l.length;a<i.length;a+=1)s(a);fe()}},i(r){if(!t){for(let o=0;o<l.length;o+=1)z(i[o]);t=!0}}
34,o(r){i=i.filter(Boolean);for(let o=0;o<i.length;o+=1)N(i[o]);t=!1},d(r){r&&_(e),Fe(i,r)}}}function zf(n){let e,t,l,i,s,r,o,a;l=new He({props:{orientation:"text-center",css:"",icon:n[4].icon,title:n[4].title,size:"h2",bpblue:n[4].bpblue==="on"}});let c=n[4].teaser&&Af(n),f=le(n[4].children),d=[];for(let g=0;g<f.length;g+=1)d[g]=ls(ts(n,f,g));const h=g=>N(d[g],1,1,()=>{d[g]=null});return{c(){e=p("div"),t=p("div"),se(l.$$.fragment),i=T(),c&&c.c(),s=T(),r=p("div");for(let g=0;g<d.length;g+=1)d[g].c();o=T(),this.h()},l(g){e=b(g,"DIV",{class:!0});var v=k(e);t=b(v,"DIV",{class:!0});var y=k(t);he(l.$$.fragment,y),i=L(y),c&&c.l(y),y.forEach(_),s=L(v),r=b(v,"DIV",{class:!0});var I=k(r);for(let C=0;C<d.length;C+=1)d[C].l(I);I.forEach(_),o=L(v),v.forEach(_),this.h()},h(){u(t,"class","space-y-2"),u(r,"class","grid grid-flow-row-dense grid-cols-[1fr] xs:grid-cols-[1fr_1fr] md:grid-cols-[1fr_1fr_1fr] gap-8"),u(e,"class","space-y-8")},m(g,v){D(g,e,v),m(e,t),ie(l,t,null),m(t,i),c&&c.m(t,null),m(e,s),m(e,r);for(let y=0;y<d.length;y+=1)d[y]&&d[y].m(r,null);m(e,o),a=!0},p(g,v){if(v&1){f=le(g[4].children);let y;for(y=0;y<f.length;y+=1){const I=ts(g,f,y);d[y]?(d[y].p(I,v),z(d[y],1)):(d[y]=ls(I),d[y].c(),z(d[y],1),d[y].m(r,null))}for(ce(),y=f.length;y<d.length;y+=1)h(y);fe()}},i(g){if(!a){z(l.$$.fragment,g);for(let v=0;v<f.length;v+=1)z(d[v]);a=!0}},o(g){N(l.$$.fragment,g),d=d.filter(Boolean);for(let v=0;v<d.length;v+=1)N(d[v]);a=!1},d(g){g&&_(e),ne(l),c&&c.d(),Fe(d,g)}}}function Af(n){let e,t=n[4].teaser+"",l;return{c(){e=p("p"),l=j(t),this.h()},l(i){e=b(i,"P",{class:!0});var s=k(e);l=R(s,t),s.forEach(_),this.h()},h(){u(e,"class","text-center")},m(i,s){D(i,e,s),m(e,l)},d(i){i&&_(e)}}}function Tf(n){let e,t,l,i,s,r,o,a,c,f,d,h,g=n[7].teaser+"",v,y,I,C=n[7].continue+"",E,A,S=n[7].teaser_img_title&&Lf(n),B=n[7].document_source&&Vf(n);return c=new He({props:{css:"p-2 text-black dark:text-white flex-none",title:n[7].title,size:"h3"}}),{c(){e=p("a"),t=p("figure"),l=p("div"),i=p("img"),r=T(),S&&S.c(),o=T(),B&&B.c(),a=T(),se(c.$$.fragment),f=T(),d=p("div"),h=p("p"),v=j(g),y=T(),I=p("div"),E=j(C),this.h()},l(F){e=b(F,"A",{href:!0,target:!0,rel:!0,title:!0,class:!0});var V=k(e);t=b(V,"FIGURE",{class:!0});var M=k(t);l=b(M,"DIV",{});var U=k(l);i=b(U,"IMG",{src:!0,alt:!0,role:!0,tabindex:!0}),r=L(U),S&&S.l(U),U.forEach(_),o=L(M),B&&B.l(M),a=L(M),he(c.$$.fragment,M),f=L(M),d=b(M,"DIV",{class:!0});var W=k(d);h=b(W,"P",{class:!0});var O=k(h);v=R(O,g),O.forEach(_),W.forEach(_),y=L(M),I=b(M,"DIV",{class:!0});var ee=k(I);E=R(ee,C),ee.forEach(_),M.forEach(_),V.forEach(_),this.h()},h(){pe(i.src,s=n[7].teaser_img)||u(i,"src",s),u(i,"alt",n[7].teaser_img_alt),u(i,"role","presentation"),u(i,"tabindex","-1"),u(h,"class","text-base mb-2"),u(d,"class","p-2 grow"),u(I,"class","p-2 flex-none text-bp-blue-dark dark:text-white"),u(t,"class","flex flex-col h-full"),u(e,"href",n[7].href),u(e,"target",n[7].target),u(e,"rel","noopener noreferrer"),u(e,"title","zur Seite "+n[7].href+" wechseln"),u(e,"class","flex flex-col h-full")},m(F,V){D(F,e,V),m(e,t),m(t,l),m(l,i),m(l,r),S&&S.m(l,null),m(t,o),B&&B.m(t,null),m(t,a),ie(c,t,null),m(t,f),m(t,d),m(d,h),m(h,v),m(t,y),m(t,I),m(I,E),A=!0},i(F){A||(z(c.$$.fragment,F),A=!0)},o(F){N(c.$$.fragment,F),A=!1},d(F){F&&_(e),S&&S.d(),B&&B.d(),ne(c)}}}function Lf(n){let e,t=n[7].teaser_img_title+"",l;return{c(){e=p("div"),l=j(t),this.h()},l(i){e=b(i,"DIV",{class:!0});var s=k(e);l=R(s,t),s.forEach(_),this.h()},h(){u(e,"class","p-2 flex-none text-xs text-bp-gray-dark dark:text-white bg-bp-gray-light dark:bg-black")},m(i,s){D(i,e,s),m(e,l)},d(i){i&&_(e)}}}function Vf(n){let e,t=n[7].document_source+"",l;return{c(){e=p("figcaption"),l=j(t),this.h()},l(i){e=b(i,"FIGCAPTION",{class:!0});var s=k(e);l=R(s,t),s.forEach(_),this.h()},h(){u(e,"class","text-xs text-bp-gray-dark dark:text-white p-2")},m(i,s){D(i,e,s),m(e,l)},d(i){i&&_(e)}}}function ls(n){let e,t,l,i=n[7].href&&!te.is_preview&&Tf(n);return{c(){e=p("div"),i&&i.c(),t=T(),this.h()},l(s){e=b(s,"DIV",{class:!0});var r=k(e);i&&i.l(r),t=L(r),r.forEach(_),this.h()},h(){u(e,"class","group-"+n[6]+" contact-entry "+n[0](n[7])+" dark:bg-black hover:shadow-lg border border-bp-gray-middle")},m(s,r){D(s,e,r),i&&i.m(e,null),m(e,t),l=!0},p:q,i(s){l||(z(i),l=!0)},o(s){N(i),l=!1},d(s){s&&_(e),i&&i.d()}}}function is(n){let e,t,l=n[4].children&&n[4].children.length&&zf(n);return{c(){l&&l.c(),e=Z()},l(i){l&&l.l(i),e=Z()}
34,m(i,s){l&&l.m(i,s),D(i,e,s),t=!0},p(i,s){i[4].children&&i[4].children.length&&l.p(i,s)},i(i){t||(z(l),t=!0)},o(i){N(l),t=!1},d(i){i&&_(e),l&&l.d(i)}}}function Ff(n){let e,t,l=Ze&&Ze.children&&Ze.children.length&&Df(n);return{c(){l&&l.c(),e=Z()},l(i){l&&l.l(i),e=Z()},m(i,s){l&&l.m(i,s),D(i,e,s),t=!0},p(i,[s]){Ze&&Ze.children&&Ze.children.length&&l.p(i,s)},i(i){t||(z(l),t=!0)},o(i){N(l),t=!1},d(i){i&&_(e),l&&l.d(i)}}}function Nf(n){const e={"#FFFFFF":"bg-white","#008DC9":"bg-bp-blue","#F0F5FA":"bg-bp-blue-light","#2D5A96":"bg-bp-blue-middle","#143C69":"bg-bp-blue-dark","#F0F0F0":"bg-bp-gray-light","#DCDCDC":"bg-bp-gray-middle","#414142":"bg-bp-gray-dark"};return[l=>l.box_color?e[l.box_color.toUpperCase()]:"bg-white"]}class Mf extends ye{constructor(e){super(),we(this,e,Nf,Ff,ve,{})}}function Bf(n,{from:e,to:t},l={}){const i=getComputedStyle(n),s=i.transform==="none"?"":i.transform,[r,o]=i.transformOrigin.split(" ").map(parseFloat),a=e.left+e.width*r/t.width-(t.left+r),c=e.top+e.height*o/t.height-(t.top+o),{delay:f=0,duration:d=g=>Math.sqrt(g)*120,easing:h=ur}=l;return{delay:f,duration:gt(d)?d(Math.sqrt(a*a+c*c)):d,easing:h,css:(g,v)=>{const y=v*a,I=v*c,C=g+v*e.width/t.width,E=g+v*e.height/t.height;return`transform: ${s} translate(${y}px, ${I}px) scale(${C}, ${E});`}}}const{window:ns}=$s,Pf=n=>({noResultsText:n[0]&1024}),ss=n=>({noResultsText:n[10]}),Of=n=>({createText:n[0]&8192}),rs=n=>({createText:n[13]}),jf=n=>({loadingText:n[0]&2048}),os=n=>({loadingText:n[11]}),Rf=n=>({nbItems:n[1]&1,maxItemsToShowInList:n[0]&16}),as=n=>({nbItems:n[31].length,maxItemsToShowInList:n[4]});function cs(n,e,t){const l=n.slice();return l[144]=e[t],l[146]=t,l}const Uf=n=>({item:n[1]&1,label:n[1]&1}),fs=n=>({item:n[144].item,label:n[144].highlighted?n[144].highlighted:n[144].label}),Hf=n=>({nbItems:n[1]&1,maxItemsToShowInList:n[0]&16}),us=n=>({nbItems:n[31].length,maxItemsToShowInList:n[4]});function ds(n,e,t){const l=n.slice();return l[147]=e[t],l[146]=t,l}const Kf=n=>({label:n[0]&2,item:n[0]&2}),hs=n=>({label:n[43](n[147]),item:n[147],unselectItem:n[50]});function _s(n,e,t){const l=n.slice();return l[146]=e[t],l}function qf(n){let e,t=le(n[1]),l=[];for(let i=0;i<t.length;i+=1)l[i]=ms(_s(n,t,i));return{c(){for(let i=0;i<l.length;i+=1)l[i].c();e=Z()},l(i){for(let s=0;s<l.length;s+=1)l[s].l(i);e=Z()},m(i,s){for(let r=0;r<l.length;r+=1)l[r]&&l[r].m(i,s);D(i,e,s)},p(i,s){if(s[0]&10|s[1]&4096){t=le(i[1]);let r;for(r=0;r<t.length;r+=1){const o=_s(i,t,r);l[r]?l[r].p(o,s):(l[r]=ms(o),l[r].c(),l[r].m(e.parentNode,e))}for(;r<l.length;r+=1)l[r].d(1);l.length=t.length}},d(i){i&&_(e),Fe(l,i)}}}function Gf(n){let e,t=n[43](n[1])+"",l,i;return{c(){e=p("option"),l=j(t),this.h()},l(s){e=b(s,"OPTION",{class:!0});var r=k(e);l=R(r,t),r.forEach(_),this.h()},h(){e.__value=i=n[3](n[1],!0),st(e,e.__value),e.selected=!0,u(e,"class","svelte-75ckfb")},m(s,r){D(s,e,r),m(e,l)},p(s,r){r[0]&2&&t!==(t=s[43](s[1])+"")&&J(l,t),r[0]&10&&i!==(i=s[3](s[1],!0))&&(e.__value=i,st(e,e.__value))},d(s){s&&_(e)}}}function ms(n){let e,t=n[43](n[146])+"",l,i,s;return{c(){e=p("option"),l=j(t),i=T(),this.h()},l(r){e=b(r,"OPTION",{class:!0});var o=k(e);l=R(o,t),i=L(o),o.forEach(_),this.h()},h(){e.__value=s=n[3](n[146],!0),st(e,e.__value),e.selected=!0,u(e,"class","svelte-75ckfb")},m(r,o){D(r,e,o),m(e,l),m(e,i)},p(r,o){o[0]&2&&t!==(t=r[43](r[146])+"")&&J(l,t),o[0]&10&&s!==(s=r[3](r[146],!0))&&(e.__value=s,st(e,e.__value))},d(r){r&&_(e)}}}function gs(n){let e=[],t=new Map,l,i,s=le(n[1]);const r=o=>o[3](o[147],!0);for(let o=0;o<s.length;o+=1){let a=ds(n,s,o),c=r(a);t.set(c,e[o]=ps(c,a))}return{c(){for(let o=0;o<e.length;o+=1)e[o].c();l=Z()},l(o){for(let a=0;a<e.length;a+=1)e[a].l(o);l=Z()},m(o,a){for(let c=0;c<e.length;c+=1)e[c]&&e[c].m(o,a);D(o,l,a),i=!0},p(o,a){if(a[0]&10|a[1]&503844992|a[3]&8){s=le(o[1]),ce();for(let c=0;c<e.length;c+=1)e[c].r();e=Fo(e,a,r,1,o,s,t,l.parentNode,Vo,ps,l,ds);for(let c=0;c<e.length;c+=1)e[c].a();fe()}},i(o){if(!i){for(let a=0;a<s.length;a+=1)z(e[a]);i=!0}},o(o){for(let a=0;a<e.length;a+=1)N(e[a]);i=!1},d(o){o&&_(l);for(let a=0;a<e.length;a+=1)e[a].d(o)}}}function Wf(n){let e,t,l=n[43](n[147])+"",i,s,r,o,a;function c(...f){return n[99](n[147],...f)}return{c(){e=p("div"),t=p("span"),i=j(l),s=T(),r=p("span"),this.h()},l(f){e=b(f,"DIV",{class:!0});var d=k(e);
34t=b(d,"SPAN",{class:!0});var h=k(t);i=R(h,l),h.forEach(_),s=L(d),r=b(d,"SPAN",{class:!0}),k(r).forEach(_),d.forEach(_),this.h()},h(){u(t,"class","tag svelte-75ckfb"),u(r,"class","tag is-delete svelte-75ckfb"),u(e,"class","tags has-addons svelte-75ckfb")},m(f,d){D(f,e,d),m(e,t),m(t,i),m(e,s),m(e,r),o||(a=[de(r,"click",Qt(function(){gt(n[50](n[147]))&&n[50](n[147]).apply(this,arguments)})),de(r,"keypress",Qt(c))],o=!0)},p(f,d){n=f,d[0]&2&&l!==(l=n[43](n[147])+"")&&J(i,l)},d(f){f&&_(e),o=!1,Ue(a)}}}function ps(n,e){let t,l,i,s,r=q,o,a,c;const f=e[97].tag,d=wt(f,e,e[96],hs),h=d||Wf(e);function g(...C){return e[100](e[146],...C)}function v(...C){return e[101](e[146],...C)}function y(...C){return e[102](e[146],...C)}function I(...C){return e[103](e[146],...C)}return{key:n,first:null,c(){t=p("div"),h&&h.c(),l=T(),this.h()},l(C){t=b(C,"DIV",{draggable:!0,class:!0});var E=k(t);h&&h.l(E),l=L(E),E.forEach(_),this.h()},h(){u(t,"draggable",!0),u(t,"class","svelte-75ckfb"),Ge(t,"is-active",e[38]===e[146]),this.first=t},m(C,E){D(C,t,E),h&&h.m(t,null),m(t,l),o=!0,a||(c=[de(t,"dragstart",g),de(t,"dragover",v),de(t,"dragleave",y),de(t,"drop",I)],a=!0)},p(C,E){e=C,d?d.p&&(!o||E[0]&2|E[3]&8)&&Et(d,f,e,e[96],o?yt(f,e[96],E,Kf):It(e[96]),hs):h&&h.p&&(!o||E[0]&2)&&h.p(e,o?E:[-1,-1,-1,-1,-1]),(!o||E[0]&2|E[1]&128)&&Ge(t,"is-active",e[38]===e[146])},r(){s=t.getBoundingClientRect()},f(){yo(t),r(),sr(t,s)},a(){r(),r=wo(t,s,Bf,{duration:200})},i(C){o||(z(h,C),C&&mt(()=>{o&&(i||(i=Pt(t,El,{duration:200},!0)),i.run(1))}),o=!0)},o(C){N(h,C),C&&(i||(i=Pt(t,El,{duration:200},!1)),i.run(0)),o=!1},d(C){C&&_(t),h&&h.d(C),C&&i&&i.end(),a=!1,Ue(c)}}}function bs(n){let e,t,l,i;return{c(){e=p("span"),t=new je(!1),this.h()},l(s){e=b(s,"SPAN",{class:!0});var r=k(e);t=We(r,!1),r.forEach(_),this.h()},h(){t.a=null,u(e,"class","autocomplete-clear-button svelte-75ckfb")},m(s,r){D(s,e,r),t.m(n[8],e),l||(i=[de(e,"click",n[54]),de(e,"keypress",n[108])],l=!0)},p(s,r){r[0]&256&&t.p(s[8])},d(s){s&&_(e),l=!1,Ue(i)}}}function Zf(n){let e,t;const l=n[97]["no-results"],i=wt(l,n,n[96],ss),s=i||Qf(n);return{c(){e=p("div"),s&&s.c(),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);s&&s.l(o),o.forEach(_),this.h()},h(){u(e,"class","autocomplete-list-item-no-results svelte-75ckfb")},m(r,o){D(r,e,o),s&&s.m(e,null),t=!0},p(r,o){i?i.p&&(!t||o[0]&1024|o[3]&8)&&Et(i,l,r,r[96],t?yt(l,r[96],o,Pf):It(r[96]),ss):s&&s.p&&(!t||o[0]&1024)&&s.p(r,t?o:[-1,-1,-1,-1,-1])},i(r){t||(z(s,r),t=!0)},o(r){N(s,r),t=!1},d(r){r&&_(e),s&&s.d(r)}}}function Yf(n){let e,t,l,i;const s=n[97].create,r=wt(s,n,n[96],rs),o=r||xf(n);return{c(){e=p("div"),o&&o.c(),this.h()},l(a){e=b(a,"DIV",{class:!0});var c=k(e);o&&o.l(c),c.forEach(_),this.h()},h(){u(e,"class","autocomplete-list-item-create svelte-75ckfb")},m(a,c){D(a,e,c),o&&o.m(e,null),t=!0,l||(i=[de(e,"click",n[44]),de(e,"keypress",n[113])],l=!0)},p(a,c){r?r.p&&(!t||c[0]&8192|c[3]&8)&&Et(r,s,a,a[96],t?yt(s,a[96],c,Of):It(a[96]),rs):o&&o.p&&(!t||c[0]&8192)&&o.p(a,t?c:[-1,-1,-1,-1,-1])},i(a){t||(z(o,a),t=!0)},o(a){N(o,a),t=!1},d(a){a&&_(e),o&&o.d(a),l=!1,Ue(i)}}}function Jf(n){let e,t;const l=n[97].loading,i=wt(l,n,n[96],os),s=i||$f(n);return{c(){e=p("div"),s&&s.c(),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);s&&s.l(o),o.forEach(_),this.h()},h(){u(e,"class","autocomplete-list-item-loading svelte-75ckfb")},m(r,o){D(r,e,o),s&&s.m(e,null),t=!0},p(r,o){i?i.p&&(!t||o[0]&2048|o[3]&8)&&Et(i,l,r,r[96],t?yt(l,r[96],o,jf):It(r[96]),os):s&&s.p&&(!t||o[0]&2048)&&s.p(r,t?o:[-1,-1,-1,-1,-1])},i(r){t||(z(s,r),t=!0)},o(r){N(s,r),t=!1},d(r){r&&_(e),s&&s.d(r)}}}function Xf(n){let e,t,l;const i=n[97]["dropdown-header"],s=wt(i,n,n[96],us);let r=le(n[31]),o=[];for(let h=0;h<r.length;h+=1)o[h]=vs(cs(n,r,h));const a=h=>N(o[h],1,1,()=>{o[h]=null}),c=n[97]["dropdown-footer"],f=wt(c,n,n[96],as),d=f||iu(n);return{c(){s&&s.c(),e=T();for(let h=0;h<o.length;h+=1)o[h].c();t=T(),d&&d.c()},l(h){s&&s.l(h),e=L(h);for(let g=0;g<o.length;g+=1)o[g].l(h);t=L(h),d&&d.l(h)},m(h,g){s&&s.m(h,g),D(h,e,g);for(let v=0;v<o.length;v+=1)o[v]&&o[v].m(h,g);D(h,t,g),d&&d.m(h,g),l=!0},p(h,g){if(s&&s.p&&(!l||g[0]&16|g[1]&1|g[3]&8)&&Et(s,i,h,h[96],l?yt(i,h[96],g,Hf):It(h[96]),us),g[0]&1073741840|g[1]&16793601|g[3]&8){r=le(h[31]);let v;for(v=0;v<r.length;v+=1){const y=cs(h,r,v);o[v]?(o[v].p(y,g),z(o[v],1)):(o[v]=vs(y),o[v].c(),z(o[v],1),o[v].m(t.parentNode,t))}for(ce(),v=r.length;v<o.length;v+=1)a(v);fe()}f?f.p&&(!l||g[0]&16|g[1]&1|g[3]&8)&&Et(f,c,h,h[96],l?yt(c,h[96],g,Rf):It(h[96]),as):d&&d.p&&(!l||g[0]&4112|g[1]&1)&&d.p(h,l?g:[-1,-1,-1,-1,-1])},i(h){if(!l){z(s,h);for(let g=0;g<r.length;g+=1)z(o[g]);z(d,h),l=!0}}
34,o(h){N(s,h),o=o.filter(Boolean);for(let g=0;g<o.length;g+=1)N(o[g]);N(d,h),l=!1},d(h){h&&(_(e),_(t)),s&&s.d(h),Fe(o,h),d&&d.d(h)}}}function Qf(n){let e;return{c(){e=j(n[10])},l(t){e=R(t,n[10])},m(t,l){D(t,e,l)},p(t,l){l[0]&1024&&J(e,t[10])},d(t){t&&_(e)}}}function xf(n){let e;return{c(){e=j(n[13])},l(t){e=R(t,n[13])},m(t,l){D(t,e,l)},p(t,l){l[0]&8192&&J(e,t[13])},d(t){t&&_(e)}}}function $f(n){let e;return{c(){e=j(n[11])},l(t){e=R(t,n[11])},m(t,l){D(t,e,l)},p(t,l){l[0]&2048&&J(e,t[11])},d(t){t&&_(e)}}}function ks(n){let e,t,l,i;const s=n[97].item,r=wt(s,n,n[96],fs),o=r||lu(n);function a(){return n[110](n[144])}function c(...d){return n[111](n[144],...d)}function f(){return n[112](n[146])}return{c(){e=p("div"),o&&o.c(),this.h()},l(d){e=b(d,"DIV",{class:!0});var h=k(e);o&&o.l(h),h.forEach(_),this.h()},h(){u(e,"class","autocomplete-list-item svelte-75ckfb"),Ge(e,"selected",n[146]===n[30]),Ge(e,"confirmed",n[55](n[144].item))},m(d,h){D(d,e,h),o&&o.m(e,null),t=!0,l||(i=[de(e,"click",a),de(e,"keypress",c),de(e,"pointerenter",f)],l=!0)},p(d,h){n=d,r?r.p&&(!t||h[1]&1|h[3]&8)&&Et(r,s,n,n[96],t?yt(s,n[96],h,Uf):It(n[96]),fs):o&&o.p&&(!t||h[1]&1)&&o.p(n,t?h:[-1,-1,-1,-1,-1]),(!t||h[0]&1073741824)&&Ge(e,"selected",n[146]===n[30]),(!t||h[1]&16777217)&&Ge(e,"confirmed",n[55](n[144].item))},i(d){t||(z(o,d),t=!0)},o(d){N(o,d),t=!1},d(d){d&&_(e),o&&o.d(d),l=!1,Ue(i)}}}function eu(n){let e,t=n[144].label+"",l;return{c(){e=new je(!1),l=Z(),this.h()},l(i){e=We(i,!1),l=Z(),this.h()},h(){e.a=l},m(i,s){e.m(t,i,s),D(i,l,s)},p(i,s){s[1]&1&&t!==(t=i[144].label+"")&&e.p(t)},d(i){i&&(_(l),e.d())}}}function tu(n){let e,t=n[144].highlighted+"",l;return{c(){e=new je(!1),l=Z(),this.h()},l(i){e=We(i,!1),l=Z(),this.h()},h(){e.a=l},m(i,s){e.m(t,i,s),D(i,l,s)},p(i,s){s[1]&1&&t!==(t=i[144].highlighted+"")&&e.p(t)},d(i){i&&(_(l),e.d())}}}function lu(n){let e;function t(s,r){return s[144].highlighted?tu:eu}let l=t(n),i=l(n);return{c(){i.c(),e=Z()},l(s){i.l(s),e=Z()},m(s,r){i.m(s,r),D(s,e,r)},p(s,r){l===(l=t(s))&&i?i.p(s,r):(i.d(1),i=l(s),i&&(i.c(),i.m(e.parentNode,e)))},d(s){s&&_(e),i.d(s)}}}function vs(n){let e,t,l=n[144]&&(n[4]<=0||n[146]<n[4])&&ks(n);return{c(){l&&l.c(),e=Z()},l(i){l&&l.l(i),e=Z()},m(i,s){l&&l.m(i,s),D(i,e,s),t=!0},p(i,s){i[144]&&(i[4]<=0||i[146]<i[4])?l?(l.p(i,s),s[0]&16|s[1]&1&&z(l,1)):(l=ks(i),l.c(),z(l,1),l.m(e.parentNode,e)):l&&(ce(),N(l,1,1,()=>{l=null}),fe())},i(i){t||(z(l),t=!0)},o(i){N(l),t=!1},d(i){i&&_(e),l&&l.d(i)}}}function ws(n){let e,t=n[12]&&ys(n);return{c(){t&&t.c(),e=Z()},l(l){t&&t.l(l),e=Z()},m(l,i){t&&t.m(l,i),D(l,e,i)},p(l,i){l[12]?t?t.p(l,i):(t=ys(l),t.c(),t.m(e.parentNode,e)):t&&(t.d(1),t=null)},d(l){l&&_(e),t&&t.d(l)}}}function ys(n){let e,t,l=n[31].length-n[4]+"",i,s,r;return{c(){e=p("div"),t=j("..."),i=j(l),s=T(),r=j(n[12]),this.h()},l(o){e=b(o,"DIV",{class:!0});var a=k(e);t=R(a,"..."),i=R(a,l),s=L(a),r=R(a,n[12]),a.forEach(_),this.h()},h(){u(e,"class","autocomplete-list-item-no-results svelte-75ckfb")},m(o,a){D(o,e,a),m(e,t),m(e,i),m(e,s),m(e,r)},p(o,a){a[0]&16|a[1]&1&&l!==(l=o[31].length-o[4]+"")&&J(i,l),a[0]&4096&&J(r,o[12])},d(o){o&&_(e)}}}function iu(n){let e,t=n[4]>0&&n[31].length>n[4]&&ws(n);return{c(){t&&t.c(),e=Z()},l(l){t&&t.l(l),e=Z()},m(l,i){t&&t.m(l,i),D(l,e,i)},p(l,i){l[4]>0&&l[31].length>l[4]?t?t.p(l,i):(t=ws(l),t.c(),t.m(e.parentNode,e)):t&&(t.d(1),t=null)},d(l){l&&_(e),t&&t.d(l)}}}function nu(n){let e,t,l,i,s,r,o,a,c,f,d,h,g,v,y,I,C,E,A,S;function B(P,K){if(!P[5]&&P[32])return Gf;if(P[5]&&P[32])return qf}let F=B(n),V=F&&F(n),M=n[5]&&n[32]&&gs(n),U=[{type:"text"},{class:o=(n[16]?n[16]:"")+" "+(n[27]?"":"input autocomplete-input")},{id:a=n[17]?n[17]:""},{autocomplete:c=n[22]?"on":n[23]},{placeholder:n[14]},{name:n[18]},{disabled:n[26]},{required:n[28]},{title:n[21]},{readOnly:f=n[24]||n[39]},{tabindex:n[29]},n[60]],W={};for(let P=0;P<U.length;P+=1)W=Ee(W,U[P]);let O=n[40]&&bs(n);const ee=[Xf,Jf,Yf,Zf],H=[];function Q(P,K){return P[31]&&P[31].length>0?0:P[36]&&P[11]?1:P[6]?2:P[10]?3:-1}return~(v=Q(n))&&(y=H[v]=ee[v](n)),{c(){e=p("div"),t=p("select"),V&&V.c(),l=T(),i=p("div"),M&&M.c(),s=T(),r=p("input"),d=T(),O&&O.c(),h=T(),g=p("div"),y&&y.c(),this.h()},l(P){e=b(P,"DIV",{class:!0});var K=k(e);
34t=b(K,"SELECT",{name:!0,id:!0,class:!0});var ue=k(t);V&&V.l(ue),ue.forEach(_),l=L(K),i=b(K,"DIV",{class:!0});var $=k(i);M&&M.l($),s=L($),r=b($,"INPUT",{type:!0,class:!0,id:!0,autocomplete:!0,placeholder:!0,name:!0,title:!0,tabindex:!0}),d=L($),O&&O.l($),$.forEach(_),h=L(K),g=b(K,"DIV",{class:!0});var oe=k(g);y&&y.l(oe),oe.forEach(_),K.forEach(_),this.h()},h(){u(t,"name",n[19]),u(t,"id",n[20]),t.multiple=n[5],u(t,"class","svelte-75ckfb"),zi(r,W),Ge(r,"svelte-75ckfb",!0),u(i,"class","input-container svelte-75ckfb"),u(g,"class",I=(n[25]?n[25]:"")+" autocomplete-list "+(n[41]?"":"hidden")+" is-fullwidth svelte-75ckfb"),u(e,"class",C=(n[15]?n[15]:"")+" autocomplete select is-fullwidth "+n[42]+" svelte-75ckfb"),Ge(e,"hide-arrow",n[7]||!n[0].length),Ge(e,"is-multiple",n[5]),Ge(e,"show-clear",n[40]),Ge(e,"is-loading",n[9]&&n[36])},m(P,K){D(P,e,K),m(e,t),V&&V.m(t,null),m(e,l),m(e,i),M&&M.m(i,null),m(i,s),m(i,r),r.autofocus&&r.focus(),n[104](r),st(r,n[2]),m(i,d),O&&O.m(i,null),n[109](i),m(e,h),m(e,g),~v&&H[v].m(g,null),n[114](g),E=!0,A||(S=[de(ns,"click",n[46]),de(ns,"scroll",n[98]),de(r,"input",n[105]),de(r,"input",n[49]),de(r,"focus",n[52]),de(r,"blur",n[53]),de(r,"keydown",n[47]),de(r,"click",n[51]),de(r,"keypress",n[48]),de(r,"dragover",n[106]),de(r,"drop",n[107])],A=!0)},p(P,K){F===(F=B(P))&&V?V.p(P,K):(V&&V.d(1),V=F&&F(P),V&&(V.c(),V.m(t,null))),(!E||K[0]&524288)&&u(t,"name",P[19]),(!E||K[0]&1048576)&&u(t,"id",P[20]),(!E||K[0]&32)&&(t.multiple=P[5]),P[5]&&P[32]?M?(M.p(P,K),K[0]&32|K[1]&2&&z(M,1)):(M=gs(P),M.c(),z(M,1),M.m(i,s)):M&&(ce(),N(M,1,1,()=>{M=null}),fe()),zi(r,W=Te(U,[{type:"text"},(!E||K[0]&134283264&&o!==(o=(P[16]?P[16]:"")+" "+(P[27]?"":"input autocomplete-input")))&&{class:o},(!E||K[0]&131072&&a!==(a=P[17]?P[17]:""))&&{id:a},(!E||K[0]&12582912&&c!==(c=P[22]?"on":P[23]))&&{autocomplete:c},(!E||K[0]&16384)&&{placeholder:P[14]},(!E||K[0]&262144)&&{name:P[18]},(!E||K[0]&67108864)&&{disabled:P[26]},(!E||K[0]&268435456)&&{required:P[28]},(!E||K[0]&2097152)&&{title:P[21]},(!E||K[0]&16777216|K[1]&256&&f!==(f=P[24]||P[39]))&&{readOnly:f},(!E||K[0]&536870912)&&{tabindex:P[29]},K[1]&536870912&&P[60]])),K[0]&4&&r.value!==P[2]&&st(r,P[2]),Ge(r,"svelte-75ckfb",!0),P[40]?O?O.p(P,K):(O=bs(P),O.c(),O.m(i,null)):O&&(O.d(1),O=null);let ue=v;v=Q(P),v===ue?~v&&H[v].p(P,K):(y&&(ce(),N(H[ue],1,1,()=>{H[ue]=null}),fe()),~v?(y=H[v],y?y.p(P,K):(y=H[v]=ee[v](P),y.c()),z(y,1),y.m(g,null)):y=null),(!E||K[0]&33554432|K[1]&1024&&I!==(I=(P[25]?P[25]:"")+" autocomplete-list "+(P[41]?"":"hidden")+" is-fullwidth svelte-75ckfb"))&&u(g,"class",I),(!E||K[0]&32768&&C!==(C=(P[15]?P[15]:"")+" autocomplete select is-fullwidth "+P[42]+" svelte-75ckfb"))&&u(e,"class",C),(!E||K[0]&32897)&&Ge(e,"hide-arrow",P[7]||!P[0].length),(!E||K[0]&32800)&&Ge(e,"is-multiple",P[5]),(!E||K[0]&32768|K[1]&512)&&Ge(e,"show-clear",P[40]),(!E||K[0]&33280|K[1]&32)&&Ge(e,"is-loading",P[9]&&P[36])},i(P){E||(z(M),z(y),E=!0)},o(P){N(M),N(y),E=!1},d(P){P&&_(e),V&&V.d(),M&&M.d(),n[104](null),O&&O.d(),n[109](null),~v&&H[v].d(),n[114](null),A=!1,Ue(S)}}}function su(n,e){if(typeof n!="function"){console.error("Not a function: "+n+", argument: "+e);return}let t;try{t=n(e)}catch{console.warn("Error executing Autocomplete function on value: "+e+" function: "+n)}return t}function hl(n,e){let t=su(n,e);return t==null&&(t=""),typeof t!="string"&&(t=t.toString()),t}function Jl(n,e){if(!n)return 0;const t=n.keywords;let l=0;return e.forEach(i=>{t.includes(i)&&l++}),l}function ru(n,e,t){return Jl(e,t)-Jl(n,t)}function _l(n){return n.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}function ou(n,e,t){let l,i,s,r;const o=["items","searchFunction","labelFieldName","keywordsFieldName","valueFieldName","labelFunction","keywordsFunction","valueFunction","keywordsCleanFunction","textCleanFunction","beforeChange","onChange","onFocus","onBlur","onCreate","selectFirstIfEmpty","minCharactersToSearch","maxItemsToShowInList","multiple","create","ignoreAccents","matchAllKeywords","sortByMatchedKeywords","itemFilterFunction","itemSortFunction","lock","delay","localFiltering","localSorting","cleanUserText","lowercaseKeywords","closeOnBlur","orderableSelection","hideArrow","showClear","clearText","showLoadingIndicator","noResultsText","loadingText","moreItemsText","createText","placeholder","className","inputClassName","inputId","name","selectName","selectId","title","html5autocomplete","autocompleteOffValue","readonly","dropdownClassName","disabled","noInputStyles","required","debug","tabindex","selectedItem","value","highlightedItem","text","highlightFilter"];let a=Si(e,o),{$$slots:c={}
34,$$scope:f}=e,{items:d=[]}=e,{searchFunction:h=!1}=e,{labelFieldName:g=void 0}=e,{keywordsFieldName:v=g}=e,{valueFieldName:y=void 0}=e,{labelFunction:I=function(w){return w==null?"":g?w[g]:w}}=e,{keywordsFunction:C=function(w){return w==null?"":v?w[v]:I(w)}}=e,{valueFunction:E=function(w,G=!1){return w==null?w:!H||G?y?w[y]:w:w.map(Y=>y?Y[y]:Y)}}=e,{keywordsCleanFunction:A=function(w){return w}}=e,{textCleanFunction:S=function(w){return w}}=e,{beforeChange:B=function(w,G){return!0}}=e,{onChange:F=function(w){}}=e,{onFocus:V=function(){}}=e,{onBlur:M=function(){}}=e,{onCreate:U=function(w){re&&console.log("onCreate: "+w)}}=e,{selectFirstIfEmpty:W=!1}=e,{minCharactersToSearch:O=1}=e,{maxItemsToShowInList:ee=0}=e,{multiple:H=!1}=e,{create:Q=!1}=e,{ignoreAccents:P=!0}=e,{matchAllKeywords:K=!0}=e,{sortByMatchedKeywords:ue=!1}=e,{itemFilterFunction:$=void 0}=e,{itemSortFunction:oe=void 0}=e,{lock:me=!1}=e,{delay:x=0}=e,{localFiltering:be=!0}=e,{localSorting:_e=!0}=e,{cleanUserText:Ne=!0}=e,{lowercaseKeywords:Ie=!0}=e,{closeOnBlur:Me=!1}=e,{orderableSelection:X=!1}=e,{hideArrow:ge=!1}=e,{showClear:Ae=!1}=e,{clearText:Le="✖"}=e,{showLoadingIndicator:De=!1}=e,{noResultsText:ae="No results found"}=e,{loadingText:Ce="Loading results..."}=e,{moreItemsText:Ot="items not shown"}=e,{createText:pt="Not found, add anyway?"}=e,{placeholder:bt=void 0}=e,{className:jt=void 0}=e,{inputClassName:Rt=void 0}=e,{inputId:Be=void 0}=e,{name:Ut=void 0}=e,{selectName:Ht=void 0}=e,{selectId:kt=void 0}=e,{title:St=void 0}=e,{html5autocomplete:Dt=void 0}=e,{autocompleteOffValue:si="off"}=e,{readonly:ri=void 0}=e,{dropdownClassName:oi=void 0}=e,{disabled:ai=!1}=e,{noInputStyles:ci=!1}=e,{required:fi=null}=e,{debug:re=!1}=e,{tabindex:ui=0}=e,{selectedItem:Se=H?[]:void 0}=e,{value:Sl=void 0}=e,{highlightedItem:Dl=void 0}=e;const di="sautocomplete-"+Math.floor(Math.random()*1e3);let ft,$e,tl,ut=!1,ll=!1,Oe=-1,{text:Ke=void 0}=e,Kt=0,Re,Je=[],zl=0,vt=0,Al,qt=!1;Io(()=>{qt&&Pr(),t(37,qt=!1)});function Tl(w){return hl(I,w)}function br(w){const G=hl(C,w);let Y=hl(A,G);return Y=Ie?Y.toLowerCase().trim():Y,P&&(Y=_l(Y)),re&&console.log("Extracted keywords: '"+Y+"' from item: "+JSON.stringify(w)),Y}function il(){let w;re&&(w=`Autocomplete prepare list ${Be?`(id: ${Be})`:""}`,console.time(w),console.log("Prepare items to search"),console.log("items: "+JSON.stringify(d))),Array.isArray(d)||(console.warn("Autocomplete items / search function did not return array but",d),t(0,d=[]));const G=d?d.length:0;Je=new Array(G),G>0&&d.forEach((Y,ke)=>{const qe=kr(Y);qe===void 0&&console.log("Undefined item for: ",Y),Je[ke]=qe}),t(31,Re=Je),re&&(console.log(Je.length+" items to search"),console.timeEnd(w))}function kr(w){return{keywords:be?br(w):[],label:Tl(w),item:w}}function vr(){t(61,Sl=E(Se)),Se&&!H&&t(2,Ke=Tl(Se)),t(31,Re=Je),F(Se)}function wr(w){if(w==null)return"";if(!Ne)return w;const G=w.replace(/[&/\\#,+()$~%.'":*?<>{}]/g," ").trim(),Y=hl(S,G);return Ie?Y.toLowerCase().trim():Y.trim()}async function hi(){let w;re&&(w=`Autocomplete search ${Be?`(id: ${Be})`:""}`,console.time(w),console.log("Searching user entered text: '"+Ke+"'"));let G=wr(Ke);if(O>1&&G.length<O&&(G=""),t(95,Kt=G.length),re&&console.log("Changed user entered text '"+Ke+"' into '"+G+"'"),G===""&&(h?(t(0,d=[]),re&&console.log("User entered text is empty clear list of items")):(t(31,Re=Je),re&&console.log("User entered text is empty set the list of items to all items")),ki())){re&&console.timeEnd(w);return}if(!h)nl(G);else{zl=zl+1;const Y=zl;if(t(36,ll=!0),h.constructor.name==="AsyncGeneratorFunction"){for await(const ke of h(G,ee)){if(Y<vt)return!1;Y>vt&&t(0,d=[]),vt=Y,t(0,d=[...d,...ke]),nl(G)}vt<Y&&(vt=Y,t(0,d=[]),nl(G))}else{let ke=await h(G,ee);if(Y<vt)return!1;vt=Y,t(0,d=ke),nl(G)}t(36,ll=!1)}re&&(console.timeEnd(w),console.log("Search found "+Re.length+" items"))}function yr(w,G){const Y=Jl(w,G);return K?Y>=G.length:Y>0}function nl(w){il();const Y=(P?_l(w):w).split(/\s+/g).filter(Xe=>Xe!=="");let ke;be?($?ke=Je.filter(Xe=>$(Xe.item,Y)):ke=Je.filter(Xe=>yr(Xe,Y)),_e&&(oe?ke=ke.sort((Xe,Gt)=>oe(Xe.item,Gt.item,Y)):ue&&(ke=ke.sort((Xe,Gt)=>ru(Xe,Gt,Y))))):ke=Je;const qe=wi(Y,"label");return t(31,Re=ke.map(qe)),ki(),!0}function _i(w){let G;
34if(re&&console.log("createdItem",w),typeof w<"u"){il(),t(31,Re=Je);let Y=pi(w,Re);Y<=0&&(t(0,d=[w]),il(),t(31,Re=Je),Y=0),Y>=0&&(t(30,Oe=Y),G=Re[Oe])}return G}function Ll(w){if(re&&console.log("selectListItem",w),typeof w>"u"&&Q){const Y=U(Ke);if(typeof Y<"u"){if(typeof Y.then=="function")return Y.then(ke=>{if(typeof ke<"u"){const qe=_i(ke);typeof qe<"u"&&Ll(qe)}}),!0;w=_i(Y)}}if(typeof w>"u")return re&&console.log("listItem is undefined. Can not select."),!1;if(r)return!0;const G=w.item;return B(Se,G)&&(H?Se?Se.includes(G)?t(1,Se=Se.filter(Y=>Y!==G)):t(1,Se=[...Se,G]):t(1,Se=[G]):(t(1,Se=void 0),t(1,Se=G))),!0}function sl(){re&&console.log("selectItem",Oe);const w=Re[Oe];Ll(w)?(re&&console.log("selectListItem true, closing"),dt(),H&&(t(2,Ke=""),ft.focus())):re&&console.log("selectListItem false, not closing")}function Er(){re&&console.log("up"),ol(),Oe>0&&t(30,Oe--,Oe),rl()}function Ir(){re&&console.log("down"),ol(),Oe<Re.length-1&&t(30,Oe++,Oe),rl()}function rl(){re&&console.log("highlight");const w=".selected";re&&console.log("Seaching DOM element: "+w+" in "+$e);const G=$e&&$e.querySelector(w);G?typeof G.scrollIntoViewIfNeeded=="function"?(re&&console.log("Scrolling selected item into view"),G.scrollIntoViewIfNeeded()):G.scrollIntoView==="function"?(re&&console.log("Scrolling selected item into view"),G.scrollIntoView()):re&&console.warn("Could not scroll selected item into view, scrollIntoViewIfNeeded not supported"):re&&console.warn("Selected item not found to scroll into view")}function Vl(w){re&&console.log("onListItemClick"),Ll(w)&&(dt(),H&&(t(2,Ke=""),ft.focus()))}function Cr(w){re&&console.log("onDocumentClick"),w.composedPath().some(G=>G.classList&&G.classList.contains(di))?(re&&console.log("onDocumentClick inside"),rl()):(re&&console.log("onDocumentClick outside"),dt())}function Sr(w){re&&console.log("onKeyDown");let G=w.key;G==="Tab"&&w.shiftKey&&(G="ShiftTab");const ke={Tab:ut?dt:null,ShiftTab:ut?dt:null,ArrowDown:Ir.bind(this),ArrowUp:Er.bind(this),Escape:Lr.bind(this),Backspace:H&&i&&!Ke?Vr.bind(this):null}[G];typeof ke=="function"&&ke(w)}function Dr(w){re&&console.log("onKeyPress"),w.key==="Enter"&&zr(w)}function zr(w){ut&&(w.preventDefault(),sl())}function Ar(w){re&&console.log("onInput"),t(2,Ke=w.target.value),Al&&clearTimeout(Al),x?Al=setTimeout(mi,x):mi()}function Fl(w){re&&console.log("unselectItem",w),t(1,Se=Se.filter(G=>G!==w)),ft.focus()}function mi(){hi()&&(t(30,Oe=0),ol())}function Tr(){re&&console.log("onInputClick"),gi()}function Lr(w){re&&console.log("onEsc"),w.stopPropagation(),ut&&(ft.focus(),dt())}function Vr(w){re&&console.log("onBackspace"),Fl(Se[Se.length-1])}function Fr(){re&&console.log("onFocus"),V(),gi()}function Nr(){re&&console.log("onBlur"),Me&&dt(),M()}function gi(){if(re&&console.log("resetListToAllItemsAndOpen"),h&&!Je.length?hi():Ke||t(31,Re=Je),ol(),Se){re&&console.log("Searching currently selected item: "+JSON.stringify(Se));const w=pi(Se,Re);w>=0&&(t(30,Oe=w),rl())}}function pi(w,G){re&&console.log("Finding index for item",w);let Y=-1;for(let ke=0;ke<G.length;ke++){const qe=G[ke];if(typeof qe>"u"){re&&console.log(`listItem ${ke} is undefined. Skipping.`);continue}if(re&&console.log("Item "+ke+": "+JSON.stringify(qe)),w===qe.item){Y=ke;break}}return re&&(Y>=0?console.log("Found index for item: "+Y):console.warn("Not found index for item: "+w)),Y}function ol(){re&&console.log("open"),!(r||bi())&&(t(37,qt=!0),t(94,ut=!0))}function dt(){re&&console.log("close"),t(94,ut=!1),t(36,ll=!1),!Ke&&W&&(t(30,Oe=0),sl())}function bi(){return O>0&&Kt<O&&(h||Kt>0)}function ki(){return bi()?(dt(),!0):!1}function vi(){re&&console.log("clear"),t(2,Ke=""),t(1,Se=H?[]:void 0),setTimeout(()=>{ft.focus()})}function wi(w,G){return Y=>{let ke=Y[G];const qe=Object.assign({highlighted:void 0},Y);qe.highlighted=ke;const Xe=ke.toLowerCase(),Gt=P?_l(Xe):Xe;if(w&&w.length){const cl=[];for(let zt=0;zt<w.length;zt++){let et=w[zt];P&&(et=_l(et));const At=et.length;let tt=0;do if(tt=Gt.indexOf(et,tt),tt>=0){let fl=tt+At;cl.push([tt,fl]),tt=fl}while(tt!==-1)}if(cl.length>
340){const zt=new Set;for(let et=0;et<cl.length;et++){const At=cl[et],tt=At[0],fl=At[1],to=Xe.substring(tt,fl);zt.add(to)}for(let et of zt){if(et==="b")continue;const At=new RegExp("("+et+")","ig"),tt=qe.highlighted.replace(At,"<b>$1</b>");qe.highlighted=tt}}}return qe}}function Mr(w){return Se?H?Se.includes(w):w===Se:!1}let al=!1;function yi(w,G){X&&w.dataTransfer.setData("source",G)}function Nl(w,G){X&&(w.preventDefault(),t(38,al=G))}function Ei(w,G){X&&t(38,al=!1)}function Ml(w,G){if(X){w.preventDefault(),t(38,al=!1);let Y=parseInt(w.dataTransfer.getData("source")),ke=G;Y!=ke&&Br(Y,ke)}}function Br(w,G){let Y=[...Se];w<G?(Y.splice(G+1,0,Y[w]),Y.splice(w,1)):(Y.splice(G,0,Y[w]),Y.splice(w+1,1)),t(1,Se=Y)}function Pr(){const{height:w}=window.visualViewport,{bottom:G,height:Y}=tl.getBoundingClientRect(),{height:ke}=$e.getBoundingClientRect();G+ke>w?t(34,$e.style.top=`-${Y+ke}px`,$e):t(34,$e.style.top="0px",$e)}const Or=()=>t(37,qt=!0),jr=(w,G)=>{G.key=="Enter"&&Fl(w)},Rr=(w,G)=>yi(G,w),Ur=(w,G)=>Nl(G,w),Hr=(w,G)=>Ei(),Kr=(w,G)=>Ml(G,w);function qr(w){Mt[w?"unshift":"push"](()=>{ft=w,t(33,ft)})}function Gr(){Ke=this.value,t(2,Ke)}const Wr=w=>Nl(w,Se.length-1),Zr=w=>Ml(w,Se.length-1),Yr=w=>{w.key=="Enter"&&vi()};function Jr(w){Mt[w?"unshift":"push"](()=>{tl=w,t(35,tl)})}const Xr=w=>Vl(w),Qr=(w,G)=>{G.key=="Enter"&&Vl(w)},xr=w=>{t(30,Oe=w)},$r=w=>{w.key=="Enter"&&sl()};function eo(w){Mt[w?"unshift":"push"](()=>{$e=w,t(34,$e)})}return n.$$set=w=>{e=Ee(Ee({},e),so(w)),t(60,a=Si(e,o)),"items"in w&&t(0,d=w.items),"searchFunction"in w&&t(63,h=w.searchFunction),"labelFieldName"in w&&t(64,g=w.labelFieldName),"keywordsFieldName"in w&&t(65,v=w.keywordsFieldName),"valueFieldName"in w&&t(66,y=w.valueFieldName),"labelFunction"in w&&t(67,I=w.labelFunction),"keywordsFunction"in w&&t(68,C=w.keywordsFunction),"valueFunction"in w&&t(3,E=w.valueFunction),"keywordsCleanFunction"in w&&t(69,A=w.keywordsCleanFunction),"textCleanFunction"in w&&t(70,S=w.textCleanFunction),"beforeChange"in w&&t(71,B=w.beforeChange),"onChange"in w&&t(72,F=w.onChange),"onFocus"in w&&t(73,V=w.onFocus),"onBlur"in w&&t(74,M=w.onBlur),"onCreate"in w&&t(75,U=w.onCreate),"selectFirstIfEmpty"in w&&t(76,W=w.selectFirstIfEmpty),"minCharactersToSearch"in w&&t(77,O=w.minCharactersToSearch),"maxItemsToShowInList"in w&&t(4,ee=w.maxItemsToShowInList),"multiple"in w&&t(5,H=w.multiple),"create"in w&&t(6,Q=w.create),"ignoreAccents"in w&&t(78,P=w.ignoreAccents),"matchAllKeywords"in w&&t(79,K=w.matchAllKeywords),"sortByMatchedKeywords"in w&&t(80,ue=w.sortByMatchedKeywords),"itemFilterFunction"in w&&t(81,$=w.itemFilterFunction),"itemSortFunction"in w&&t(82,oe=w.itemSortFunction),"lock"in w&&t(83,me=w.lock),"delay"in w&&t(84,x=w.delay),"localFiltering"in w&&t(85,be=w.localFiltering),"localSorting"in w&&t(86,_e=w.localSorting),"cleanUserText"in w&&t(87,Ne=w.cleanUserText),"lowercaseKeywords"in w&&t(88,Ie=w.lowercaseKeywords),"closeOnBlur"in w&&t(89,Me=w.closeOnBlur),"orderableSelection"in w&&t(90,X=w.orderableSelection),"hideArrow"in w&&t(7,ge=w.hideArrow),"showClear"in w&&t(91,Ae=w.showClear),"clearText"in w&&t(8,Le=w.clearText),"showLoadingIndicator"in w&&t(9,De=w.showLoadingIndicator),"noResultsText"in w&&t(10,ae=w.noResultsText),"loadingText"in w&&t(11,Ce=w.loadingText),"moreItemsText"in w&&t(12,Ot=w.moreItemsText),"createText"in w&&t(13,pt=w.createText),"placeholder"in w&&t(14,bt=w.placeholder),"className"in w&&t(15,jt=w.className),"inputClassName"in w&&t(16,Rt=w.inputClassName),"inputId"in w&&t(17,Be=w.inputId),"name"in w&&t(18,Ut=w.name),"selectName"in w&&t(19,Ht=w.selectName),"selectId"in w&&t(20,kt=w.selectId),"title"in w&&t(21,St=w.title),"html5autocomplete"in w&&t(22,Dt=w.html5autocomplete),"autocompleteOffValue"in w&&t(23,si=w.autocompleteOffValue),"readonly"in w&&t(24,ri=w.readonly),"dropdownClassName"in w&&t(25,oi=w.dropdownClassName),"disabled"in w&&t(26,ai=w.disabled),"noInputStyles"in w&&t(27,ci=w.noInputStyles),"required"in w&&t(28,fi=w.required),"debug"in w&&t(92,re=w.debug),"tabindex"in w&&t(29,ui=w.tabindex),"selectedItem"in w&&t(1,Se=w.selectedItem),"value"in w&&t(61,Sl=w.value),"highlightedItem"in w&&t(62,Dl=w.highlightedItem),"text"in w&&t(2,Ke=w.text),"$$scope"in w&&t(96,f=w.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&1|n.$$.dirty[2]&2&&(h||il()),n.$$.dirty[0]&2&&vr(),n.$$.dirty[0]&1073741824|n.$$.dirty[1]&1&&t(62,Dl=Re&&Oe&&Oe>=0&&Oe<Re.length?Re[Oe].item:null),n.$$.dirty[0]&1|n.$$.dirty[3]&6&&t(41,l=ut&&(d&&d.length>0||Kt>0)),n.$$.dirty[0]&34&&t(32,i=H&&Se&&Se.length>0||!H&&Se),n.$$.dirty[0]&32|n.$$.dirty[1]&2|n.$$.dirty[2]&538968064&&t(40,s=Ae||(me||H)&&i),n.$$.dirty[1]&2|n.$$.dirty[2]&2097152&&t(39,r=me&&i)},[d,Se,Ke,E,ee,H,Q,ge,Le,De,ae,Ce,Ot,pt,bt,jt,Rt,Be,Ut,Ht,kt,St,Dt,si,ri,oi,ai,ci,fi,ui,Oe,Re,i,ft,$e,tl,ll,qt,al,r,s,l,di,Tl,sl,Vl,Cr,Sr,Dr,Ar,Fl,Tr,Fr,Nr,vi,Mr,yi,Nl,Ei,Ml,a,Sl,Dl,h,g,v,y,I,C,A,S,B,F,V,M,U,W,O,P,K,ue,$,oe,me,x,be,_e,Ne,Ie,Me,X,Ae,re,wi,ut,Kt,f,c,Or,jr,Rr,Ur,Hr,Kr,qr,Gr,Wr,Zr,Yr,Jr,Xr,Qr,xr,$r,eo]}class au extends ye{constructor(e){super(),we(this,e,ou,nu,ve,{items:0,searchFunction:63,labelFieldName:64,keywordsFieldName:65,valueFieldName:66,labelFunction:67,keywordsFunction:68,valueFunction:3,keywordsCleanFunction:69,textCleanFunction:70,beforeChange:71,onChange:72,onFocus:73,onBlur:74,onCreate:75,selectFirstIfEmpty:76,minCharactersToSearch:77,maxItemsToShowInList:4,multiple:5,create:6,ignoreAccents:78,matchAllKeywords:79,sortByMatchedKeywords:80,itemFilterFunction:81,itemSortFunction:82,lock:83,delay:84,localFiltering:85,localSorting:86,cleanUserText:87,lowercaseKeywords:88,closeOnBlur:89,orderableSelection:90,hideArrow:7,showClear:91,clearText:8,showLoadingIndicator:9,noResultsText:10,loadingText:11,moreItemsText:12,createText:13,placeholder:14,className:15,inputClassName:16,inputId:17,name:18,selectName:19,selectId:20,title:21,html5autocomplete:22,autocompleteOffValue:23,readonly:24,dropdownClassName:25,disabled:26,noInputStyles:27,required:28,debug:92,tabindex:29,selectedItem:1,value:61,highlightedItem:62,text:2,highlightFilter:93},null,[-1,-1,-1,-1,-1])}get highlightFilter(){return this.$$.ctx[93]}}function Es(n,e,t){const l=n.slice();return l[15]=e[t],l}function Is(n,e,t){const l=n.slice();return l[18]=e[t],l}function Cs(n,e,t){const l=n.slice();return l[21]=e[t],l}function cu(n){let e,t,l=n[24]+"";return{c(){e=p("div"),t=new je(!1),this.h()},l(i){e=b(i,"DIV",{slot:!0});var s=k(e);
34t=We(s,!1),s.forEach(_),this.h()},h(){t.a=null,u(e,"slot","item")},m(i,s){D(i,e,s),t.m(l,e)},p(i,s){s&16777216&&l!==(l=i[24]+"")&&t.p(l)},d(i){i&&_(e)}}}function fu(n){let e,t="<span>Einen kleinen Moment bitte...</span>";return{c(){e=p("div"),e.innerHTML=t,this.h()},l(l){e=b(l,"DIV",{slot:!0,"data-svelte-h":!0}),ze(e)!=="svelte-ex06rf"&&(e.innerHTML=t),this.h()},h(){u(e,"slot","loading")},m(l,i){D(l,e,i)},p:q,d(l){l&&_(e)}}}function uu(n){let e,t="<span>Keine Einträge gefunden</span>";return{c(){e=p("div"),e.innerHTML=t,this.h()},l(l){e=b(l,"DIV",{slot:!0,"data-svelte-h":!0}),ze(e)!=="svelte-6dgia6"&&(e.innerHTML=t),this.h()},h(){u(e,"slot","no-results")},m(l,i){D(l,e,i)},p:q,d(l){l&&_(e)}}}function Ss(n){let e,t,l,i,s,r,o,a=n[1].label+"",c,f,d,h,g,v,y=n[7].title+"",I,C,E,A=n[7].str+"",S,B,F,V=n[7].plz+"",M,U,W=n[7].gmd+"",O,ee,H,Q,P=n[7].tel+"",K,ue,$,oe,me=n[7].fax+"",x,be,_e,Ne,Ie,Me;l=new He({props:{title:"Dienststelle",bpborder:!0,size:"h5"}});let X=n[5]&&Ds(n),ge=n[7].emc&&n[7].emc.length&&zs(n),Ae=n[7].dss&&n[7].dss.length&&As(n),Le=n[5]&&Ts(n),De=n[6]&&n[6].length>1&&Bs(n);return{c(){e=p("div"),t=p("div"),se(l.$$.fragment),i=T(),s=p("div"),r=p("div"),o=p("div"),c=j(a),f=T(),X&&X.c(),d=T(),h=p("div"),g=p("ul"),v=p("li"),I=j(y),C=T(),E=p("li"),S=j(A),B=T(),F=p("li"),M=j(V),U=T(),O=j(W),ee=T(),H=p("li"),Q=p("i"),K=j(P),ue=T(),$=p("li"),oe=p("i"),x=j(me),be=T(),ge&&ge.c(),_e=T(),Ae&&Ae.c(),Ne=T(),Le&&Le.c(),Ie=T(),De&&De.c(),this.h()},l(ae){e=b(ae,"DIV",{class:!0});var Ce=k(e);t=b(Ce,"DIV",{class:!0});var Ot=k(t);he(l.$$.fragment,Ot),Ot.forEach(_),i=L(Ce),s=b(Ce,"DIV",{class:!0});var pt=k(s);r=b(pt,"DIV",{class:!0});var bt=k(r);o=b(bt,"DIV",{class:!0});var jt=k(o);c=R(jt,a),jt.forEach(_),f=L(bt),X&&X.l(bt),bt.forEach(_),d=L(pt),h=b(pt,"DIV",{class:!0});var Rt=k(h);g=b(Rt,"UL",{});var Be=k(g);v=b(Be,"LI",{});var Ut=k(v);I=R(Ut,y),Ut.forEach(_),C=L(Be),E=b(Be,"LI",{});var Ht=k(E);S=R(Ht,A),Ht.forEach(_),B=L(Be),F=b(Be,"LI",{});var kt=k(F);M=R(kt,V),U=L(kt),O=R(kt,W),kt.forEach(_),ee=L(Be),H=b(Be,"LI",{});var St=k(H);Q=b(St,"I",{class:!0}),k(Q).forEach(_),K=R(St,P),St.forEach(_),ue=L(Be),$=b(Be,"LI",{});var Dt=k($);oe=b(Dt,"I",{class:!0}),k(oe).forEach(_),x=R(Dt,me),Dt.forEach(_),be=L(Be),ge&&ge.l(Be),_e=L(Be),Ae&&Ae.l(Be),Be.forEach(_),Rt.forEach(_),pt.forEach(_),Ne=L(Ce),Le&&Le.l(Ce),Ie=L(Ce),De&&De.l(Ce),Ce.forEach(_),this.h()},h(){u(t,"class","w-full"),u(o,"class","flex-1"),u(r,"class","flex flex-col"),u(Q,"class","mr-1 fa-solid fa-phone w-[20px]"),u(oe,"class","mr-1 fa-solid fa-fax w-[20px]"),u(h,"class","main-dst"),u(s,"class","w-full grid grid-cols-1 md:grid-cols-2 gap-8"),u(e,"class","grid grid-cols-1 gap-8")},m(ae,Ce){D(ae,e,Ce),m(e,t),ie(l,t,null),m(e,i),m(e,s),m(s,r),m(r,o),m(o,c),m(r,f),X&&X.m(r,null),m(s,d),m(s,h),m(h,g),m(g,v),m(v,I),m(g,C),m(g,E),m(E,S),m(g,B),m(g,F),m(F,M),m(F,U),m(F,O),m(g,ee),m(g,H),m(H,Q),m(H,K),m(g,ue),m(g,$),m($,oe),m($,x),m(g,be),ge&&ge.m(g,null),m(g,_e),Ae&&Ae.m(g,null),m(e,Ne),Le&&Le.m(e,null),m(e,Ie),De&&De.m(e,null),Me=!0},p(ae,Ce){(!Me||Ce&2)&&a!==(a=ae[1].label+"")&&J(c,a),ae[5]?X?X.p(ae,Ce):(X=Ds(ae),X.c(),X.m(r,null)):X&&(X.d(1),X=null),(!Me||Ce&128)&&y!==(y=ae[7].title+"")&&J(I,y),(!Me||Ce&128)&&A!==(A=ae[7].str+"")&&J(S,A),(!Me||Ce&128)&&V!==(V=ae[7].plz+"")&&J(M,V),(!Me||Ce&128)&&W!==(W=ae[7].gmd+"")&&J(O,W),(!Me||Ce&128)&&P!==(P=ae[7].tel+"")&&J(K,P),(!Me||Ce&128)&&me!==(me=ae[7].fax+"")&&J(x,me),ae[7].emc&&ae[7].emc.length?ge?ge.p(ae,Ce):(ge=zs(ae),ge.c(),ge.m(g,_e)):ge&&(ge.d(1),ge=null),ae[7].dss&&ae[7].dss.length?Ae?Ae.p(ae,Ce):(Ae=As(ae),Ae.c(),Ae.m(g,null)):Ae&&(Ae.d(1),Ae=null),ae[5]?Le?Le.p(ae,Ce):(Le=Ts(ae),Le.c(),Le.m(e,Ie)):Le&&(Le.d(1),Le=null),ae[6]&&ae[6].length>1?De?De.p(ae,Ce):(De=Bs(ae),De.c(),De.m(e,null)):De&&(De.d(1),De=null)},i(ae){Me||(z(l.$$.fragment,ae),Me=!0)},o(ae){N(l.$$.fragment,ae),Me=!1},d(ae){ae&&_(e),ne(l),X&&X.d(),ge&&ge.d(),Ae&&Ae.d(),Le&&Le.d(),De&&De.d()}}}function Ds(n){let e,t,l=n[1].label+"",i,s,r,o;return{c(){e=p("p"),t=j("Für "),i=j(l),s=j(" sind mehrere Polizeidienststellen zuständig."),r=p("br"),o=j(` 35 Suchen Sie mit einem StraÃennamen weiter oder wenden Sie sich an diese 36 Polizeidienststelle.`),this.h()},l(a){e=b(a,"P",{class:!0});var c=k(e);t=R(c,"Für "),i=R(c,l),s=R(c," sind mehrere Polizeidienststellen zuständig."),r=b(c,"BR",{}),o=R(c,` 37 Suchen Sie mit einem StraÃennamen weiter oder wenden Sie sich an diese
38 Polizeidienststelle.`),c.forEach(_),this.h()},h(){u(e,"class","m-0")},m(a,c){D(a,e,c),m(e,t),m(e,i),m(e,s),m(e,r),m(e,o)},p(a,c){c&2&&l!==(l=a[1].label+"")&&J(i,l)},d(a){a&&_(e)}}}function zs(n){let e,t,l,i,s,r="Kontakt",o;return{c(){e=p("li"),t=p("a"),l=p("i"),i=T(),s=p("span"),s.textContent=r,this.h()},l(a){e=b(a,"LI",{});var c=k(e);t=b(c,"A",{href:!0,target:!0,rel:!0,class:!0});var f=k(t);l=b(f,"I",{class:!0}),k(l).forEach(_),i=L(f),s=b(f,"SPAN",{"data-svelte-h":!0}),ze(s)!=="svelte-f2a4ou"&&(s.textContent=r),f.forEach(_),c.forEach(_),this.h()},h(){u(l,"class","mr-1 fa-solid fa-envelope pointer-events-none w-[20px]"),u(t,"href",o=n[7].emc),u(t,"target","_blank"),u(t,"rel","noopener noreferrer"),u(t,"class","text-bp-blue hover:underline")},m(a,c){D(a,e,c),m(e,t),m(t,l),m(t,i),m(t,s)},p(a,c){c&128&&o!==(o=a[7].emc)&&u(t,"href",o)},d(a){a&&_(e)}}}function As(n){let e,t,l,i,s,r="Weitere Informationen",o;return{c(){e=p("li"),t=p("a"),l=p("i"),i=T(),s=p("span"),s.textContent=r,this.h()},l(a){e=b(a,"LI",{});var c=k(e);t=b(c,"A",{href:!0,target:!0,rel:!0,class:!0});var f=k(t);l=b(f,"I",{class:!0}),k(l).forEach(_),i=L(f),s=b(f,"SPAN",{"data-svelte-h":!0}),ze(s)!=="svelte-1k59j1i"&&(s.textContent=r),f.forEach(_),c.forEach(_),this.h()},h(){u(l,"class","mr-1 fa-solid fa-link pointer-events-none w-[20px]"),u(t,"href",o=n[7].dss),u(t,"target","_blank"),u(t,"rel","noopener noreferrer"),u(t,"class","text-bp-blue hover:underline")},m(a,c){D(a,e,c),m(e,t),m(t,l),m(t,i),m(t,s)},p(a,c){c&128&&o!==(o=a[7].dss)&&u(t,"href",o)},d(a){a&&_(e)}}}function Ts(n){let e,t,l="Suche nach StraÃe",i,s,r,o,a,c='<i class="fa-solid fa-road" role="presentation" tabindex="-1"></i>',f,d,h,g,v,y,I,C,E=n[4].length&&Ls(n);return{c(){e=p("details"),t=p("summary"),t.textContent=l,i=T(),s=p("div"),r=p("div"),o=p("div"),a=p("div"),a.innerHTML=c,f=T(),d=p("div"),h=p("input"),g=T(),v=p("input"),y=T(),E&&E.c(),this.h()},l(A){e=b(A,"DETAILS",{class:!0});var S=k(e);t=b(S,"SUMMARY",{class:!0,"data-svelte-h":!0}),ze(t)!=="svelte-1pva8o5"&&(t.textContent=l),i=L(S),s=b(S,"DIV",{class:!0});var B=k(s);r=b(B,"DIV",{class:!0});var F=k(r);o=b(F,"DIV",{class:!0});var V=k(o);a=b(V,"DIV",{class:!0,"data-svelte-h":!0}),ze(a)!=="svelte-fjzipb"&&(a.innerHTML=c),f=L(V),d=b(V,"DIV",{class:!0});var M=k(d);h=b(M,"INPUT",{id:!0,type:!0,class:!0,placeholder:!0}),g=L(M),v=b(M,"INPUT",{id:!0,type:!0,class:!0,placeholder:!0}),M.forEach(_),V.forEach(_),F.forEach(_),y=L(B),E&&E.l(B),B.forEach(_),S.forEach(_),this.h()},h(){u(t,"class","cursor-pointer border-t border-bp-gray-middle bg-inherit pt-2"),u(a,"class","flex-node mr-4 text-2xl text-bp-blue dark:text-white"),u(h,"id","search-str"),u(h,"type","text"),u(h,"class","p-2 border bg-white dark:bg-black text-black dark:text-white font-sans border-bp-gray-middle placeholder:text-bp-gray-dark"),u(h,"placeholder","StraÃe"),u(v,"id","search-hnr"),u(v,"type","text"),u(v,"class","p-2 border border-s-0 bg-white dark:bg-black text-black dark:text-white font-sans border-bp-gray-middle placeholder:text-bp-gray-dark max-w-[80px]"),u(v,"placeholder","Haus Nr."),u(d,"class","flex"),u(o,"class","search flex items-center svelte-7iwn4q"),u(r,"class","w-full grid grid-cols-1 gap-8"),u(s,"class","w-full mt-2 grid grid-cols-1 gap-8"),u(e,"class","duration-500"),e.open=!0},m(A,S){D(A,e,S),m(e,t),m(e,i),m(e,s),m(s,r),m(r,o),m(o,a),m(o,f),m(o,d),m(d,h),st(h,n[2]),m(d,g),m(d,v),st(v,n[3]),m(s,y),E&&E.m(s,null),I||(C=[de(h,"input",n[12]),de(h,"input",n[9]),de(v,"input",n[13]),de(v,"input",n[9])],I=!0)},p(A,S){S&4&&h.value!==A[2]&&st(h,A[2]),S&8&&v.value!==A[3]&&st(v,A[3]),A[4].length?E?E.p(A,S):(E=Ls(A),E.c(),E.m(s,null)):E&&(E.d(1),E=null)},d(A){A&&_(e),E&&E.d(),I=!1,Ue(C)}}}function Ls(n){let e,t=le(n[4]),l=[];for(let i=0;i<t.length;i+=1)l[i]=Ms(Is(n,t,i));return{c(){e=p("div");for(let i=0;i<l.length;i+=1)l[i].c();this.h()},l(i){e=b(i,"DIV",{class:!0});var s=k(e);for(let r=0;r<l.length;r+=1)l[r].l(s);s.forEach(_),this.h()},h(){u(e,"class","w-full grid grid-cols-2 gap-4")},m(i,s){D(i,e,s);for(let r=0;r<l.length;r+=1)l[r]&&l[r].m(e,null)},p(i,s){if(s&1040){t=le(i[4]);let r;for(r=0;r<t.length;r+=1){const o=Is(i,t,r);l[r]?l[r].p(o,s):(l[r]=Ms(o),l[r].c(),l[r].m(e,null))}for(;r<l.length;r+=1)l[r].d(1);l.length=t.length}}
38,d(i){i&&_(e),Fe(l,i)}}}function Vs(n){let e,t,l,i=n[21].txt+"",s,r,o,a,c,f,d;return{c(){e=p("li"),t=p("button"),l=new je(!1),c=T(),this.h()},l(h){e=b(h,"LI",{});var g=k(e);t=b(g,"BUTTON",{class:!0,"data-key":!0,"data-plz":!0,"data-von":!0,"data-bis":!0});var v=k(t);l=We(v,!1),v.forEach(_),c=L(g),g.forEach(_),this.h()},h(){l.a=null,u(t,"class","text-bp-blue hover:underline"),u(t,"data-key",s=n[21].key),u(t,"data-plz",r=n[21].plz),u(t,"data-von",o=n[21].hsnrv),u(t,"data-bis",a=n[21].hsnrb)},m(h,g){D(h,e,g),m(e,t),l.m(i,t),m(e,c),f||(d=de(t,"click",Qt(n[10])),f=!0)},p(h,g){g&16&&i!==(i=h[21].txt+"")&&l.p(i),g&16&&s!==(s=h[21].key)&&u(t,"data-key",s),g&16&&r!==(r=h[21].plz)&&u(t,"data-plz",r),g&16&&o!==(o=h[21].hsnrv)&&u(t,"data-von",o),g&16&&a!==(a=h[21].hsnrb)&&u(t,"data-bis",a)},d(h){h&&_(e),f=!1,d()}}}function Fs(n){let e,t,l,i,s,r="Kontakt aufnehmen",o;return{c(){e=p("li"),t=p("a"),l=p("i"),i=T(),s=p("span"),s.textContent=r,this.h()},l(a){e=b(a,"LI",{});var c=k(e);t=b(c,"A",{href:!0,target:!0,rel:!0,class:!0});var f=k(t);l=b(f,"I",{class:!0,role:!0}),k(l).forEach(_),i=L(f),s=b(f,"SPAN",{"data-svelte-h":!0}),ze(s)!=="svelte-1w1q29t"&&(s.textContent=r),f.forEach(_),c.forEach(_),this.h()},h(){u(l,"class","mr-1 fa-solid fa-envelope pointer-events-none w-[20px]"),u(l,"role","presentation"),u(t,"href",o=n[18].dst.emc),u(t,"target","_blank"),u(t,"rel","noopener noreferrer"),u(t,"class","text-bp-blue hover:underline")},m(a,c){D(a,e,c),m(e,t),m(t,l),m(t,i),m(t,s)},p(a,c){c&16&&o!==(o=a[18].dst.emc)&&u(t,"href",o)},d(a){a&&_(e)}}}function Ns(n){let e,t,l,i,s,r="Weitere Informationen",o;return{c(){e=p("li"),t=p("a"),l=p("i"),i=T(),s=p("span"),s.textContent=r,this.h()},l(a){e=b(a,"LI",{});var c=k(e);t=b(c,"A",{href:!0,target:!0,rel:!0,class:!0});var f=k(t);l=b(f,"I",{class:!0,role:!0}),k(l).forEach(_),i=L(f),s=b(f,"SPAN",{"data-svelte-h":!0}),ze(s)!=="svelte-1k59j1i"&&(s.textContent=r),f.forEach(_),c.forEach(_),this.h()},h(){u(l,"class","mr-1 fa-solid fa-link pointer-events-none w-[20px]"),u(l,"role","presentation"),u(t,"href",o=n[18].dst.dss),u(t,"target","_blank"),u(t,"rel","noopener noreferrer"),u(t,"class","text-bp-blue hover:underline")},m(a,c){D(a,e,c),m(e,t),m(t,l),m(t,i),m(t,s)},p(a,c){c&16&&o!==(o=a[18].dst.dss)&&u(t,"href",o)},d(a){a&&_(e)}}}function Ms(n){let e,t,l,i,s,r,o=n[18].dst.title+"",a,c,f,d=n[18].dst.str+"",h,g,v,y=n[18].dst.plz+"",I,C,E=n[18].dst.gmd+"",A,S,B,F,V=n[18].dst.tel+"",M,U,W,O,ee=n[18].dst.fax+"",H,Q,P,K,ue=le(n[18].ska),$=[];for(let x=0;x<ue.length;x+=1)$[x]=Vs(Cs(n,ue,x));let oe=n[18].dst.emc&&n[18].dst.emc.length&&Fs(n),me=n[18].dst.dss&&n[18].dst.dss.length&&Ns(n);return{c(){e=p("div"),t=p("ul");for(let x=0;x<$.length;x+=1)$[x].c();l=T(),i=p("div"),s=p("ul"),r=p("li"),a=j(o),c=T(),f=p("li"),h=j(d),g=T(),v=p("li"),I=j(y),C=T(),A=j(E),S=T(),B=p("li"),F=p("i"),M=j(V),U=T(),W=p("li"),O=p("i"),H=j(ee),Q=T(),oe&&oe.c(),P=T(),me&&me.c(),K=T(),this.h()},l(x){e=b(x,"DIV",{class:!0});var be=k(e);t=b(be,"UL",{});var _e=k(t);for(let De=0;De<$.length;De+=1)$[De].l(_e);_e.forEach(_),be.forEach(_),l=L(x),i=b(x,"DIV",{class:!0});var Ne=k(i);s=b(Ne,"UL",{});var Ie=k(s);r=b(Ie,"LI",{});var Me=k(r);a=R(Me,o),Me.forEach(_),c=L(Ie),f=b(Ie,"LI",{});var X=k(f);h=R(X,d),X.forEach(_),g=L(Ie),v=b(Ie,"LI",{});var ge=k(v);I=R(ge,y),C=L(ge),A=R(ge,E),ge.forEach(_),S=L(Ie),B=b(Ie,"LI",{});var Ae=k(B);F=b(Ae,"I",{class:!0,role:!0}),k(F).forEach(_),M=R(Ae,V),Ae.forEach(_),U=L(Ie),W=b(Ie,"LI",{});var Le=k(W);O=b(Le,"I",{class:!0,role:!0}),k(O).forEach(_),H=R(Le,ee),Le.forEach(_),Q=L(Ie),oe&&oe.l(Ie),P=L(Ie),me&&me.l(Ie),Ie.forEach(_),K=L(Ne),Ne.forEach(_),this.h()},h(){u(e,"class","result-ska"),u(F,"class","mr-1 fa-solid fa-phone pointer-events-none w-[20px]"),u(F,"role","presentation"),u(O,"class","mr-1 fa-solid fa-fax pointer-events-none w-[20px]"),u(O,"role","presentation"),u(i,"class","result-dst")},m(x,be){D(x,e,be),m(e,t);for(let _e=0;_e<$.length;_e+=1)$[_e]&&$[_e].m(t,null);D(x,l,be),D(x,i,be),m(i,s),m(s,r),m(r,a),m(s,c),m(s,f),m(f,h),m(s,g),m(s,v),m(v,I),m(v,C),m(v,A),m(s,S),m(s,B),m(B,F),m(B,M),m(s,U),m(s,W),m(W,O),m(W,H),m(s,Q),oe&&oe.m(s,null),m(s,P),me&&me.m(s,null),m(i,K)}
38,p(x,be){if(be&1040){ue=le(x[18].ska);let _e;for(_e=0;_e<ue.length;_e+=1){const Ne=Cs(x,ue,_e);$[_e]?$[_e].p(Ne,be):($[_e]=Vs(Ne),$[_e].c(),$[_e].m(t,null))}for(;_e<$.length;_e+=1)$[_e].d(1);$.length=ue.length}be&16&&o!==(o=x[18].dst.title+"")&&J(a,o),be&16&&d!==(d=x[18].dst.str+"")&&J(h,d),be&16&&y!==(y=x[18].dst.plz+"")&&J(I,y),be&16&&E!==(E=x[18].dst.gmd+"")&&J(A,E),be&16&&V!==(V=x[18].dst.tel+"")&&J(M,V),be&16&&ee!==(ee=x[18].dst.fax+"")&&J(H,ee),x[18].dst.emc&&x[18].dst.emc.length?oe?oe.p(x,be):(oe=Fs(x),oe.c(),oe.m(s,P)):oe&&(oe.d(1),oe=null),x[18].dst.dss&&x[18].dst.dss.length?me?me.p(x,be):(me=Ns(x),me.c(),me.m(s,null)):me&&(me.d(1),me=null)},d(x){x&&(_(e),_(l),_(i)),Fe($,x),oe&&oe.d(),me&&me.d()}}}function Bs(n){let e,t,l,i=n[6].length+"",s,r,o,a,c=le(n[6]),f=[];for(let d=0;d<c.length;d+=1)f[d]=Os(Es(n,c,d));return{c(){e=p("details"),t=p("summary"),l=j("Weitere Dienststellen: "),s=j(i),r=T(),o=p("div"),a=p("div");for(let d=0;d<f.length;d+=1)f[d].c();this.h()},l(d){e=b(d,"DETAILS",{class:!0});var h=k(e);t=b(h,"SUMMARY",{class:!0});var g=k(t);l=R(g,"Weitere Dienststellen: "),s=R(g,i),g.forEach(_),r=L(h),o=b(h,"DIV",{class:!0});var v=k(o);a=b(v,"DIV",{class:!0});var y=k(a);for(let I=0;I<f.length;I+=1)f[I].l(y);y.forEach(_),v.forEach(_),h.forEach(_),this.h()},h(){u(t,"class","cursor-pointer border-t border-bp-gray-middle bg-inherit pt-2"),u(a,"class","w-full grid grid-cols-1 md:grid-cols-2 gap-8"),u(o,"class","mt-2"),u(e,"class","duration-500"),e.open=!1},m(d,h){D(d,e,h),m(e,t),m(t,l),m(t,s),m(e,r),m(e,o),m(o,a);for(let g=0;g<f.length;g+=1)f[g]&&f[g].m(a,null)},p(d,h){if(h&64&&i!==(i=d[6].length+"")&&J(s,i),h&64){c=le(d[6]);let g;for(g=0;g<c.length;g+=1){const v=Es(d,c,g);f[g]?f[g].p(v,h):(f[g]=Os(v),f[g].c(),f[g].m(a,null))}for(;g<f.length;g+=1)f[g].d(1);f.length=c.length}},d(d){d&&_(e),Fe(f,d)}}}function Ps(n){let e,t,l,i,s,r="Kontakt",o;return{c(){e=p("li"),t=p("a"),l=p("i"),i=T(),s=p("span"),s.textContent=r,this.h()},l(a){e=b(a,"LI",{});var c=k(e);t=b(c,"A",{href:!0,target:!0,rel:!0,class:!0});var f=k(t);l=b(f,"I",{class:!0,role:!0,tabindex:!0}),k(l).forEach(_),i=L(f),s=b(f,"SPAN",{"data-svelte-h":!0}),ze(s)!=="svelte-f2a4ou"&&(s.textContent=r),f.forEach(_),c.forEach(_),this.h()},h(){u(l,"class","mr-1 fa-solid fa-envelope"),u(l,"role","presentation"),u(l,"tabindex","-1"),u(t,"href",o=n[15].emc),u(t,"target","_blank"),u(t,"rel","noopener noreferrer"),u(t,"class","text-bp-blue hover:underline")},m(a,c){D(a,e,c),m(e,t),m(t,l),m(t,i),m(t,s)},p(a,c){c&64&&o!==(o=a[15].emc)&&u(t,"href",o)},d(a){a&&_(e)}}}function Os(n){let e,t,l,i=n[15].title+"",s,r,o,a=n[15].str+"",c,f,d,h=n[15].plz+"",g,v,y=n[15].gmd+"",I,C,E,A,S=n[15].tel+"",B,F,V,M,U=n[15].fax+"",W,O,ee,H=n[15].emc&&n[15].emc.length&&Ps(n);return{c(){e=p("div"),t=p("ul"),l=p("li"),s=j(i),r=T(),o=p("li"),c=j(a),f=T(),d=p("li"),g=j(h),v=T(),I=j(y),C=T(),E=p("li"),A=p("i"),B=j(S),F=T(),V=p("li"),M=p("i"),W=j(U),O=T(),H&&H.c(),ee=T(),this.h()},l(Q){e=b(Q,"DIV",{class:!0});var P=k(e);t=b(P,"UL",{});var K=k(t);l=b(K,"LI",{});var ue=k(l);s=R(ue,i),ue.forEach(_),r=L(K),o=b(K,"LI",{});var $=k(o);c=R($,a),$.forEach(_),f=L(K),d=b(K,"LI",{});var oe=k(d);g=R(oe,h),v=L(oe),I=R(oe,y),oe.forEach(_),C=L(K),E=b(K,"LI",{});var me=k(E);A=b(me,"I",{class:!0,role:!0,tabindex:!0}),k(A).forEach(_),B=R(me,S),me.forEach(_),F=L(K),V=b(K,"LI",{});var x=k(V);M=b(x,"I",{class:!0,role:!0,tabindex:!0}),k(M).forEach(_),W=R(x,U),x.forEach(_),O=L(K),H&&H.l(K),K.forEach(_),ee=L(P),P.forEach(_),this.h()},h(){u(A,"class","mr-1 fa-solid fa-phone"),u(A,"role","presentation"),u(A,"tabindex","-1"),u(M,"class","mr-1 fa-solid fa-fax"),u(M,"role","presentation"),u(M,"tabindex","-1"),u(e,"class","")},m(Q,P){D(Q,e,P),m(e,t),m(t,l),m(l,s),m(t,r),m(t,o),m(o,c),m(t,f),m(t,d),m(d,g),m(d,v),m(d,I),m(t,C),m(t,E),m(E,A),m(E,B),m(t,F),m(t,V),m(V,M),m(V,W),m(t,O),H&&H.m(t,null),m(e,ee)},p(Q,P){P&64&&i!==(i=Q[15].title+"")&&J(s,i),P&64&&a!==(a=Q[15].str+"")&&J(c,a),P&64&&h!==(h=Q[15].plz+"")&&J(g,h),P&64&&y!==(y=Q[15].gmd+"")&&J(I,y),P&64&&S!==(S=Q[15].tel+"")&&J(B,S),P&64&&U!==(U=Q[15].fax+"")&&J(W,U),Q[15].emc&&Q[15].emc.length?H?H.p(Q,P):(H=Ps(Q),H.c(),H.m(t,null)):H&&(H.d(1),H=null)},d(Q){Q&&_(e),H&&H.d()}}}function du(n){let e,t,l,i='<i class="fa-solid fa-magnifying-glass-location" role="presentation" tabindex="-1"></i>',s,r,o,a,c;function f(g){n[11](g)}let d={searchFunction:n[8],className:"flex-1 h-full flex items-center px-2 bg-white dark:bg-black text-black dark:text-white font-sans rounded-none border border-bp-gray-middle form-input",inputClassName:"w-full dark:bg-black dark:text-white block focus:outline-none p-0 border-0 font-inherit text-base",noInputStyles:!0,localFiltering:!1,showLoadingIndicator:!0,hideArrow:!0,labelFieldName:"label",valueFieldName:"key",delay:"200",placeholder:"Gemeinde, Gemeindeteil, Stadt",$$slots:{"no-results":[uu],loading:[fu],item:[cu,({label:g,item:v})=>({24:g,25:v}),({label:g,item:v})=>(g?16777216:0)|(v?33554432:0)]},$$scope:{ctx:n}};n[0]!==void 0&&(d.selectedItem=n[0]),r=new au({props:d}),Mt.push(()=>No(r,"selectedItem",f));let h=n[1]&&Ss(n);return{c(){e=p("div"),t=p("div"),l=p("div"),l.innerHTML=i,s=T(),se(r.$$.fragment),a=T(),h&&h.c(),this.h()},l(g){e=b(g,"DIV",{class:!0});var v=k(e);
38t=b(v,"DIV",{class:!0});var y=k(t);l=b(y,"DIV",{class:!0,"data-svelte-h":!0}),ze(l)!=="svelte-1fk6m8p"&&(l.innerHTML=i),s=L(y),he(r.$$.fragment,y),y.forEach(_),a=L(v),h&&h.l(v),v.forEach(_),this.h()},h(){u(l,"class","flex-node mr-4 text-2xl text-bp-blue dark:text-white"),u(t,"class","search flex items-center svelte-7iwn4q"),u(e,"class","component-search-dst grid grid-cols-1 gap-8")},m(g,v){D(g,e,v),m(e,t),m(t,l),m(t,s),ie(r,t,null),m(e,a),h&&h.m(e,null),c=!0},p(g,[v]){const y={};v&83886080&&(y.$$scope={dirty:v,ctx:g}),!o&&v&1&&(o=!0,y.selectedItem=g[0],So(()=>o=!1)),r.$set(y),g[1]?h?(h.p(g,v),v&2&&z(h,1)):(h=Ss(g),h.c(),z(h,1),h.m(e,null)):h&&(ce(),N(h,1,1,()=>{h=null}),fe())},i(g){c||(z(r.$$.fragment,g),z(h),c=!0)},o(g){N(r.$$.fragment,g),N(h),c=!1},d(g){g&&_(e),ne(r),h&&h.d()}}}const js="/es/search";function hu(n,e,t){let l,i,s,r,o;const a={method:"POST",headers:{Accept:"application/json","Access-Control-Allow-Origin":"*","Cache-Control":"no-cache, no-store","Content-Type":"application/json",Pragma:"no-cache"},body:null};let c=null,f=null,d=null;async function h(E){a.body=JSON.stringify({type:"acgmd",q:E});let A=await fetch(js,a),S=await A.json(),B=[];if(A.ok)return S.hits.hits.forEach(F=>{const V=[];F._source.dst.forEach(Q=>{const P={title:Q.dstdesc,plz:Q.dstplz,gmd:Q.dstgmdkt,str:Q.dststr+" "+Q.dsthnr,tel:Q.dsttele,fax:Q.dsttelf,emc:rt.forms.contact.dst+Q.dstog2s,dss:Q.page?rt.categories.dst+Q.dstog2s+".html":""};V.push(P)});let M=F._source.plz===99999||F._source.plz===null?"":F._source.plz,U=M,W=F._source.gmd,O=F._source.gdt;F.xhighlight&&(U=F.highlight.plz?F.highlight.plz[0]:M,W=F.highlight.gmd?F.highlight.gmd[0]:F._source.gmd,O=F.highlight.gdt?F.highlight.gdt[0]:F._source.gdt);const ee=U+" "+W+" "+O,H={key:F._source.key,label:ee,gmd:F._source.gmd,gdt:F._source.gdt,gmdgdt:F._source.gmdgdt,dst:V,streets:F._source.dsts};B.push(H)}),B}async function g(){const E=JSON.stringify({gmd:l.key,str:f,hnr:d});a.body=JSON.stringify({type:"acstr2",q:E});let A=await fetch(js,a),S=await A.json(),B=[];A.ok&&(S.hits.hits.forEach(F=>{const V={title:F._source.dstdesc,plz:F._source.dstplz,gmd:F._source.dstgmdkt,str:F._source.dststr+" "+F._source.dsthsnr,tel:F._source.dsttele,fax:F._source.dsttelf,emc:rt.forms.contact.dst+F._source.dstog2s,dss:F._source.page?rt.categories.dst+F._source.dstog2s+".html":""};let M=[];F.inner_hits.dststreets.hits.hits.forEach(U=>{const W=U._source.skahsnrv?parseInt(U._source.skahsnrv):0,O=W&&U._source.skahsnrb?parseInt(U._source.skahsnrb):0,ee=W>0&&O>0?" "+W+" - "+O:"";let H=U._source.skaplzs+" "+U.highlight["dststreets.skaklart"][0]?U.highlight["dststreets.skaklart"][0]:U._source.skaklart;H+=ee,M.push({txt:H.trim(),key:U._source.skaklart,plz:U._source.skaplzs,hsnrv:W,hsnrb:O,hsnr:W>0&&O>0})}),B.push({ska:M,dst:V})}),t(4,i=B))}function v(){t(2,f=this.dataset.key),this.dataset.von===this.dataset.bis&&t(3,d=this.dataset.von),g(),document.getElementById("search-hnr").focus()}function y(E){c=E,t(0,c)}function I(){f=this.value,t(2,f),t(1,l),t(0,c)}function C(){d=this.value,t(3,d)}return n.$$.update=()=>{n.$$.dirty&3&&l!==c&&(t(1,l=c),t(2,f=null)),n.$$.dirty&2&&t(7,s=l&&l.dst?l.dst.shift():null),n.$$.dirty&2&&t(6,r=l&&l.dst?l.dst:null),n.$$.dirty&2&&t(5,o=!!(l&&l.streets>0))},t(1,l=null),t(4,i=[]),[c,l,f,d,i,o,r,s,h,g,v,y,I,C]}class _u extends ye{constructor(e){super(),we(this,e,hu,du,ve,{})}}function Rs(n,e,t){const l=n.slice();return l[3]=e[t],l}function mu(n){let e,t=n[6].message+"",l;return{c(){e=p("p"),l=j(t),this.h()},l(i){e=b(i,"P",{style:!0});var s=k(e);l=R(s,t),s.forEach(_),this.h()},h(){lt(e,"color","red")},m(i,s){D(i,e,s),m(e,l)},p(i,s){s&1&&t!==(t=i[6].message+"")&&J(l,t)},i:q,o:q,d(i){i&&_(e)}}}function gu(n){let e,t,l=n[2].actions&&n[2].actions.length&&Us(n);return{c(){l&&l.c(),e=Z()},l(i){l&&l.l(i),e=Z()},m(i,s){l&&l.m(i,s),D(i,e,s),t=!0},p(i,s){i[2].actions&&i[2].actions.length?l?(l.p(i,s),s&1&&z(l,1)):(l=Us(i),l.c(),z(l,1),l.m(e.parentNode,e)):l&&(ce(),N(l,1,1,()=>{l=null}),fe())},i(i){t||(z(l),t=!0)},o(i){N(l),t=!1},d(i){i&&_(e),l&&l.d(i)}}}function Us(n){let e,t,l,i,s;t=new He({props:{orientation:"text-center",css:"",icon:"fas fa-star",title:n[2].title,size:"h2",bpborder:!0,bpblue:!0}});let r=le(n[2].actions),o=[];for(let c=0;c<r.length;c+=1)o[c]=Hs(Rs(n,r,c));const a=c=>N(o[c],1,1,()=>{o[c]=null});return{c(){e=p("div"),se(t.$$.fragment),l=T(),i=p("div");for(let c=0;c<o.length;c+=1)o[c].c();this.h()},l(c){e=b(c,"DIV",{class:!0});var f=k(e);he(t.$$.fragment,f),l=L(f),i=b(f,"DIV",{class:!0});var d=k(i);for(let h=0;h<o.length;h+=1)o[h].l(d);d.forEach(_),f.forEach(_),this.h()},h(){u(i,"class","space-y-4"),u(e,"class","space-y-2")},m(c,f){D(c,e,f),ie(t,e,null),m(e,l),m(e,i);for(let d=0;d<o.length;d+=1)o[d]&&o[d].m(i,null);s=!0},p(c,f){const d={};if(f&1&&(d.title=c[2].title),t.$set(d),f&1){r=le(c[2].actions);let h;for(h=0;h<r.length;h+=1){const g=Rs(c,r,h);o[h]?(o[h].p(g,f),z(o[h],1)):(o[h]=Hs(g),o[h].c(),z(o[h],1),o[h].m(i,null))}for(ce(),h=r.length;h<o.length;h+=1)a(h);fe()}},i(c){if(!s){z(t.$$.fragment,c);for(let f=0;f<r.length;f+=1)z(o[f]);s=!0}}
38,o(c){N(t.$$.fragment,c),o=o.filter(Boolean);for(let f=0;f<o.length;f+=1)N(o[f]);s=!1},d(c){c&&_(e),ne(t),Fe(o,c)}}}function Hs(n){let e,t,l,i,s=n[3].action_teaser+"",r,o,a;const c=[{shadow:!0},n[3]];let f={};for(let d=0;d<c.length;d+=1)f=Ee(f,c[d]);return t=new ti({props:f}),{c(){e=p("div"),se(t.$$.fragment),l=T(),i=p("div"),r=j(s),o=T(),this.h()},l(d){e=b(d,"DIV",{class:!0});var h=k(e);he(t.$$.fragment,h),l=L(h),i=b(h,"DIV",{class:!0});var g=k(i);r=R(g,s),g.forEach(_),o=L(h),h.forEach(_),this.h()},h(){u(i,"class","w-full absolute bottom-0 right-0 p-2 bg-bp-blue-dark dark:bg-black opacity-75 text-white hover:shadow-lg"),u(e,"class","action relative hover:shadow-lg")},m(d,h){D(d,e,h),ie(t,e,null),m(e,l),m(e,i),m(i,r),m(e,o),a=!0},p(d,h){const g=h&1?Te(c,[c[0],Ve(d[3])]):{};t.$set(g),(!a||h&1)&&s!==(s=d[3].action_teaser+"")&&J(r,s)},i(d){a||(z(t.$$.fragment,d),a=!0)},o(d){N(t.$$.fragment,d),a=!1},d(d){d&&_(e),ne(t)}}}function pu(n){let e,t="Einen kleinen Moment bitte...";return{c(){e=p("p"),e.textContent=t},l(l){e=b(l,"P",{"data-svelte-h":!0}),ze(e)!=="svelte-1us4m93"&&(e.textContent=t)},m(l,i){D(l,e,i)},p:q,i:q,o:q,d(l){l&&_(e)}}}function bu(n){let e,t,l,i={ctx:n,current:null,token:null,hasCatch:!0,pending:pu,then:gu,catch:mu,value:2,error:6,blocks:[,,,]};return wl(t=n[0],i),{c(){e=Z(),i.block.c()},l(s){e=Z(),i.block.l(s)},m(s,r){D(s,e,r),i.block.m(s,i.anchor=r),i.mount=()=>e.parentNode,i.anchor=e,l=!0},p(s,[r]){n=s,i.ctx=n,r&1&&t!==(t=n[0])&&wl(t,i)||ar(i,n,r)},i(s){l||(z(i.block),l=!0)},o(s){for(let r=0;r<3;r+=1){const o=i.blocks[r];N(o)}l=!1},d(s){s&&_(e),i.block.d(s),i.token=null,i=null}}}function ku(n,e,t){let l;async function i(){const s={method:"GET",headers:{Accept:"application/json"}},r=te.is_preview?"/"+te.miniweb+"/ssi/actions.json":"/ssi/actions.json";let o=await fetch(r,s);return o.ok?await o.json():{title:"Aktionen und Programme",actions:[]}}return l=i(),[l]}class vu extends ye{constructor(e){super(),we(this,e,ku,bu,ve,{})}}function wu(n){let e,t;return e=new He({props:{title:te.title,orientation:te.title_pos,bpblue:te.bpblue,size:"h2"}}),{c(){se(e.$$.fragment)},l(l){he(e.$$.fragment,l)},m(l,i){ie(e,l,i),t=!0},i(l){t||(z(e.$$.fragment,l),t=!0)},o(l){N(e.$$.fragment,l),t=!1},d(l){ne(e,l)}}}function yu(n){let e,t,l,i,s,r,o,a,c,f,d=te.template&&!te.miniweb_root&&Iu(),h=te.banners&&te.banners.length&&Cu(),g=te.miniweb_root&&Su();const v=[zu,Du],y=[];function I(A,S){return te.is_search?0:pl.count?1:-1}~(r=I())&&(o=y[r]=v[r](n));let C=te.miniweb_root&&Lu(),E=pl.count===2&&Vu();return{c(){e=p("div"),t=p("div"),d&&d.c(),l=T(),h&&h.c(),i=T(),g&&g.c(),s=T(),o&&o.c(),a=T(),C&&C.c(),c=T(),E&&E.c(),this.h()},l(A){e=b(A,"DIV",{class:!0});var S=k(e);t=b(S,"DIV",{class:!0});var B=k(t);d&&d.l(B),l=L(B),h&&h.l(B),i=L(B),g&&g.l(B),s=L(B),o&&o.l(B),a=L(B),C&&C.l(B),B.forEach(_),c=L(S),E&&E.l(S),S.forEach(_),this.h()},h(){u(t,"class","slot-col-1 space-y-8"),u(e,"class","grid grid-cols-1 "+pl.cols()+" gap-8")},m(A,S){D(A,e,S),m(e,t),d&&d.m(t,null),m(t,l),h&&h.m(t,null),m(t,i),g&&g.m(t,null),m(t,s),~r&&y[r].m(t,null),m(t,a),C&&C.m(t,null),m(e,c),E&&E.m(e,null),f=!0},p(A,S){o&&o.p(A,S)},i(A){f||(z(d),z(h),z(g),z(o),z(C),z(E),f=!0)},o(A){N(d),N(h),N(g),N(o),N(C),N(E),f=!1},d(A){A&&_(e),d&&d.d(),h&&h.d(),g&&g.d(),~r&&y[r].d(),C&&C.d(),E&&E.d()}}}function Eu(n){let e,t,l,i;return l=new Ia({props:{code:te.code}}),{c(){e=p("div"),t=p("div"),se(l.$$.fragment),this.h()},l(s){e=b(s,"DIV",{class:!0});var r=k(e);t=b(r,"DIV",{class:!0});var o=k(t);he(l.$$.fragment,o),o.forEach(_),r.forEach(_),this.h()},h(){u(t,"class","slot-col-1 grid grid-cols-1 gap-8"),u(e,"class","grid grid-cols-1 gap-8")},m(s,r){D(s,e,r),m(e,t),ie(l,t,null),i=!0},p:q,i(s){i||(z(l.$$.fragment,s),i=!0)},o(s){N(l.$$.fragment,s),i=!1},d(s){s&&_(e),ne(l)}}}function Iu(n){let e,t,l;const i=[te.template];let s={};for(let r=0;r<i.length;r+=1)s=Ee(s,i[r]);return t=new $t({props:s}),{c(){e=p("div"),se(t.$$.fragment),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);he(t.$$.fragment,o),o.forEach(_),this.h()},h(){u(e,"class","border-b border-bp-gray-middle pb-4 inline-block")},m(r,o){D(r,e,o),ie(t,e,null),l=!0},i(r){l||(z(t.$$.fragment,r),l=!0)},o(r){N(t.$$.fragment,r),l=!1},d(r){r&&_(e),ne(t)}}}function Cu(n){let e,t;const l=[te.banners[0]];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new ni({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function Su(n){let e,t;return e=new Mf({}),{c(){se(e.$$.fragment)},l(l){he(e.$$.fragment,l)},m(l,i){ie(e,l,i),t=!0},i(l){t||(z(e.$$.fragment,l),t=!0)},o(l){N(e.$$.fragment,l),t=!1},d(l){ne(e,l)}
38}}function Du(n){let e,t;const l=[te.slots[0]];let i={};for(let s=0;s<l.length;s+=1)i=Ee(i,l[s]);return e=new ni({props:i}),{c(){se(e.$$.fragment)},l(s){he(e.$$.fragment,s)},m(s,r){ie(e,s,r),t=!0},p(s,r){const o={};e.$set(o)},i(s){t||(z(e.$$.fragment,s),t=!0)},o(s){N(e.$$.fragment,s),t=!1},d(s){ne(e,s)}}}function zu(n){let e,t,l,i;const s=[Tu,Au],r=[];function o(a,c){return a[0].find(a[1])?0:1}return e=o(n),t=r[e]=s[e](n),{c(){t.c(),l=Z()},l(a){t.l(a),l=Z()},m(a,c){r[e].m(a,c),D(a,l,c),i=!0},p(a,c){t.p(a,c)},i(a){i||(z(t),i=!0)},o(a){N(t),i=!1},d(a){a&&_(l),r[e].d(a)}}}function Au(n){let e,t,l=te.search_component+"",i,s;return{c(){e=p("div"),t=j("Komponente "),i=j(l),s=j(" nicht gefunden"),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);t=R(o,"Komponente "),i=R(o,l),s=R(o," nicht gefunden"),o.forEach(_),this.h()},h(){u(e,"class","text-red-500")},m(r,o){D(r,e,o),m(e,t),m(e,i),m(e,s)},p:q,i:q,o:q,d(r){r&&_(e)}}}function Tu(n){let e,t,l;var i=n[0].find(n[2]).component;function s(r,o){return{}}return i&&(e=Ye(i,s())
38),{c(){e&&se(e.$$.fragment),t=Z()},l(r){e&&he(e.$$.fragment,r),t=Z()},m(r,o){e&&ie(e,r,o),D(r,t,o),l=!0},p(r,o){if(i!==(i=r[0].find(r[2]).component)){if(e){ce();const a=e;N(a.$$.fragment,1,0,()=>{ne(a,1)}),fe()}i?(e=Ye(i,s()),se(e.$$.fragment),z(e.$$.fragment,1),ie(e,t.parentNode,t)):e=null}},i(r){l||(e&&z(e.$$.fragment,r),l=!0)},o(r){e&&N(e.$$.fragment,r),l=!1},d(r){r&&_(t),e&&ne(e,r)}}}function Lu(n){let e,t;return e=new vu({}),{c(){se(e.$$.fragment)},l(l){he(e.$$.fragment,l)},m(l,i){ie(e,l,i),t=!0},i(l){t||(z(e.$$.fragment,l),t=!0)},o(l){N(e.$$.fragment,l),t=!1},d(l){ne(e,l)}}}function Vu(n){let e,t,l;const i=[{slot:"2"},te.slots[1]];let s={};for(let r=0;r<i.length;r+=1)s=Ee(s,i[r]);return t=new ni({props:s}),{c(){e=p("div"),se(t.$$.fragment),this.h()},l(r){e=b(r,"DIV",{class:!0});var o=k(e);he(t.$$.fragment,o),o.forEach(_),this.h()},h(){u(e,"class","slot-col-2 outline-2")},m(r,o){D(r,e,o),ie(t,e,null),l=!0},i(r){l||(z(t.$$.fragment,r),l=!0)},o(r){N(t.$$.fragment,r),l=!1},d(r){r&&_(e),ne(t)}}}function Fu(n){let e,t,l,i,s,r=!te.miniweb_root&&wu();const o=[Eu,yu],a=[];function c(f,d){return te.is_error_page?0:1}return l=c(),i=a[l]=o[l](n),{c(){e=p("article"),r&&r.c(),t=T(),i.c(),this.h()},l(f){e=b(f,"ARTICLE",{id:!0,class:!0});var d=k(e);r&&r.l(d),t=L(d),i.l(d),d.forEach(_),this.h()},h(){u(e,"id","readspeaker_lesen"),u(e,"class","main dark:text-white px-2 lg:px-0 space-y-4 lg:space-y-8")},m(f,d){D(f,e,d),r&&r.m(e,null),m(e,t),a[l].m(e,null),s=!0},p(f,[d]){i.p(f,d)},i(f){s||(z(r),z(i),s=!0)},o(f){N(r),N(i),s=!1},d(f){f&&_(e),r&&r.d(),a[l].d()}}}function Nu(n){return[[{id:"dst",component:_u}],i=>i.id===te.search_component,i=>i.id===te.search_component]}class Mu extends ye{constructor(e){super(),we(this,e,Nu,Fu,ve,{})}}function Ks(n,e,t){const l=n.slice();return l[6]=e[t],l}function qs(n,e,t){const l=n.slice();return l[9]=e[t],l}function Bu(n){let e,t=le(Object.keys(n[0])),l=[];for(let i=0;i<t.length;i+=1)l[i]=Gs(qs(n,t,i));return{c(){e=p("div");for(let i=0;i<l.length;i+=1)l[i].c();this.h()},l(i){e=b(i,"DIV",{class:!0});var s=k(e);for(let r=0;r<l.length;r+=1)l[r].l(s);s.forEach(_),this.h()},h(){u(e,"class","flex-none socials divide-x-2 divide-white")},m(i,s){D(i,e,s);for(let r=0;r<l.length;r+=1)l[r]&&l[r].m(e,null)},p(i,s){if(s&17){t=le(Object.keys(i[0]));let r;for(r=0;r<t.length;r+=1){const o=qs(i,t,r);l[r]?l[r].p(o,s):(l[r]=Gs(o),l[r].c(),l[r].m(e,null))}for(;r<l.length;r+=1)l[r].d(1);l.length=t.length}},d(i){i&&_(e),Fe(l,i)}}}function Pu(n){let e,t,l;return{c(){e=p("a"),t=p("i"),l=T(),this.h()},l(i){e=b(i,"A",{href:!0,class:!0,target:!0,rel:!0,title:!0});var s=k(e);t=b(s,"I",{class:!0,title:!0,role:!0,tabindex:!0}
38),k(t).forEach(_),l=L(s),s.forEach(_),this.h()},h(){u(t,"class","fa-brands fa-"+(n[9]==="twitter"?"x-twitter":n[9])),u(t,"title","Ãber "+(n[9]==="twitter"?"X":n[4](n[9]))+" mitteilen"),u(t,"role","presentation"),u(t,"tabindex","-1"),u(e,"href",te.is_preview?null:n[0][n[9]]),u(e,"class","px-2 hover:text-bp-blue duration-500"),u(e,"target","_blank"),u(e,"rel","noopener noreferrer"),u(e,"title","Ãber "+n[4](n[9])+" mitteilen")},m(i,s){D(i,e,s),m(e,t),m(e,l)},p:q,d(i){i&&_(e)}}}function Gs(n){let e,t=n[0][n[9]]&&Pu(n);return{c(){t&&t.c(),e=Z()},l(l){t&&t.l(l),e=Z()},m(l,i){t&&t.m(l,i),D(l,e,i)},p(l,i){l[0][l[9]]&&t.p(l,i)},d(l){l&&_(e),t&&t.d(l)}}}function Ou(n){let e;function t(s,r){return s[6].href.startsWith("mailto")?Ru:ju}let i=t(n)(n);return{c(){i.c(),e=Z()},l(s){i.l(s),e=Z()},m(s,r){i.m(s,r),D(s,e,r)},p(s,r){i.p(s,r)},d(s){s&&_(e),i.d(s)}}}function ju(n){let e,t=n[6].title+"",l;return{c(){e=p("a"),l=j(t),this.h()},l(i){e=b(i,"A",{href:!0,class:!0,rel:!0,target:!0});var s=k(e);l=R(s,t),s.forEach(_),this.h()},h(){u(e,"href",n[2](n[6])),u(e,"class","px-2 hover:text-bp-blue duration-500"),u(e,"rel","noopener noreferrer"),u(e,"target","_self")},m(i,s){D(i,e,s),m(e,l)},p:q,d(i){i&&_(e)}}}function Ru(n){let e,t=n[6].title+"",l;return{c(){e=p("a"),l=j(t),this.h()},l(i){e=b(i,"A",{href:!0,class:!0,rel:!0,target:!0});var s=k(e);l=R(s,t),s.forEach(_),this.h()},h(){u(e,"href",n[3](n[6])),u(e,"class","px-2 hover:text-bp-blue duration-500"),u(e,"rel","noopener noreferrer"),u(e,"target",n[6].target)},m(i,s){D(i,e,s),m(e,l)},p:q,d(i){i&&_(e)}}}function Ws(n){let e,t=n[6].href&&Ou(n);return{c(){t&&t.c(),e=Z()},l(l){t&&t.l(l),e=Z()},m(l,i){t&&t.m(l,i),D(l,e,i)},p(l,i){l[6].href&&t.p(l,i)},d(l){l&&_(e),t&&t.d(l)}}}function Uu(n){let e,t,l,i=n[0]&&Bu(n),s=le(n[1]),r=[];for(let o=0;o<s.length;o+=1)r[o]=Ws(Ks(n,s,o));return{c(){e=p("div"),i&&i.c(),t=T(),l=p("div");for(let o=0;o<r.length;o+=1)r[o].c();this.h()},l(o){e=b(o,"DIV",{class:!0});var a=k(e);i&&i.l(a),t=L(a),l=b(a,"DIV",{class:!0});var c=k(l);for(let f=0;f<r.length;f+=1)r[f].l(c);c.forEach(_),a.forEach(_),this.h()},h(){u(l,"class","flex-1 flex flex-wrap justify-end links divide-x-2 divide-white"),u(e,"class","flex flex-wrap bg-bp-blue-dark dark:bg-black text-white text-base md:text-xl py-2")},m(o,a){D(o,e,a),i&&i.m(e,null),m(e,t),m(e,l);for(let c=0;c<r.length;c+=1)r[c]&&r[c].m(l,null)},p(o,[a]){if(o[0]&&i.p(o,a),a&14){s=le(o[1]);let c;for(c=0;c<s.length;c+=1){const f=Ks(o,s,c);r[c]?r[c].p(f,a):(r[c]=Ws(f),r[c].c(),r[c].m(l,null))}for(;c<r.length;c+=1)r[c].d(1);r.length=s.length}},i:q,o:q,d(o){o&&_(e),i&&i.d(),Fe(r,o)}}}function Hu(n){const e=Pe&&Pe.social?Pe.social:null,t=Pe&&Pe.links?Pe.links:null,l=[{title:"Impressum",href:t&&t.imprint?t.imprint:null},{title:"Datenschutz",href:t&&t.dsgvo?t.dsgvo:null},{title:"Barrierefreiheit",href:t&&t.ally?t.ally:null},{title:"Barriere melden",href:te.is_preview?null:"mailto:[email protected]",target:"_blank",subject:"Barriere melden für die Seite: "+window.document.title+" ("+window.document.URL+")",body:"Sehr%20geehrte%20Damen%20und%20Herren,%0A%0Ahiermit%20möchten%20ich%20eine%20Barriere%20für%20die%20Internetseite%20der%20Bayerischen%20Polizei%20melden.%0A%0AFolgende%20Barriere%20ist%20mir%20aufgefallen:%0A%0A"}];return[e,l,o=>te.is_preview?null:o.href,o=>te.is_preview?null:o.href+"?subject="+encodeURIComponent(o.subject)+"&body="+o.body,o=>typeof o!="string"?"":o.charAt(0).toUpperCase()+o.slice(1)]}class Ku extends ye{constructor(e){super(),we(this,e,Hu,Uu,ve,{})}}let pl,te,Pe,Ze,bl;const Ct=!!window.custom_preview,pr=!!window.errordata,qu=window.location.pathname==="/"?"/index.html":window.location.pathname,Xl=qu.replace(".html",".json"),Gu={method:"GET",headers:{Accept:"application/json"}};async function Zt(n,e={}){if(Ct&&n===Xl)return window.custom_preview;if(pr&&n===Xl)return window.errordata;let t=await fetch(n,Gu);return t.ok?await t.json():e}const Wu=Ct?"/"+window.custom_preview.miniweb+"/ssi/catdata.json":"/ssi/catdata.json",Zu=Ct?"/"+window.custom_preview.miniweb+"/ssi/menu.json":"/ssi/menu.json",Yu=Ct?"/"+window.custom_preview.miniweb+"/ssi/headerslider.json":"/ssi/headerslider.json",Ju=Ct?"/"+window.custom_preview.miniweb+"/ssi/footercarousel.json":"/ssi/footercarousel.json";await Promise.all([te=await Zt(Xl),Pe=await Zt(Wu),Ze=await Zt(Zu),bl=await Zt(Yu),await Zt(Ju,[])]);pl={main:te.columns_set!=="25-75"?1:2,count:te.slots?te.slots.length:0,cols:()=>te.columns_set==="50-50"?"md:grid-cols-[1fr_1fr]":te.columns_set==="75-25"?"md:grid-cols-[3fr_1fr]":te.columns_set==="25-
3875"?"md:grid-cols-[1fr_3fr]":"md:grid-cols-[1fr]"};te.is_preview=Ct;te.is_error_page=pr;Ct||rt.chatbot.activate();Oo();function el(n,e){const t=document.getElementById(e);return t?new n({target:t,hydrate:!0}):null}el(xo,"app-nav");el(_a,"app-menu");el(ka,"app-header");el(Mu,"app-main");el(Ku,"app-footer"); 39 40 41//# sourceMappingURL=data:application/json;base64,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1CLGlCQUNuRlEsR0FBY1IsR0FBYyxJQUFNLE9BQU8sZUFBZSxRQUFVLHlCQUEyQix5QkFDN0ZTLEdBQWdCVCxHQUFjLElBQU0sT0FBTyxlQUFlLFFBQVUsMkJBQTZCLDJCQUd2RyxNQUFNLFFBQVEsSUFBSSxDQUNoQnRsQixHQUFXLE1BQU1tUyxHQUFRc1QsRUFBUSxFQUNqQ3ZsQixHQUFVLE1BQU1pUyxHQUFReVQsRUFBTyxFQUMvQmxrQixHQUFXLE1BQU15USxHQUFRMFQsRUFBUSxFQUNqQy9pQixHQUFhLE1BQU1xUCxHQUFRMlQsRUFBVSxFQUN0QixNQUFNM1QsR0FBUTRULEdBQWMsRUFBRSxDQUMvQyxDQUFDLEVBR0RoQixHQUFXLENBQ1QsS0FBTy9rQixHQUFTLGNBQWdCLFFBQVcsRUFBSSxFQUMvQyxNQUFRQSxHQUFTLE1BQVNBLEdBQVMsTUFBTSxPQUFTLEVBQ2xELEtBQU0sSUFDQUEsR0FBUyxjQUFnQixRQUNwQix5QkFDRUEsR0FBUyxjQUFnQixRQUMzQix5QkFDRUEsR0FBUyxjQUFnQixRQUMzQix5QkFFQSxvQkFHYixFQUVBQSxHQUFTLFdBQWFzbEIsR0FDdEJ0bEIsR0FBUyxjQUFnQnVsQixHQVNwQkQsSUFDSC9oQyxHQUFTLFFBQVEsU0FBVSxFQU83QjBWLEdBQXNCLEVBU3RCLFNBQVMrc0IsR0FBZUMsRUFBV0MsRUFBVSx
41DQUMzQyxNQUFNeDlCLEVBQVMsU0FBUyxlQUFldzlCLENBQVEsRUFDL0MsT0FBS3g5QixFQUlFLElBQUl1OUIsRUFBVSxDQUNuQixPQUFBdjlCLEVBQ0EsUUFBUyxFQUNiLENBQUcsRUFOUSxJQU9YLENBR0FzOUIsR0FBZUcsR0FBSyxTQUFTLEVBQzdCSCxHQUFlSSxHQUFNLFVBQVUsRUFDL0JKLEdBQWVLLEdBQVEsWUFBWSxFQUNuQ0wsR0FBZU0sR0FBTSxVQUFVLEVBQy9CTixHQUFlTyxHQUFRLFlBQVkiLCJuYW1lcyI6WyJicGNvbmZpZyIsInMiLCJub29wIiwiaWRlbnRpdHkiLCJ4IiwiYXNzaWduIiwidGFyIiwic3JjIiwiayIsImlzX3Byb21pc2UiLCJ2YWx1ZSIsInJ1biIsImZuIiwiYmxhbmtfb2JqZWN0IiwicnVuX2FsbCIsImZucyIsImlzX2Z1bmN0aW9uIiwidGhpbmciLCJzYWZlX25vdF9lcXVhbCIsImEiLCJiIiwic3JjX3VybF9lcXVhbF9hbmNob3IiLCJzcmNfdXJsX2VxdWFsIiwiZWxlbWVudF9zcmMiLCJ1cmwiLCJzcGxpdF9zcmNzZXQiLCJzcmNzZXQiLCJzcmNzZXRfdXJsX2VxdWFsIiwiZWxlbWVudF9zcmNzZXQiLCJlbGVtZW50X3VybHMiLCJ1cmxzIiwid2lkdGgiLCJpIiwibm90X2VxdWFsIiwiaXNfZW1wdHkiLCJvYmoiLCJjcmVhdGVfc2xvdCIsImRlZmluaXRpb24iLCJjdHgiLCIkJHNjb3BlIiwic2xvdF9jdHgiLCJnZXRfc2xvdF9jb250ZXh0IiwiZ2V0X3Nsb3RfY2hhbmdlcyIsImRpcnR5IiwibGV0cyIsIm1lcmdlZCIsImxlbiIsInVwZGF0ZV9zbG90X2Jhc2UiLCJzbG90Iiwic2xvdF9kZWZpbml0aW9uIiwic2xvdF9jaGFuZ2VzIiwiZ2V0X3Nsb3RfY29udGV4dF9mbiIsInNsb3RfY29udGV4dCIsImdldF9hbGxfZGlydHlfZnJvbV9zY29wZSIsImxlbmd0aCIsImV4Y2x1ZGVfaW50ZXJuYWxfcHJvcHMiLCJwcm9wcyIsInJlc3VsdCIsImNvbXB1dGVfcmVzdF9wcm9wcyIsImtleXMiLCJyZXN0Iiwic3BsaXRfY3NzX3VuaXQiLCJzcGxpdCIsImlzX2NsaWVudCIsIm5vdyIsInJhZiIsImNiIiwidGFza3MiLCJydW5fdGFza3MiLCJ0YXNrIiwibG9vcCIsImNhbGxiYWNrIiwiZnVsZmlsbCIsImdsb2JhbHMiLCJpc19oeWRyYXRpbmciLCJzdGFydF9oeWRyYXRpbmciLCJlbmRfaHlkcmF0aW5nIiwidXBwZXJfYm91bmQiLCJsb3ciLCJoaWdoIiwia2V5IiwibWlkIiwiaW5pdF9oeWRyYXRlIiwidGFyZ2V0IiwiY2hpbGRyZW4iLCJteV9jaGlsZHJlbiIsIm5vZGUiLCJtIiwicCIsImxvbmdlc3QiLCJjdXJyZW50Iiwic2VxX2xlbiIsImlkeCIsIm5ld19sZW4iLCJsaXMiLCJ0b19tb3ZlIiwibGFzdCIsImN1ciIsImoiLCJhbmNob3IiLCJhcHBlbmQiLCJnZXRfcm9vdF9mb3Jfc3R5bGUiLCJyb290IiwiYXBwZW5kX2VtcHR5X3N0eWxlc2hlZXQiLCJzdHlsZV9lbGVtZW50IiwiZWxlbWVudCIsImFwcGVuZF9zdHlsZXNoZWV0Iiwic3R5bGUiLCJhcHBlbmRfaHlkcmF0aW9uIiwiaW5zZXJ0IiwiaW5zZXJ0X2h5ZHJhdGlvbiIsImRldGFjaCIsImRlc3Ryb3lfZWFjaCIsIml0ZXJhdGlvbnMiLCJkZXRhY2hpbmciLCJuYW1lIiwic3ZnX2VsZW1lbnQiLCJ0ZXh0IiwiZGF0YSIsInNwYWNlIiwiZW1wdHkiLCJsaXN0ZW4iLCJldmVudCIsImhhbmRsZXIiLCJvcHRpb25zIiwicHJldmVudF9kZWZhdWx0IiwiYXR0ciIsImF0dHJpYnV0ZSIsImFsd2F5c19zZXRfdGhyb3VnaF9zZXRfYXR0cmlidXRlIiwic2V0X2F0dHJpYnV0ZXMiLCJhdHRyaWJ1dGVzIiwiZGVzY3JpcHRvcnMiLCJnZXRfc3ZlbHRlX2RhdGFzZXQiLCJpbml0X2NsYWltX2luZm8iLCJub2RlcyIsImNsYWltX25vZGUiLCJwcmVkaWNhdGUiLCJwcm9jZXNzX25vZGUiLCJjcmVhdGVfbm9kZSIsImRvbnRfdXBkYXRlX2xhc3RfaW5kZXgiLCJyZXN1bHRfbm9kZSIsInJlcGxhY2VtZW50IiwiY2xhaW1fZWxlbWVudF9iYXNlIiwiY3JlYXRlX2VsZW1lbnQiLCJyZW1vdmUiLCJ2IiwiY2xhaW1fZWxlbWVudCIsImNsYWltX3N2Z19lbGVtZW50IiwiY2xhaW1fdGV4dCIsImRhdGFfc3RyIiwiY2xhaW1fc3BhY2UiLCJnZXRfY29tbWVudF9pZHgiLCJzdGFydCIsImNsYWltX2h0bWxfdGFnIiwiaXNfc3ZnIiwic3RhcnRfaW5kZXgiLCJlbmRfaW5kZXgiLCJIdG1sVGFnSHlkcmF0aW9uIiwiaHRtbF90YWdfbm9kZXMiLCJjbGFpbWVkX25vZGVzIiwibiIsInNldF9kYXRhIiwic2V0X2lucHV0X3ZhbHVlIiwiaW5wdXQiLCJzZXRfc3R5bGUiLCJpbXBvcnRhbnQiLCJ0b2dnbGVfY2xhc3MiLCJ0b2dnbGUiLCJjdXN0b21fZXZlbnQiLCJ0eXBlIiwiZGV0YWlsIiwiYnViYmxlcyIsImNhbmNlbGFibG
41UiLCJIdG1sVGFnIiwiaHRtbCIsImNvbnN0cnVjdF9zdmVsdGVfY29tcG9uZW50IiwiY29tcG9uZW50IiwibWFuYWdlZF9zdHlsZXMiLCJhY3RpdmUiLCJoYXNoIiwic3RyIiwiY3JlYXRlX3N0eWxlX2luZm9ybWF0aW9uIiwiZG9jIiwiaW5mbyIsImNyZWF0ZV9ydWxlIiwiZHVyYXRpb24iLCJkZWxheSIsImVhc2UiLCJ1aWQiLCJzdGVwIiwia2V5ZnJhbWVzIiwidCIsInJ1bGUiLCJzdHlsZXNoZWV0IiwicnVsZXMiLCJhbmltYXRpb24iLCJkZWxldGVfcnVsZSIsInByZXZpb3VzIiwibmV4dCIsImFuaW0iLCJkZWxldGVkIiwiY2xlYXJfcnVsZXMiLCJvd25lck5vZGUiLCJjcmVhdGVfYW5pbWF0aW9uIiwiZnJvbSIsInBhcmFtcyIsInRvIiwiZWFzaW5nIiwibGluZWFyIiwic3RhcnRfdGltZSIsImVuZCIsInRpY2siLCJjc3MiLCJydW5uaW5nIiwic3RhcnRlZCIsInN0b3AiLCJmaXhfcG9zaXRpb24iLCJoZWlnaHQiLCJhZGRfdHJhbnNmb3JtIiwidHJhbnNmb3JtIiwiY3VycmVudF9jb21wb25lbnQiLCJzZXRfY3VycmVudF9jb21wb25lbnQiLCJnZXRfY3VycmVudF9jb21wb25lbnQiLCJvbk1vdW50IiwiYWZ0ZXJVcGRhdGUiLCJkaXJ0eV9jb21wb25lbnRzIiwiYmluZGluZ19jYWxsYmFja3MiLCJyZW5kZXJfY2FsbGJhY2tzIiwiZmx1c2hfY2FsbGJhY2tzIiwicmVzb2x2ZWRfcHJvbWlzZSIsInVwZGF0ZV9zY2hlZHVsZWQiLCJzY2hlZHVsZV91cGRhdGUiLCJmbHVzaCIsImFkZF9yZW5kZXJfY2FsbGJhY2siLCJhZGRfZmx1c2hfY2FsbGJhY2siLCJzZWVuX2NhbGxiYWNrcyIsImZsdXNoaWR4Iiwic2F2ZWRfY29tcG9uZW50IiwidXBkYXRlIiwiJCQiLCJmbHVzaF9yZW5kZXJfY2FsbGJhY2tzIiwiZmlsdGVyZWQiLCJ0YXJnZXRzIiwiYyIsInByb21pc2UiLCJ3YWl0IiwiZGlzcGF0Y2giLCJkaXJlY3Rpb24iLCJraW5kIiwib3V0cm9pbmciLCJvdXRyb3MiLCJncm91cF9vdXRyb3MiLCJjaGVja19vdXRyb3MiLCJ0cmFuc2l0aW9uX2luIiwiYmxvY2siLCJsb2NhbCIsInRyYW5zaXRpb25fb3V0IiwibnVsbF90cmFuc2l0aW9uIiwiY3JlYXRlX2JpZGlyZWN0aW9uYWxfdHJhbnNpdGlvbiIsImludHJvIiwiY29uZmlnIiwicnVubmluZ19wcm9ncmFtIiwicGVuZGluZ19wcm9ncmFtIiwiYW5pbWF0aW9uX25hbWUiLCJvcmlnaW5hbF9pbmVydF92YWx1ZSIsImNsZWFyX2FuaW1hdGlvbiIsImluaXQiLCJwcm9ncmFtIiwiZCIsImdvIiwiaGFuZGxlX3Byb21pc2UiLCJ0b2tlbiIsImluZGV4IiwiY2hpbGRfY3R4IiwibmVlZHNfZmx1c2giLCJlcnJvciIsInVwZGF0ZV9hd2FpdF9ibG9ja19icmFuY2giLCJyZXNvbHZlZCIsImVuc3VyZV9hcnJheV9saWtlIiwiYXJyYXlfbGlrZV9vcl9pdGVyYXRvciIsIm91dHJvX2FuZF9kZXN0cm95X2Jsb2NrIiwibG9va3VwIiwiZml4X2FuZF9vdXRyb19hbmRfZGVzdHJveV9ibG9jayIsInVwZGF0ZV9rZXllZF9lYWNoIiwib2xkX2Jsb2NrcyIsImdldF9rZXkiLCJkeW5hbWljIiwibGlzdCIsImRlc3Ryb3kiLCJjcmVhdGVfZWFjaF9ibG9jayIsImdldF9jb250ZXh0IiwibyIsIm9sZF9pbmRleGVzIiwibmV3X2Jsb2NrcyIsIm5ld19sb29rdXAiLCJkZWx0YXMiLCJ1cGRhdGVzIiwid2lsbF9tb3ZlIiwiZGlkX21vdmUiLCJuZXdfYmxvY2siLCJvbGRfYmxvY2siLCJuZXdfa2V5Iiwib2xkX2tleSIsImdldF9zcHJlYWRfdXBkYXRlIiwibGV2ZWxzIiwidG9fbnVsbF9vdXQiLCJhY2NvdW50ZWRfZm9yIiwiZ2V0X3NwcmVhZF9vYmplY3QiLCJzcHJlYWRfcHJvcHMiLCJiaW5kIiwiY3JlYXRlX2NvbXBvbmVudCIsImNsYWltX2NvbXBvbmVudCIsInBhcmVudF9ub2RlcyIsIm1vdW50X2NvbXBvbmVudCIsImZyYWdtZW50IiwiYWZ0ZXJfdXBkYXRlIiwibmV3X29uX2Rlc3Ryb3kiLCJkZXN0cm95X2NvbXBvbmVudCIsIm1ha2VfZGlydHkiLCJpbnN0YW5jZSIsImNyZWF0ZV9mcmFnbWVudCIsImFwcGVuZF9zdHlsZXMiLCJwYXJlbnRfY29tcG9uZW50IiwicmVhZHkiLCJyZXQiLCJTdmVsdGVDb21wb25lbnQiLCJjYWxsYmFja3MiLCJQVUJMSUNfVkVSU0lPTiIsInN1YnNjcmliZXJfcXVldWUiLCJ3cml0YWJsZSIsInN1YnNjcmliZXJzIiwic2V0IiwibmV3X3ZhbHVlIiwicnVuX3F1ZXVlIiwic3Vic2NyaWJlciIsInN1YnNjcmliZSIsImludmFsaWRhdGUiLCJhbGxvd0Z1bmN0aW9uYWxDb29raWVzU3RvcmUiLCJhbGxvd1RyYWNraW5nQ29va2llc1N0b3JlIiwiYWxsb3dUd2l0dGVyQ29va2llc1N0b3JlIiwiYWxsb3dZb3V0dWJlQ29va2llc1N0b3JlIiwic2hvd0Jhbm5lclN0b3JlIiwiZGFya01vZGVTdG9yZSIsImZvbnRNb2RlU3RvcmUiLCJtZW51TWFpblN0b3JlIiwibWVudVNlYXJjaFN0b3JlIiwiaW5pdFNvcmVzRnJvbUNvb2tpZXMiLCJhbGxvd0Z1bmN0aW9uYWxDb29raWVzIiwiZ2V0Q29va2llIiwic2V0Q29va2llIiwiYWxsb3dUcmFja2luZ0Nvb2tpZXMiLCJzaG93QmFubmVyIiwiZGFya01vZGUiLCJmb250TW9kZSIsImNuYW1lIiwiY3ZhbHVlIiwiZXhkYXlzIiwiZXhwaXJlcyIsImNhIiwiZGVsQ29va2llIiwiZGVsQ29va2llcyIsImNyZWciLCJjciIsImNyZWF0ZV9pZl9ibG9ja18yIiwiYnV0dG9uIiwiY3JlYXRlX2lmX2Jsb2NrXzEiLCJzcGFuIiwiY3JlYXRlX2lmX2Jsb2NrIiwiaWQiLCIkJHByb3BzIiwidGl0bGUiLCJjbG9zZV90aXRsZSIsImljb24iLCJjbG9zZV9pY29uIiwiZGlzYWJsZWQiLCJzdG9yZSIsImFjdGlvbiIsImlzX29wZW4iLCIkJGludmFsaWRhdGUiLCJjdWJpY091dCIsImYiLCJmYWRlIiwiZmx5IiwieSIsIm9wYWNpdHkiLCJ0YXJnZXRfb3BhY2l0eSIsIm9kIiwieFZhbHVlIiwieFVuaXQiLCJ5VmFsdWUiLCJ5VW5pdCIsInUiLCJ1bCIsInQwX3ZhbHVlIiwidDFfdmFsdWUiLCJsaSIsInN0cm9uZyIsImJyIiwidDAiLCJ0MSIsImlmX2Jsb2NrMSIsIm9wZW4iLCJkaXYyIiwiZGl2MCIsInNwYW4wIiwic3BhbjNfMSIsInNwYW4xXzEiLCJzdmcwIiwicGF0aDAiLCJzcGFuMl8xIiwic3ZnMSIsInBhdGgxIiwiZGV0YWlscyIsInN1bW1hcnkiLCJkaXYxIiwiaXNfY2hlY2tlZCIsImlzX2ZpeGVkIiwiZGVzYyIsImNvb2tpZXMiLCJidG5Dc3MiLCJzcGFuMSIsInNwYW4yIiwic3BhbjMiLCJjb29raWVjaGVja2JveDFfc3ByZWFkX2xldmVscyIsImNvb2tpZWNoZWNrYm94Ml9zcHJlYWRfbGV2ZWxzIiwiaWZfYmxvY2swIiwiZGl2NyIsImRpdjYiLCJkaXY1IiwiZGl2NCIsImRpdjMiLCJi
41dXR0b24wIiwiYnV0dG9uMSIsImJ1dHRvbjIiLCJidXR0b24zIiwiZGl2N190cmFuc2l0aW9uIiwibmVlZGVkQ29va2llcyIsImZ1Q2hlY2siLCJmdW5jdGlvbmFsQ29va2llcyIsInRyQ2hlY2siLCJ0cmFja2luZ0Nvb2tpZXMiLCJwb3MiLCJzaG91bGRBcHBlbmQiLCJlbCIsInR3Q2hlY2siLCJ0d2l0dGVyQ29va2llcyIsInl0Q2hlY2siLCJ5b3V0dWJlQ29va2llcyIsImNoZWNrQWxsIiwiX19zZXRDb29raWVWYWx1ZXMiLCJ1bmNoZWNrQWxsIiwic3RvcmVTZXR0aW5ncyIsInJlbG9hZF9wYWdlIiwic3dpdGNoX2luc3RhbmNlX3NwcmVhZF9sZXZlbHMiLCJzd2l0Y2hfdmFsdWUiLCJzd2l0Y2hfaW5zdGFuY2VfcHJvcHMiLCJpZl9ibG9jayIsInBhZ2VkYXRhIiwiZWFjaF9ibG9ja3MiLCJjYXRkYXRhIiwiYnV0dG9ucyIsIlRvb2xiYXJCdG4iLCJzZXREYXJrTW9kZSIsInNldEZvbnRNb2RlIiwibmV3VXJpIiwiYnRuc0wiLCJidG4iLCJzZXRTaG93QmFubmVyIiwibmV3TW9kZSIsIm1vZGVzIiwiYmFkZ2UiLCJzaXplIiwiaHJlZiIsIm9yaWVudGF0aW9uIiwiYnBibHVlIiwiYnBib3JkZXIiLCJpc190b2MiLCJyZW5kZXJIVE1MIiwiY2hhbmdlQ1NTIiwiaXNCb3JkZXJlZCIsImlzQmx1ZSIsImNzc0FyciIsImVhY2hfdmFsdWVfMSIsIm5hdmlkYXRhIiwiZWFjaF92YWx1ZV8yIiwidDRfdmFsdWUiLCJzbUxua3MiLCJsaW5rIiwiZGl2IiwiaXNfdmlzaWJsZV9tZW51IiwiaXNfdmlzaWJsZV9zZWFyY2giLCJnZXRNZW51VG9wIiwibWVudSIsIm1Ub3AiLCJtTGVmdCIsIm1XaWR0aCIsIm1IZWlnaHQiLCJzZXRNZW51VG9wIiwibVJlY3QiLCJtUmVjdDEiLCJpbWciLCJpbWdfc3JjX3ZhbHVlIiwiaW1nX2FsdF92YWx1ZSIsInNsaWRlcmRhdGEiLCJoZWFkbGluZSIsImltYWdlIiwiaXdlMiIsInJhd192YWx1ZSIsImh0bWxfdGFnIiwiaGVhZGxpbmVfY2hhbmdlcyIsImNvZGUiLCJjb2RlcyIsIml0ZW0iLCJlIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInRhZ05hbWUiLCJhcHBlbmRUb0VsIiwidG9UcmFuc2Zvcm1TdHJpbmciLCJzY2FsZSIsInByb3BWYWx1ZSIsInNldFdpZHRoSGVpZ2h0IiwidyIsImgiLCJMT0FEX1NUQVRFIiwic3BlY2lhbEtleVVzZWQiLCJnZXRFbGVtZW50c0Zyb21PcHRpb24iLCJvcHRpb24iLCJsZWdhY3lTZWxlY3RvciIsInBhcmVudCIsImVsZW1lbnRzIiwic2VsZWN0b3IiLCJpc1Bzd3BDbGFzcyIsImlzU2FmYXJpIiwiUGhvdG9Td2lwZUV2ZW50IiwiRXZlbnRhYmxlIiwicHJpb3JpdHkiLCJfdGhpcyRfZmlsdGVycyRuYW1lIiwiX3RoaXMkX2ZpbHRlcnMkbmFtZTIiLCJfdGhpcyRwc3dwIiwiZjEiLCJmMiIsImZpbHRlciIsImFyZ3MiLCJfdGhpcyRfZmlsdGVycyRuYW1lMyIsIl90aGlzJF9saXN0ZW5lcnMkbmFtZSIsIl90aGlzJHBzd3AyIiwiX3RoaXMkcHN3cDMiLCJsaXN0ZW5lciIsIl90aGlzJF9saXN0ZW5lcnMkbmFtZTIiLCJQbGFjZWhvbGRlciIsImltYWdlU3JjIiwiY29udGFpbmVyIiwiaW1nRWwiLCJfdGhpcyRlbGVtZW50IiwiQ29udGVudCIsIml0ZW1EYXRhIiwiaXNMYXp5IiwicmVsb2FkIiwicGxhY2Vob2xkZXJFbCIsInBsYWNlaG9sZGVyU3JjIiwiX3RoaXMkZGF0YSRzcmMiLCJfdGhpcyRkYXRhJGFsdCIsImltYWdlRWxlbWVudCIsInNsaWRlIiwiaXNJbml0aWFsU2l6ZVVwZGF0ZSIsInNpemVzV2lkdGgiLCJfdGhpcyRpbnN0YW5jZSRvcHRpb24iLCJfdGhpcyRpbnN0YW5jZSRvcHRpb24yIiwiZXJyb3JNc2dFbCIsInN1cHBvcnRzRGVjb2RlIiwiZ2V0Vmlld3BvcnRTaXplIiwicHN3cCIsIm5ld1ZpZXdwb3J0U2l6ZSIsInBhcnNlUGFkZGluZ09wdGlvbiIsInByb3AiLCJ2aWV3cG9ydFNpemUiLCJwYWRkaW5nVmFsdWUiLCJsZWdhY3lQcm9wTmFtZSIsImdldFBhbkFyZWFTaXplIiwiTUFYX0lNQUdFX1dJRFRIIiwiWm9vbUxldmVsIiwibWF4V2lkdGgiLCJtYXhIZWlnaHQiLCJwYW5BcmVhU2l6ZSIsImVsZW1lbnRTaXplIiwiaFJhdGlvIiwidlJhdGlvIiwib3B0aW9uUHJlZml4Iiwib3B0aW9uTmFtZSIsIm9wdGlvblZhbHVlIiwiY3Vyclpvb21MZXZlbCIsImxhenlMb2FkRGF0YSIsImNvbn
41RlbnQiLCJ6b29tTGV2ZWwiLCJsYXp5TG9hZFNsaWRlIiwiUGhvdG9Td2lwZUJhc2UiLCJfdGhpcyRvcHRpb25zIiwibnVtSXRlbXMiLCJkYXRhU291cmNlIiwic2xpZGVEYXRhIiwiX3RoaXMkb3B0aW9uczIiLCJkYXRhU291cmNlSXRlbSIsImdhbGxlcnlFbGVtZW50IiwiX3RoaXMkb3B0aW9uczMiLCJfdGhpcyRvcHRpb25zNCIsImxpbmtFbCIsInRodW1ibmFpbEVsIiwiX3RodW1ibmFpbEVsJGdldEF0dHJpIiwiUGhvdG9Td2lwZUxpZ2h0Ym94IiwiaW5pdGlhbFBvaW50IiwiY2xpY2tlZEluZGV4IiwiY2xpY2tlZFRhcmdldCIsImNsaWNrZWRDaGlsZEluZGV4IiwiY2hpbGQiLCJnYWxsZXJ5RWxlbWVudHMiLCJwcm9taXNlQXJyYXkiLCJwc3dwTW9kdWxlVHlwZSIsIml0ZXJhYmxlTW9kdWxlcyIsIm1haW5Nb2R1bGUiLCJtb2R1bGUiLCJhX2hyZWZfdmFsdWUiLCJhX3RhcmdldF92YWx1ZSIsImFfZG93bmxvYWRfdmFsdWUiLCJjcmVhdGVfaWZfYmxvY2tfMyIsImNyZWF0ZV9pZl9ibG9ja180Iiwiem9vbSIsImRvd25sb2FkIiwiYmxvY2tzIiwiaW1nRmlsZSIsIm5ld0ltZyIsImxpZ2h0Ym94IiwiY29sQ291bnQiLCJocmVmX21hcCIsImhyZWZfcm91dGUiLCJzb3VyY2UwIiwic291cmNlMF9zcmNzZXRfdmFsdWUiLCJzb3VyY2UxIiwic291cmNlMV9zcmNzZXRfdmFsdWUiLCJzb3VyY2UyIiwic291cmNlMl9zcmNzZXRfdmFsdWUiLCJzb3VyY2UzIiwic291cmNlM19zcmNzZXRfdmFsdWUiLCJpbWdfMSIsImltZ18xX3NyY192YWx1ZSIsInBpY3R1cmUiLCJjcmVhdGVfaWZfYmxvY2tfNyIsImNyZWF0ZV9pZl9ibG9ja182IiwiY3JlYXRlX2lmX2Jsb2NrXzgiLCJjcmVhdGVfaWZfYmxvY2tfNSIsImlmX2Jsb2NrMiIsImZpZ3VyZSIsImZpZ3VyZV9jbGFzc192YWx1ZSIsInNoYWRvdyIsImFsdCIsImNvcHlyaWdodCIsInNob3dfZGVzYyIsImhlcm8iLCJqdXN0aWZpY2F0aW9uIiwid2l0aGNvcHkiLCJpbWdOYW1lIiwiaW1nbG9hZCIsImltZ2NzcyIsImltZ3BvcyIsImltZ3NpemUiLCJwc0ltYWdlcyIsImltYWdlXzFfY2hhbmdlcyIsImxpbmtzIiwibGlzdHR5cGUiLCJnZXRJY29uIiwiZ3JpZFR5cGUiLCJzcGFuNCIsInNwYW41IiwiaWZyYW1lIiwiaWZyYW1lX3NyY192YWx1ZSIsImRzZ3ZvTGluayIsInNob3dfY29weXJpZ2h0IiwiZnVsbHNjcmVlbiIsImF1dG9wbGF5IiwibmV3bGluayIsInNob3dZb3V0dWJlIiwic291cmNlIiwic291cmNlX3NyY192YWx1ZSIsImF1ZGlvIiwiZmlsZSIsInRyYWNrMCIsInRyYWNrMF9zcmNfdmFsdWUiLCJ0cmFjazEiLCJ0cmFjazFfc3JjX3ZhbHVlIiwidmlkZW8iLCJ0cmFjazIiLCJzdWJ0aXRsZSIsInZpZGVvc2l6ZSIsIm5ld3NpemUiLCJzaG93X2lmIiwibWVkaWEiLCJjb21wb25lbnRzIiwiWW91dHVi
41ZSIsIkF1ZGlvIiwiVmlkZW8iLCJmdW5jIiwiZnVuY18xIiwiZGV0YWlsc19vcGVuX3ZhbHVlIiwiVGV4dEltYWdlIiwiTGlua2xpc3QiLCJNZWRpYSIsInRfdmFsdWUiLCJ0M192YWx1ZSIsImlfY2xhc3NfdmFsdWUiLCJhX3RpdGxlX3ZhbHVlIiwidDMiLCJ0NSIsInQ1X3ZhbHVlIiwiaW50YWJsZSIsImZpbGVfdHlwZXMiLCJnZXRGaWxlVHlwZUluZm8iLCJmaWxlX3R5cGUiLCJmb3JtYXRGaWxlU2l6ZSIsImJ5dGVzIiwiZG0iLCJzaXplcyIsImdyaWRDb2xzIiwiY29scyIsImljb25Db2xvciIsImJsdWUiLCJ1c2VfaWNvbnMiLCJlbnRyeSIsImkwIiwiaTEiLCJkc3RvZzJzIiwiZHN0aW5mbyIsImRzdGRlc2MiLCJkc3RzdHIiLCJkc3RobnIiLCJkc3RwbHoiLCJkc3RnbWRrdCIsImRzdHRlbGUiLCJkc3R0ZWxmIiwiZHN0IiwiZ2V0RHN0IiwiZ2V0U3R5bGUiLCJwYWRkaW5nIiwic2VsZWN0aW9uIiwiQWNjb3JkaW9uIiwiRG93bmxvYWRzIiwiQ29udGFjdCIsIkxpc3QiLCJpbmZvZGF0YSIsImdldERhdGEiLCJyZXNwIiwic2hvd1R3aXR0ZXIiLCJociIsImlmcmFtZV93aWR0aF92YWx1ZSIsImlmcmFtZV9oZWlnaHRfdmFsdWUiLCJqdXN0eSIsImNhcHRpb24iLCJ0aGVhZCIsInRoIiwidGJvZHkiLCJpbWFnZV9zcHJlYWRfbGV2ZWxzIiwibGlua2xpc3Rfc3ByZWFkX2xldmVscyIsInRkIiwiaWZfYmxvY2szIiwiaWZfYmxvY2s0IiwidHIiLCJ0YWJsZSIsInRhYmxlX2NzcyIsImNzc19jbGFzc2VzIiwidGhfY3NzIiwiY29sIiwidGhfd2lkdGgiLCJ0ZF9jc3MiLCJjZWxsIiwiZ2V0SW1hZ2VEYXRhIiwiZ2V0TGlua0RhdGEiLCJnZXREb3dubG9hZERhdGEiLCJmbGV4bW9kdWxlcyIsIkltYWdlR2FsbGVyeSIsIkRpcmVjdGlvbnMiLCJJY29uVGV4dCIsIkhlYWRsaW5lIiwiQXV0b1RvYyIsIkluZm9ib3giLCJUd2l0dGVyIiwiU3BhY2VyIiwiVGFibGUiLCJFbWJlZCIsImZsZXgiLCJlYWNoX3ZhbHVlIiwidDZfdmFsdWUiLCJmaWdjYXB0aW9uIiwiY29sb3JzIiwiZmxpcCIsIm94Iiwib3kiLCJkeCIsImR5Iiwic3giLCJzeSIsInN0b3BfYW5pbWF0aW9uIiwicmVjdCIsImRpdl90cmFuc2l0aW9uIiwiY3JlYXRlX2lmX2Jsb2NrXzEwIiwiY3JlYXRlX2lmX2Jsb2NrXzExIiwiY3JlYXRlX2lmX2Jsb2NrXzkiLCJpbnB1dF8xX3JlYWRvbmx5X3ZhbHVlIiwiZGl2Ml9jbGFzc192YWx1ZSIsInNlbGVjdCIsImlucHV0XzEiLCJpbnB1dF8xX2NsYXNzX3ZhbHVlIiwiaW5wdXRfMV9pZF92YWx1ZSIsImlucHV0XzFfYXV0b2NvbXBsZXRlX3ZhbHVlIiwic2FmZUZ1bmN0aW9uIiwidGhlRnVuY3Rpb24iLCJhcmd1bWVudCIsInNhZmVTdHJpbmdGdW5jdGlvbiIsIm51bWJlck9mTWF0Y2hlcyIsImxpc3RJdGVtIiwic2VhcmNoV29yZHMiLCJpdGVtS2V5d29yZHMiLCJtYXRjaGVzIiwic2VhcmNoV29yZCIsImRlZmF1bHRJdGVtU29ydEZ1bmN0aW9uIiwib2JqMSIsIm9iajIiLCJyZW1vdmVBY2NlbnRzIiwiaXRlbXMiLCJzZWFyY2hGdW5jdGlvbiIsImxhYmVsRmllbGROYW1lIiwia2V5d29yZHNGaWVsZE5hbWUiLCJ2YWx1ZUZpZWxkTmFtZSIsImxhYmVsRnVuY3Rpb24iLCJrZXl3b3Jkc0Z1bmN0aW9uIiwidmFsdWVGdW5jdGlvbiIsImZvcmNlU2luZ2xlIiwibXVsdGlwbGUiLCJrZXl3b3Jkc0NsZWFuRnVuY3Rpb24iLCJrZXl3b3JkcyIsInRleHRDbGVhbkZ1bmN0aW9uIiwidXNlckVudGVyZWRUZXh0IiwiYmVmb3JlQ2hhbmdlIiwib2xkU2VsZWN0ZWRJdGVtIiwibmV3U2VsZWN0ZWRJdGVtIiwib25DaGFuZ2UiLCJvbkZvY3VzIiwib25CbHVyIiwib25DcmVhdGUiLCJkZWJ1ZyIsInNlbGVjdEZpcnN0SWZFbXB0eSIsIm1pbkNoYXJhY3RlcnNUb1NlYXJjaCIsIm1heEl0ZW1zVG9TaG93SW5MaXN0IiwiY3JlYXRlIiwiaWdub3JlQWNjZW50cyIsIm1hdGNoQWxsS2V5d29yZHMiLCJzb3J0QnlNYXRjaGVkS2V5d29yZHMiLCJpdGVtRmlsdGVyRnVuY3Rpb24iLCJpdGVtU29ydEZ1bmN0aW9uIiwibG9jayIsImxvY2FsRmlsdGVyaW5nIiwibG9jYWxTb3J0aW5nIiwiY2xlYW5Vc2VyVGV4dCIsImxvd2VyY2FzZUtleXdvcmRzIiwiY2xvc2VPbkJsdXIiLCJvcmRlcmFibGVTZWxlY3Rpb24iLCJoaWRlQXJyb3ciLCJzaG93Q2xlYXIiLCJjbGVhclRleHQiLCJzaG93TG9hZGluZ0luZGljYXRvciIsIm5vUmVzdWx0c1RleHQiLCJsb2FkaW5nVGV4dCIsIm1vcmVJdGVtc1RleHQiLCJjcmVhdGVUZXh0IiwicGxhY2Vob2xkZXIiLCJpbnB1dENsYXNzTmFtZSIsImlucHV0SWQiLCJzZWxlY3ROYW1lIiwic2VsZWN0SWQiLCJodG1sNWF1dG9jb21wbGV0ZSIsImF1dG9jb21wbGV0ZU9mZlZhbHVlIiwicmVhZG9ubHkiLCJkcm9wZG93bkNsYXNzTmFtZSIsIm5vSW5wdXRTdHlsZXMiLCJyZXF1aXJlZCIsInRhYmluZGV4Iiwic2VsZWN0ZWRJdGVtIiwiaGlnaGxpZ2h0ZWRJdGVtIiwidW5pcXVlSWQiLCJpbnB1dENvbnRhaW5lciIsIm9wZW5lZCIsImxvYWRpbmciLCJoaWdobGlnaHRJbmRleCIsImZpbHRlcmVkVGV4dExlbmd0aCIsImZpbHRlcmVkTGlzdEl0ZW1zIiwibGlzdEl0ZW1zIiwibGFzdFJlcXVlc3RJZCIsImxhc3RSZXNwb25zZUlkIiwiaW5wdXREZWxheVRpbWVvdXQiLCJzZXRQb3NpdGlvbk9uTmV4dFVwZGF0ZSIsInNldFNjcm9sbEF3YXJlTGlzdFBvc2l0aW9uIiwic2FmZUxhYmVsRnVuY3Rpb24iLCJzYWZlS2V5d29yZHNGdW5jdGlvbiIsInByZXBhcmVMaXN0SXRlbXMiLCJ0aW1lcklkIiwiZ2V0TGlzdEl0ZW0iLCJvblNlbGVjdGVkSXRlbUNoYW5nZWQiLCJwcmVwYXJlVXNlckVudGVyZWRUZXh0IiwidGV4dEZpbHRlcmVkIiwiY2xlYW5Vc2VyRW50ZXJlZFRleHQiLCJzZWFyY2giLCJjbG9zZUlmTWluQ2hhcnNUb1NlYXJjaFJlYWNoZWQiLCJwcm9jZXNzTGlzdEl0ZW1zIiwiY3VycmVudFJlcXVlc3RJZCIsImNodW5rIiwiZGVmYXVsdEl0ZW1GaWx0ZXJGdW5jdGlvbiIsIndvcmQiLCJ0ZW1wZmlsdGVyZWRMaXN0SXRlbXMiLCJpdGVtMSIsIml0ZW0yIiwiaGxmaWx0ZXIiLCJoaWdobGlnaHRGaWx0ZXIiLCJhZnRlckNyZWF0ZSIsImNyZWF0ZWRJdGVtIiwiZmluZEl0ZW1JbmRleCIsInNlbGVjdExpc3RJdGVtIiwibmV3SXRlbSIsIm5ld0xpc3RJdGVtIiwibG9ja2VkIiwic2VsZWN0SXRlbSIsImNsb3NlIiwidXAiLCJoaWdobGlnaHQiLCJkb3duIiwicXVlcnkiLCJvbkxpc3RJdGVtQ2xpY2siLCJvbkRvY3VtZW50Q2xpY2siLCJwYXRoIiwib25LZXlEb3duIiwib25Fc2MiLCJoYXNTZWxlY3Rpb24iLCJvbkJhY2tzcGFjZSIsIm9uS2V5UHJlc3MiLCJvbkVudGVyIiwib25JbnB1dCIsInByb2Nlc3NJbnB1dCIsInVuc2VsZWN0SXRlbSIsInRhZyIsIm9uSW5wdXRDbGljayIsInJlc2V0TGlzdFRvQWxsSXRlbXNBbmRPcGVuIiwib25Gb2N1c0ludGVybmFsIiwib25CbHVySW50ZXJuYWwiLCJub3RFbm91Z2hTZWFyY2hUZXh0IiwiY2xlYXIiLCJmaWVsZCIsImxhYmVsIiwibGFiZWxMb3dlcmNhc2UiLCJsYWJlbExvd2VyY2FzZU5vQWMiLCJwb3NpdGlvbnMiLCJrZXl3b3JkIiwia2V5d29yZExlbiIsInBvczEiLCJwb3MyIiwia2V5d29yZFBhdHRlcm5zIiwicGFpciIsImtleXdvcmRQYXR0ZXJuIiwicmVnIiwibmV3SGlnaGxpZ2h0ZWQiLCJpc0NvbmZpcm1lZCIsImRyYWdnaW5nT3ZlciIsImRyYWdzdGFydCIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJv
41cCIsIm1vdmVTZWxlY3RlZEl0ZW0iLCJuZXdTZWxlY3Rpb24iLCJ2aWV3UG9ydEhlaWdodCIsImlucHV0QnV0dG9tIiwiaW5wdXRIZWlnaHQiLCJsaXN0SGVpZ2h0Iiwic2Nyb2xsX2hhbmRsZXIiLCJ0YWdJdGVtIiwiZHJhZ3N0YXJ0X2hhbmRsZXIiLCJkcmFnb3Zlcl9oYW5kbGVyIiwiZHJhZ2xlYXZlX2hhbmRsZXIiLCJkcm9wX2hhbmRsZXIiLCIkJHZhbHVlIiwiY2xpY2tfaGFuZGxlciIsInNob3dMaXN0IiwiY2xlYXJhYmxlIiwidDhfdmFsdWUiLCJ0MTBfdmFsdWUiLCJ0MTJfdmFsdWUiLCJ0MTRfdmFsdWUiLCJsaTAiLCJsaTEiLCJsaTIiLCJsaTMiLCJsaTQiLCJ0NCIsInQ2IiwidDgiLCJ0MTAiLCJ0MTIiLCJ0MTQiLCJpbnB1dDAiLCJpbnB1dDEiLCJidXR0b25fZGF0YV9rZXlfdmFsdWUiLCJidXR0b25fZGF0YV9wbHpfdmFsdWUiLCJidXR0b25fZGF0YV92b25fdmFsdWUiLCJidXR0b25fZGF0YV9iaXNfdmFsdWUiLCJ1bDAiLCJ1bDEiLCJ0NyIsInQ3X3ZhbHVlIiwidDkiLCJ0OV92YWx1ZSIsInQxMSIsInQxMV92YWx1ZSIsInQyX3ZhbHVlIiwidDIiLCJzZWFyY2hfdXJsIiwic2VhcmNoX29wdCIsInNlbGVjdGVkRHN0Iiwic2VsZWN0ZWRTdHIiLCJzZWxlY3RlZEhuciIsImdldEdtZERhdGEiLCJxdWVyeVN0ciIsImpzb24iLCJkc3RzIiwicGx6Iiwib3J0cGx6IiwiZ21kIiwiZ2R0Iiwib3J0IiwiZ2V0U3RyRGF0YSIsInNlYXJjaE9iaiIsImN1cnJlbnREc3QiLCJzdHJlZXRzIiwic3RyZWV0IiwiaHNucnYiLCJoc25yYiIsImhzbnIiLCJzdHJfbmFtZSIsImZvdW5kRHN0cyIsInN0ckNsaWNrZWQiLCJtYWluZHN0IiwiaGFzX3N0cmVldHMiLCJhY3Rpb25kYXRhIiwiYWN0aW9uZmlsZSIsInNsb3RkYXRhIiwiZXJyb3JwYWdlIiwiRXJyb3JQYWdlIiwidGV4dGltYWdlX3NwcmVhZF9sZXZlbHMiLCJhcnRpY2xlIiwiU2VhcmNoRHN0Iiwic21CdG5zIiwiaXNfcHJldmlldyIsImlzX2Vycm9yIiwicGF0aG5hbWUiLCJwYWdlZmlsZSIsImRhdGFmaWxlIiwiZGVmYXVsdF90eXBlIiwiY2F0ZmlsZSIsIm1lbnVmaWxlIiwic2xpZGVyZmlsZSIsImNhcm91c2VsZmlsZSIsIm1vdW50SWZQcmVzZW50IiwiQ29tcG9uZW50IiwidGFyZ2V0SWQiLCJOYXYiLCJNZW51IiwiSGVhZGVyIiwiTWFpbiIsIkZvb3RlciJdLCJpZ25vcmVMaXN0IjpbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYsMTksMjEsMjIsMzIsNTUsNTZdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ieXNrL2pzL3N5c3RlbS5jb25maWcuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3ZlbHRlL3NyYy9ydW50aW1lL2ludGVybmFsL3V0aWxzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9lbnZpcm9ubWVudC5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdmVsdGUvc3JjL3J1bnRpbWUvaW50ZXJuYWwvbG9vcC5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdmVsdGUvc3JjL3J1bnRpbWUvaW50ZXJuYWwvZ2xvYmFscy5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdmVsdGUvc3JjL3J1bnRpbWUvaW50ZXJuYWwvZG9tLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9zdHlsZV9tYW5hZ2VyLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9hbmltYXRpb25zLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9saWZlY3ljbGUuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3ZlbHRlL3NyYy9ydW50aW1lL2ludGVybmFsL3NjaGVkdWxlci5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdmVsdGUvc3JjL3J1bnRpbWUvaW50ZXJuYWwvdHJhbnNpdGlvbnMuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3ZlbHRlL3NyYy9ydW50aW1lL2ludGVybmFsL2F3YWl0X2Jsb2NrLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9lYWNoLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9zcHJlYWQuanMiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3ZlbHRlL3NyYy9ydW50aW1lL2ludGVybmFsL0NvbXBvbmVudC5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdmVsdGUvc3JjL3NoYXJlZC92ZXJzaW9uLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9zdG9yZS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL3NyYy9ieXNrL3N0b3Jlcy9tYWluc3RvcmUuanMiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9qcy9jb29raWVzLmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS9pbnRlcm5hbC9kaXNjbG9zZS12ZXJzaW9uL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svY29tcG9uZW50cy9lbGVtZW50cy9Ub29sYmFyQnRuLnN2ZWx0ZSIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdmVsdGUvc3JjL3J1bnRpbWUvZWFzaW5nL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N2ZWx0ZS9zcmMvcnVudGltZS90cmFuc2l0aW9uL2luZGV4LmpzIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svY29tcG9uZW50cy9lbGVtZW50cy9Db29raWVDaGVja2JveC5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2hlYWRlci9IZWFkZXJDb29raWUuc3ZlbHRlIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svTmF2LnN2ZWx0ZSIsIi4uLy4uLy4uLy4uL3NyYy9rb3BvL2NvbXBvbmVudHMvZmxleC9IZWFkbGluZS5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2hlYWRlci9IZWFkZXJNZW51LnN2ZWx0ZSIsIi4uLy4uLy4uLy4uL3NyYy9ieXNrL01lbnUuc3ZlbHRlIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svY29tcG9uZW50cy9mbGV4L0hlYWRsaW5lLnN2ZWx0ZSIsIi4uLy4uLy4uLy4uL3NyYy9ieXNrL0hlYWRlci5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL3Rvb2xzL0Vycm9yUGFnZS5zdmVsdGUiLCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvcGhvdG9zd2lwZS9kaXN0L3Bob3Rvc3dpcGUtbGlnaHRib3guZXNtLmpzIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svY29tcG9uZW50cy9mbGV4L0ltYWdlR2FsbGVyeS5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvRGlyZWN0aW9ucy5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvSW1hZ2Uuc3ZlbHRlIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svY29tcG9uZW50cy9mbGV4L1RleHRJbWFnZS5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvTGlua2xpc3Quc3ZlbHRlIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svY29tcG9uZW50cy9mbGV4L1lvdXR1YmUuc3ZlbHRlIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svY29tcG9uZW50cy9mbGV4L0F1ZGlvLnN2ZWx0ZSIsIi4uLy4uLy4uLy4uL3NyYy9ieXNrL2NvbXBvbmVudHMvZmxleC9WaWRlby5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvTWVkaWEuc3ZlbHRlIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svY29tcG9uZW50cy9mbGV4L0FjY29yZGlvbi5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvRG93bmxvYWRzLnN2ZWx0ZSIsIi4uLy4uLy4uLy4uL3NyYy9ieXNrL2NvbXBvbmVudHMvZmxleC9JY29uVGV4dC5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvQXV0b1RvYy5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvQ29udGFjdC5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvTGlzdC5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvSW5mb2JveC5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvVHdpdHRlci5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvU3BhY2VyLnN2ZWx0ZSIsIi4uLy4uLy4uLy4uL3NyYy9ieXNrL2NvbXBvbmVudHMvZmxleC9FbWJlZC5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL2ZsZXgvVGFibGUuc3ZlbHRlIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svY29tcG9uZW50cy9tYWluL1Nsb3Quc3ZlbHRlIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svY29tcG9uZW50cy9tYWluL1RpbGVNZW51LnN2ZWx0ZSIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdmVsdGUvc3JjL3J1bnRpbWUvYW5pbWF0ZS9pbmRleC5qcyIsIi4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zaW1wbGUtc3ZlbHRlLWF1dG9jb21wbGV0ZS9zcmMvU2ltcGxlQXV0b2NvbXBsZXRlLnN2ZWx0ZSIsIi4uLy4uLy4uLy4uL3NyYy9ieXNrL2NvbXBvbmVudHMvc2VhcmNoL1NlYXJjaERzdC5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9jb21wb25lbnRzL21haW4vQWN0aW9uc01lbnUuc3ZlbHRlIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svTWFpbi5zdmVsdGUiLCIuLi8uLi8uLi8uLi9zcmMvYnlzay9Gb290ZXIuc3ZlbHRlIiwiLi4vLi4vLi4vLi4vc3JjL2J5c2svYnAtbGliLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBicGNvbmZpZyA9IHtcblxuICBmb3Jtczoge1xuICAgIGNvbnRhY3Q6IHtcbiAgICAgIGRzdDogJ2h0dHBzOi8vZm9ybXVsYXJzZXJ2ZXItYnAuYmF5ZXJuLmRlL2ludGVsbGlmb3JtL2Zvcm1zL3J6c3VlZC9wb2xpem
41VpL3BvbGl6ZWkva29udGFrdGZvcm11bGFyL2luZGV4P2RzdG9nMj0nLFxuICAgICAgZmFobmR1bmc6IHtcbiAgICAgICAgZGU6ICdodHRwczovL2JwLWNpdC10ZXN0LmJheWVybi5kZS9pbnRlbGxpZm9ybS9mb3Jtcy9lbnR3aWNrbHVuZy9pdGRsei9wb2xpemVpL2ZhaG5kdW5nc2hpbndlaXNfZGUvaW5kZXg/aGFzaD0nLFxuICAgICAgICBlbjogJ2h0dHBzOi8vYnAtY2l0LXRlc3QuYmF5ZXJuLmRlL2ludGVsbGlmb3JtL2Zvcm1zL2VudHdpY2tsdW5nL2l0ZGx6L3BvbGl6ZWkvZmFobmR1bmdzaGlud2Vpc19lbi9pbmRleD9oYXNoJ1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBjYXRlZ29yaWVzOiB7XG4gICAgZHN0OiAnaHR0cHM6Ly93d3cucG9saXplaS5iYXllcm4uZGUvd2lyLXVlYmVyLXVucy9vcmdhbmlzYXRpb24vZGllbnN0c3RlbGxlbi8nXG4gIH0sXG5cbiAgbWFpbDoge1xuICAgIGJhcnJpZXJlOiAnZ3N0LmludGVybmV0QHBvbGl6ZWkuYmF5ZXJuLmRlJ1xuICB9LFxuXG4gIGNoYXRib3Q6IHtcbiAgICBpZDogJ3V0LXdpZGdldCcsXG4gICAgc3JjOiAnaHR0cHM6Ly9wb2xpemVpLmFzc2lzdGVudC5iYXllcm4uZGUvc3RhdGljL3dpZGdldC93aWRnZXQuanMnLFxuICAgIGFzeW5jOiB0cnVlLFxuICAgIGluaXQ6IHtcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgdGV4dDogJ1dpbGxrb21tZW4gYmVpIGRlciBCYXllcmlzY2hlbiBQb2xpemVpJ1xuICAgICAgfSxcbiAgICAgIGFkZE1lc3NhZ2U6IGZhbHNlXG4gICAgfSxcbiAgICBjaGF0RW5kcG9pbnQ6ICcvY2hhdC93aWRnZXQvJyxcbiAgICBzaG93V2lkZ2V0OiAyMDAwLFxuICAgIHBhZ2VzOiBbXG4gICAgXSxcbiAgICBhY3RpdmF0ZSgpIHtcbiAgICAgIGlmICh0aGlzLnBhZ2VzLmluY2x1ZGVzKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkpIHtcbiAgICAgICAgY29uc3QgcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBzLmFzeW5jID0gdGhpcy5hc3luYztcbiAgICAgICAgcy5pZCA9IHRoaXMuaWQ7XG4gICAgICAgIHMuc3JjID0gdGhpcy5zcmM7XG4gICAgICAgIC8vIG9wdGlvbmFsOiBwYXNzIGN1c3RvbSBwcm9wZXJ0aWVzXG4gICAgICAgIC8vIHMuZGF0YXNldC5pbml0aWFsTWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuaW5pdCk7XG4gICAgICAgIC8vIHMuZGF0YXNldC5jaGF0RW5kcG9pbnQgPSB0aGlzLmNoYXRFbmRwb2ludDtcbiAgICAgICAgLy8gcy5kYXRhc2V0LnNob3dXaWRnZXQgPSB0aGlzLnNob3dXaWRnZXQ7XG5cbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzKTtcbiAgICAgICAgY29uc29sZS5sb2coYENoYXRCb3QgZsO8ciBVcmwgJHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9IGFrdGl2aWVydC5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgbWF0b21vX2ZpbGU6ICcvc3RhdGljL2pzL21hdG9tby1ieXNrLmpzJyxcbiAgdHdpdHRlcl91cmw6ICdodHRwczovL3BsYXRmb3JtLnR3aXR0ZXIuY29tL3dpZGdldHMuanMnLFxuICB1c2VfdHdpdHRlcjogZmFsc2UsXG4gIHVzZV95b3V0dWJlOiBmYWxzZVxufSIsIi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge31cblxuZXhwb3J0IGNvbnN0IGlkZW50aXR5ID0gKHgpID0+IHg7XG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0ZW1wbGF0ZSBTXG4gKiBAcGFyYW0ge1R9IHRhclxuICogQHBhcmFtIHtTfSBzcmNcbiAqIEByZXR1cm5zIHtUICYgU31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2lnbih0YXIsIHNyYykge1xuXHQvLyBAdHMtaWdub3JlXG5cdGZvciAoY29uc3QgayBpbiBzcmMpIHRhcltrXSA9IHNyY1trXTtcblx0cmV0dXJuIC8qKiBAdHlwZSB7VCAmIFN9ICovICh0YXIpO1xufVxuXG4vLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3RoZW4vaXMtcHJvbWlzZS9ibG9iL21hc3Rlci9pbmRleC5qc1xuLy8gRGlzdHJpYnV0ZWQgdW5kZXIgTUlUIExpY2Vuc2UgaHR0cHM6Ly9naXRodWIuY29tL3RoZW4vaXMtcHJvbWlzZS9ibG9iL21hc3Rlci9MSUNFTlNFXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHJldHVybnMge3ZhbHVlIGlzIFByb21pc2VMaWtlPGFueT59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc19wcm9taXNlKHZhbHVlKSB7XG5cdHJldHVybiAoXG5cdFx0ISF2YWx1ZSAmJlxuXHRcdCh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykgJiZcblx0XHR0eXBlb2YgKC8qKiBAdHlwZSB7YW55fSAqLyAodmFsdWUpLnRoZW4pID09PSAnZnVuY3Rpb24nXG5cdCk7XG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRfbG9jYXRpb24oZWxlbWVudCwgZmlsZSwgbGluZSwgY29sdW1uLCBjaGFyKSB7XG5cdGVsZW1lbnQuX19zdmVsdGVfbWV0YSA9IHtcblx0XHRsb2M6IHsgZmlsZSwgbGluZSwgY29sdW1uLCBjaGFyIH1cblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bihmbikge1xuXHRyZXR1cm4gZm4oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJsYW5rX29iamVjdCgpIHtcblx0cmV0dXJuIE9iamVjdC5jcmVhdGUobnVsbCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtGdW5jdGlvbltdfSBmbnNcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuX2FsbChmbnMpIHtcblx0Zm5zLmZvckVhY2gocnVuKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueX0gdGhpbmdcbiAqIEByZXR1cm5zIHt0aGluZyBpcyBGdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzX2Z1bmN0aW9uKHRoaW5nKSB7XG5cdHJldHVybiB0eXBlb2YgdGhpbmcgPT09ICdmdW5jdGlvbic7XG59XG5cbi8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYWZlX25vdF9lcXVhbChhLCBiKSB7XG5cdHJldHVybiBhICE9IGEgPyBiID09IGIgOiBhICE9PSBiIHx8IChhICYmIHR5cGVvZiBhID09PSAnb2JqZWN0JykgfHwgdHlwZW9mIGEgPT09ICdmdW5jdGlvbic
417XG59XG5cbmxldCBzcmNfdXJsX2VxdWFsX2FuY2hvcjtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZWxlbWVudF9zcmNcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3JjX3VybF9lcXVhbChlbGVtZW50X3NyYywgdXJsKSB7XG5cdGlmIChlbGVtZW50X3NyYyA9PT0gdXJsKSByZXR1cm4gdHJ1ZTtcblx0aWYgKCFzcmNfdXJsX2VxdWFsX2FuY2hvcikge1xuXHRcdHNyY191cmxfZXF1YWxfYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXHR9XG5cdC8vIFRoaXMgaXMgYWN0dWFsbHkgZmFzdGVyIHRoYW4gZG9pbmcgVVJMKC4uKS5ocmVmXG5cdHNyY191cmxfZXF1YWxfYW5jaG9yLmhyZWYgPSB1cmw7XG5cdHJldHVybiBlbGVtZW50X3NyYyA9PT0gc3JjX3VybF9lcXVhbF9hbmNob3IuaHJlZjtcbn1cblxuLyoqIEBwYXJhbSB7c3RyaW5nfSBzcmNzZXQgKi9cbmZ1bmN0aW9uIHNwbGl0X3NyY3NldChzcmNzZXQpIHtcblx0cmV0dXJuIHNyY3NldC5zcGxpdCgnLCcpLm1hcCgoc3JjKSA9PiBzcmMudHJpbSgpLnNwbGl0KCcgJykuZmlsdGVyKEJvb2xlYW4pKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0hUTUxTb3VyY2VFbGVtZW50IHwgSFRNTEltYWdlRWxlbWVudH0gZWxlbWVudF9zcmNzZXRcbiAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbH0gc3Jjc2V0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNyY3NldF91cmxfZXF1YWwoZWxlbWVudF9zcmNzZXQsIHNyY3NldCkge1xuXHRjb25zdCBlbGVtZW50X3VybHMgPSBzcGxpdF9zcmNzZXQoZWxlbWVudF9zcmNzZXQuc3Jjc2V0KTtcblx0Y29uc3QgdXJscyA9IHNwbGl0X3NyY3NldChzcmNzZXQgfHwgJycpO1xuXG5cdHJldHVybiAoXG5cdFx0dXJscy5sZW5ndGggPT09IGVsZW1lbnRfdXJscy5sZW5ndGggJiZcblx0XHR1cmxzLmV2ZXJ5KFxuXHRcdFx0KFt1cmwsIHdpZHRoXSwgaSkgPT5cblx0XHRcdFx0d2lkdGggPT09IGVsZW1lbnRfdXJsc1tpXVsxXSAmJlxuXHRcdFx0XHQvLyBXZSBuZWVkIHRvIHRlc3QgYm90aCB3YXlzIGJlY2F1c2UgVml0ZSB3aWxsIGNyZWF0ZSBhbiBhIGZ1bGwgVVJMIHdpdGhcblx0XHRcdFx0Ly8gYG5ldyBVUkwoYXNzZXQsIGltcG9ydC5tZXRhLnVybCkuaHJlZmAgZm9yIHRoZSBjbGllbnQgd2hlbiBgYmFzZTogJy4vJ2AsIGFuZCB0aGVcblx0XHRcdFx0Ly8gcmVsYXRpdmUgVVJMcyBpbnNpZGUgc3Jjc2V0IGFyZSBub3QgYXV0b21hdGljYWxseSByZXNvbHZlZCB0byBhYnNvbHV0ZSBVUkxzIGJ5XG5cdFx0XHRcdC8vIGJyb3dzZXJzIChpbiBjb250cmFzdCB0byBpbWcuc3JjKS4gVGhpcyBtZWFucyBib3RoIFNTUiBhbmQgRE9NIGNvZGUgY291bGRcblx0XHRcdFx0Ly8gY29udGFpbiByZWxhdGl2ZSBvciBhYnNvbHV0ZSBVUkxzLlxuXHRcdFx0XHQoc3JjX3VybF9lcXVhbChlbGVtZW50X3VybHNbaV1bMF0sIHVybCkgfHwgc3JjX3VybF9lcXVhbCh1cmwsIGVsZW1lbnRfdXJsc1tpXVswXSkpXG5cdFx0KVxuXHQpO1xufVxuXG4vKiogQHJldHVybnMge2Jvb2xlYW59ICovXG5leHBvcnQgZnVuY3Rpb24gbm90X2VxdWFsKGEsIGIpIHtcblx0cmV0dXJuIGEgIT0gYSA/IGIgPT0gYiA6IGEgIT09IGI7XG59XG5cbi8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc19lbXB0eShvYmopIHtcblx0cmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVfc3RvcmUoc3RvcmUsIG5hbWUpIHtcblx0aWYgKHN0b3JlICE9IG51bGwgJiYgdHlwZW9mIHN0b3JlLnN1YnNjcmliZSAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHRocm93IG5ldyBFcnJvcihgJyR7bmFtZX0nIGlzIG5vdCBhIHN0b3JlIHdpdGggYSAnc3Vic2NyaWJlJyBtZXRob2RgKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3Vic2NyaWJlKHN0b3JlLCAuLi5jYWxsYmFja3MpIHtcblx0aWYgKHN0b3JlID09IG51bGwpIHtcblx0XHRmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIGNhbGxiYWNrcykge1xuXHRcdFx0Y2FsbGJhY2sodW5kZWZpbmVkKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5vb3A7XG5cdH1cblx0Y29uc3QgdW5zdWIgPSBzdG9yZS5zdWJzY3JpYmUoLi4uY2FsbGJhY2tzKTtcblx0cmV0dXJuIHVuc3ViLnVuc3Vic2NyaWJlID8gKCkgPT4gdW5zdWIudW5zdWJzY3JpYmUoKSA6IHVuc3ViO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY3VycmVudCB2YWx1ZSBmcm9tIGEgc3RvcmUgYnkgc3Vic2NyaWJpbmcgYW5kIGltbWVkaWF0ZWx5IHVuc3Vic2NyaWJpbmcuXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlLXN0b3JlI2dldFxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9zdG9yZS9wdWJsaWMuanMnKS5SZWFkYWJsZTxUPn0gc3RvcmVcbiAqIEByZXR1cm5zIHtUfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0X3N0b3JlX3ZhbHVlKHN0b3JlKSB7XG5cdGxldCB2YWx1ZTtcblx0c3Vic2NyaWJlKHN0b3JlLCAoXykgPT4gKHZhbHVlID0gXykpKCk7XG5cdHJldHVybiB2YWx1ZTtcbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvbmVudF9zdWJzY3JpYmUoY29tcG9uZW50LCBzdG9yZSwgY2FsbGJhY2spIHtcblx0Y29tcG9uZW50LiQkLm9uX2Rlc3Ryb3kucHVzaChzdWJzY3JpYmUoc3RvcmUsIGNhbGxiYWNrKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVfc2xvdChkZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIGZuKSB7XG5cdGlmIChkZWZpbml0aW9uKSB7XG5cdFx0Y29uc3Qgc2xvdF9jdHggPSBnZXRfc2xvdF9jb250ZXh0KGRlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZm4pO1xuXHRcdHJldHVybiBkZWZpbml0aW9uWzBdKHNsb3RfY3R4KTtcblx0fVxufVxuXG5mdW5jdGlvbiBnZXRfc2xvdF9jb250ZXh0KGRlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZm4pIHtcblx0cmV0dXJuIGRlZmluaXRpb25bMV0gJiYgZm4gPyBhc3NpZ24oJCRzY29wZS5jdHguc2xpY2UoKSwgZGVmaW5pdGlvblsxXShmbihjdHgpKSkgOiAkJHNjb3BlLmN0eDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldF9zbG90X2NoYW5nZXMoZGVmaW5pdGlvbiwgJCRzY29wZSwgZGlydHksIGZuKSB7XG5cdGlmIChkZWZpbml0aW9uWzJdICYmIGZuKSB7XG5cdFx0Y29uc3QgbGV0cyA9IGRlZmluaXRpb25bMl0oZm4oZGlydHkpKTtcblx0XHRpZiAoJCRzY29wZS5kaXJ0eSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gbGV0cztcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiBsZXRzID09PSAnb2JqZWN0Jykge1xuXHRcdFx0Y29uc3QgbWVyZ2VkID0gW107XG5cdFx0XHRjb25zdCBsZW4gPSBNYXRoLm1heCgkJHNjb3BlLmRpcnR5Lmxlbmd0aCwgbGV0cy5sZW5ndGgpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMSkge1xuXHRcdFx0XHRtZXJnZWRbaV0gPSAkJHNjb3BlLmRpcnR5W2ldIHwgbGV0c1tpXTtcblx0XHRcdH1cblx0XHRcdHJldHVybi
41BtZXJnZWQ7XG5cdFx0fVxuXHRcdHJldHVybiAkJHNjb3BlLmRpcnR5IHwgbGV0cztcblx0fVxuXHRyZXR1cm4gJCRzY29wZS5kaXJ0eTtcbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZV9zbG90X2Jhc2UoXG5cdHNsb3QsXG5cdHNsb3RfZGVmaW5pdGlvbixcblx0Y3R4LFxuXHQkJHNjb3BlLFxuXHRzbG90X2NoYW5nZXMsXG5cdGdldF9zbG90X2NvbnRleHRfZm5cbikge1xuXHRpZiAoc2xvdF9jaGFuZ2VzKSB7XG5cdFx0Y29uc3Qgc2xvdF9jb250ZXh0ID0gZ2V0X3Nsb3RfY29udGV4dChzbG90X2RlZmluaXRpb24sIGN0eCwgJCRzY29wZSwgZ2V0X3Nsb3RfY29udGV4dF9mbik7XG5cdFx0c2xvdC5wKHNsb3RfY29udGV4dCwgc2xvdF9jaGFuZ2VzKTtcblx0fVxufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlX3Nsb3QoXG5cdHNsb3QsXG5cdHNsb3RfZGVmaW5pdGlvbixcblx0Y3R4LFxuXHQkJHNjb3BlLFxuXHRkaXJ0eSxcblx0Z2V0X3Nsb3RfY2hhbmdlc19mbixcblx0Z2V0X3Nsb3RfY29udGV4dF9mblxuKSB7XG5cdGNvbnN0IHNsb3RfY2hhbmdlcyA9IGdldF9zbG90X2NoYW5nZXMoc2xvdF9kZWZpbml0aW9uLCAkJHNjb3BlLCBkaXJ0eSwgZ2V0X3Nsb3RfY2hhbmdlc19mbik7XG5cdHVwZGF0ZV9zbG90X2Jhc2Uoc2xvdCwgc2xvdF9kZWZpbml0aW9uLCBjdHgsICQkc2NvcGUsIHNsb3RfY2hhbmdlcywgZ2V0X3Nsb3RfY29udGV4dF9mbik7XG59XG5cbi8qKiBAcmV0dXJucyB7YW55W10gfCAtMX0gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRfYWxsX2RpcnR5X2Zyb21fc2NvcGUoJCRzY29wZSkge1xuXHRpZiAoJCRzY29wZS5jdHgubGVuZ3RoID4gMzIpIHtcblx0XHRjb25zdCBkaXJ0eSA9IFtdO1xuXHRcdGNvbnN0IGxlbmd0aCA9ICQkc2NvcGUuY3R4Lmxlbmd0aCAvIDMyO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcblx0XHRcdGRpcnR5W2ldID0gLTE7XG5cdFx0fVxuXHRcdHJldHVybiBkaXJ0eTtcblx0fVxuXHRyZXR1cm4gLTE7XG59XG5cbi8qKiBAcmV0dXJucyB7e319ICovXG5leHBvcnQgZnVuY3Rpb24gZXhjbHVkZV9pbnRlcm5hbF9wcm9wcyhwcm9wcykge1xuXHRjb25zdCByZXN1bHQgPSB7fTtcblx0Zm9yIChjb25zdCBrIGluIHByb3BzKSBpZiAoa1swXSAhPT0gJyQnKSByZXN1bHRba10gPSBwcm9wc1trXTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqIEByZXR1cm5zIHt7fX0gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlX3Jlc3RfcHJvcHMocHJvcHMsIGtleXMpIHtcblx0Y29uc3QgcmVzdCA9IHt9O1xuXHRrZXlzID0gbmV3IFNldChrZXlzKTtcblx0Zm9yIChjb25zdCBrIGluIHByb3BzKSBpZiAoIWtleXMuaGFzKGspICYmIGtbMF0gIT09ICckJykgcmVzdFtrXSA9IHByb3BzW2tdO1xuXHRyZXR1cm4gcmVzdDtcbn1cblxuLyoqIEByZXR1cm5zIHt7fX0gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlX3Nsb3RzKHNsb3RzKSB7XG5cdGNvbnN0IHJlc3VsdCA9IHt9O1xuXHRmb3IgKGNvbnN0IGtleSBpbiBzbG90cykge1xuXHRcdHJlc3VsdFtrZXldID0gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKiogQHJldHVybnMgeyh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uY2UoZm4pIHtcblx0bGV0IHJhbiA9IGZhbHNlO1xuXHRyZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHRpZiAocmFuKSByZXR1cm47XG5cdFx0cmFuID0gdHJ1ZTtcblx0XHRmbi5jYWxsKHRoaXMsIC4uLmFyZ3MpO1xuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbnVsbF90b19lbXB0eSh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRfc3RvcmVfdmFsdWUoc3RvcmUsIHJldCwgdmFsdWUpIHtcblx0c3RvcmUuc2V0KHZhbHVlKTtcblx0cmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGNvbnN0IGhhc19wcm9wID0gKG9iaiwgcHJvcCkgPT4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25fZGVzdHJveWVyKGFjdGlvbl9yZXN1bHQpIHtcblx0cmV0dXJuIGFjdGlvbl9yZXN1bHQgJiYgaXNfZnVuY3Rpb24oYWN0aW9uX3Jlc3VsdC5kZXN0cm95KSA/IGFjdGlvbl9yZXN1bHQuZGVzdHJveSA6IG5vb3A7XG59XG5cbi8qKiBAcGFyYW0ge251bWJlciB8IHN0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtbbnVtYmVyLCBzdHJpbmddfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRfY3NzX3VuaXQodmFsdWUpIHtcblx0Y29uc3Qgc3BsaXQgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLm1hdGNoKC9eXFxzKigtP1tcXGQuXSspKFteXFxzXSopXFxzKiQvKTtcblx0cmV0dXJuIHNwbGl0ID8gW3BhcnNlRmxvYXQoc3BsaXRbMV0pLCBzcGxpdFsyXSB8fCAncHgnXSA6IFsvKiogQHR5cGUge251bWJlcn0gKi8gKHZhbHVlKSwgJ3B4J107XG59XG5cbmV4cG9ydCBjb25zdCBjb250ZW50ZWRpdGFibGVfdHJ1dGh5X3ZhbHVlcyA9IFsnJywgdHJ1ZSwgMSwgJ3RydWUnLCAnY29udGVudGVkaXRhYmxlJ107XG4iLCJpbXBvcnQgeyBub29wIH0gZnJvbSAnLi91dGlscy5qcyc7XG5cbmV4cG9ydCBjb25zdCBpc19jbGllbnQgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcblxuLyoqIEB0eXBlIHsoKSA9PiBudW1iZXJ9ICovXG5leHBvcnQgbGV0IG5vdyA9IGlzX2NsaWVudCA/ICgpID0+IHdpbmRvdy5wZXJmb3JtYW5jZS5ub3coKSA6ICgpID0+IERhdGUubm93KCk7XG5cbmV4cG9ydCBsZXQgcmFmID0gaXNfY2xpZW50ID8gKGNiKSA9PiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpIDogbm9vcDtcblxuLy8gdXNlZCBpbnRlcm5hbGx5IGZvciB0ZXN0aW5nXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gc2V0X25vdyhmbikge1xuXHRub3cgPSBmbjtcbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldF9yYWYoZm4pIHtcblx0cmFmID0gZm47XG59XG4iLCJpbXBvcnQgeyByYWYgfSBmcm9tICcuL2Vudmlyb25tZW50LmpzJztcblxuY29uc3QgdGFza3MgPSBuZXcgU2V0KCk7XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IG5vd1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHJ1bl90YXNrcyhub3cpIHtcblx0dGFza3MuZm9yRWFjaCgodGFzaykgPT4ge1xuXHRcdGlmICghdGFzay5jKG5vdykpIHtcblx0XHRcdHRhc2tzLmRlbGV0ZSh0YXNrKTtcblx0XHRcdHRhc2suZigpO1xuXHRcdH1cblx0fSk7XG5cdGlmICh0YXNrcy5zaXplICE9PSAwKSByYWYocnVuX3Rhc2tzKTtcbn1cblxuLyoqXG4gKiBGb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5IVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhcl9sb29wcygpIHtcblx0dGFza3MuY2xlYXIoKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHRhc2sgdGhhdCBydW5zIG9uIGVhY2ggcmFmIGZyYW1lXG4gKiB1bnRpbCBpdCByZXR1cm5zIGEgZmFsc3kgdmFsdWUgb3IgaXMgYWJvcnRlZFxuICogQHBhcmFtIHtpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLlRhc2tDYWxsYmFja30gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLlRhc2t9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb29wKGNhbGxiYWNrKSB7XG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL3ByaXZhdGUuanMnKS5UYXNrRW50cnl9ICovXG5cdGxldCB0YXNrO1xuXHRpZiAodGFza3Muc2l6ZSA9PT0gMCkgcmFmKHJ1bl90YXNrcyk7XG5cdHJldHVybi
41B7XG5cdFx0cHJvbWlzZTogbmV3IFByb21pc2UoKGZ1bGZpbGwpID0+IHtcblx0XHRcdHRhc2tzLmFkZCgodGFzayA9IHsgYzogY2FsbGJhY2ssIGY6IGZ1bGZpbGwgfSkpO1xuXHRcdH0pLFxuXHRcdGFib3J0KCkge1xuXHRcdFx0dGFza3MuZGVsZXRlKHRhc2spO1xuXHRcdH1cblx0fTtcbn1cbiIsIi8qKiBAdHlwZSB7dHlwZW9mIGdsb2JhbFRoaXN9ICovXG5leHBvcnQgY29uc3QgZ2xvYmFscyA9XG5cdHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG5cdFx0PyB3aW5kb3dcblx0XHQ6IHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJ1xuXHRcdD8gZ2xvYmFsVGhpc1xuXHRcdDogLy8gQHRzLWlnbm9yZSBOb2RlIHR5cGluZ3MgaGF2ZSB0aGlzXG5cdFx0ICBnbG9iYWw7XG4iLCJpbXBvcnQgeyBjb250ZW50ZWRpdGFibGVfdHJ1dGh5X3ZhbHVlcywgaGFzX3Byb3AgfSBmcm9tICcuL3V0aWxzLmpzJztcblxuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJTaW5nbGV0b24gfSBmcm9tICcuL1Jlc2l6ZU9ic2VydmVyU2luZ2xldG9uLmpzJztcblxuLy8gVHJhY2sgd2hpY2ggbm9kZXMgYXJlIGNsYWltZWQgZHVyaW5nIGh5ZHJhdGlvbi4gVW5jbGFpbWVkIG5vZGVzIGNhbiB0aGVuIGJlIHJlbW92ZWQgZnJvbSB0aGUgRE9NXG4vLyBhdCB0aGUgZW5kIG9mIGh5ZHJhdGlvbiB3aXRob3V0IHRvdWNoaW5nIHRoZSByZW1haW5pbmcgbm9kZXMuXG5sZXQgaXNfaHlkcmF0aW5nID0gZmFsc2U7XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydF9oeWRyYXRpbmcoKSB7XG5cdGlzX2h5ZHJhdGluZyA9IHRydWU7XG59XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmRfaHlkcmF0aW5nKCkge1xuXHRpc19oeWRyYXRpbmcgPSBmYWxzZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gbG93XG4gKiBAcGFyYW0ge251bWJlcn0gaGlnaFxuICogQHBhcmFtIHsoaW5kZXg6IG51bWJlcikgPT4gbnVtYmVyfSBrZXlcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gdXBwZXJfYm91bmQobG93LCBoaWdoLCBrZXksIHZhbHVlKSB7XG5cdC8vIFJldHVybiBmaXJzdCBpbmRleCBvZiB2YWx1ZSBsYXJnZXIgdGhhbiBpbnB1dCB2YWx1ZSBpbiB0aGUgcmFuZ2UgW2xvdywgaGlnaClcblx0d2hpbGUgKGxvdyA8IGhpZ2gpIHtcblx0XHRjb25zdCBtaWQgPSBsb3cgKyAoKGhpZ2ggLSBsb3cpID4+IDEpO1xuXHRcdGlmIChrZXkobWlkKSA8PSB2YWx1ZSkge1xuXHRcdFx0bG93ID0gbWlkICsgMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aGlnaCA9IG1pZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGxvdztcbn1cblxuLyoqXG4gKiBAcGFyYW0ge05vZGVFeH0gdGFyZ2V0XG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gaW5pdF9oeWRyYXRlKHRhcmdldCkge1xuXHRpZiAodGFyZ2V0Lmh5ZHJhdGVfaW5pdCkgcmV0dXJuO1xuXHR0YXJnZXQuaHlkcmF0ZV9pbml0ID0gdHJ1ZTtcblx0Ly8gV2Uga25vdyB0aGF0IGFsbCBjaGlsZHJlbiBoYXZlIGNsYWltX29yZGVyIHZhbHVlcyBzaW5jZSB0aGUgdW5jbGFpbWVkIGhhdmUgYmVlbiBkZXRhY2hlZCBpZiB0YXJnZXQgaXMgbm90IDxoZWFkPlxuXG5cdGxldCBjaGlsZHJlbiA9IC8qKiBAdHlwZSB7QXJyYXlMaWtlPE5vZGVFeDI+fSAqLyAodGFyZ2V0LmNoaWxkTm9kZXMpO1xuXHQvLyBJZiB0YXJnZXQgaXMgPGhlYWQ+LCB0aGVyZSBtYXkgYmUgY2hpbGRyZW4gd2l0aG91dCBjbGFpbV9vcmRlclxuXHRpZiAodGFyZ2V0Lm5vZGVOYW1lID09PSAnSEVBRCcpIHtcblx0XHRjb25zdCBteV9jaGlsZHJlbiA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IG5vZGUgPSBjaGlsZHJlbltpXTtcblx0XHRcdGlmIChub2RlLmNsYWltX29yZGVyICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0bXlfY2hpbGRyZW4ucHVzaChub2RlKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y2hpbGRyZW4gPSBteV9jaGlsZHJlbjtcblx0fVxuXHQvKlxuXHQgKiBSZW9yZGVyIGNsYWltZWQgY2hpbGRyZW4gb3B0aW1hbGx5LlxuXHQgKiBXZSBjYW4gcmVvcmRlciBjbGFpbWVkIGNoaWxkcmVuIG9wdGltYWxseSBieSBmaW5kaW5nIHRoZSBsb25nZXN0IHN1YnNlcXVlbmNlIG9mXG5cdCAqIG5vZGVzIHRoYXQgYXJlIGFscmVhZHkgY2xhaW1lZCBpbiBvcmRlciBhbmQgb25seSBtb3ZpbmcgdGhlIHJlc3QuIFRoZSBsb25nZXN0XG5cdCAqIHN1YnNlcXVlbmNlIG9mIG5vZGVzIHRoYXQgYXJlIGNsYWltZWQgaW4gb3JkZXIgY2FuIGJlIGZvdW5kIGJ5XG5cdCAqIGNvbXB1dGluZyB0aGUgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIG9mIC5jbGFpbV9vcmRlciB2YWx1ZXMuXG5cdCAqXG5cdCAqIFRoaXMgYWxnb3JpdGhtIGlzIG9wdGltYWwgaW4gZ2VuZXJhdGluZyB0aGUgbGVhc3QgYW1vdW50IG9mIHJlb3JkZXIgb3BlcmF0aW9uc1xuXHQgKiBwb3NzaWJsZS5cblx0ICpcblx0ICogUHJvb2Y6XG5cdCAqIFdlIGtub3cgdGhhdCwgZ2l2ZW4gYSBzZXQgb2YgcmVvcmRlcmluZyBvcGVyYXRpb25zLCB0aGUgbm9kZXMgdGhhdCBkbyBub3QgbW92ZVxuXHQgKiBhbHdheXMgZm9ybSBhbiBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlLCBzaW5jZSB0aGV5IGRvIG5vdCBtb3ZlIGFtb25nIGVhY2ggb3RoZXJcblx0ICogbWVhbmluZyB0aGF0IHRoZXkgbXVzdCBiZSBhbHJlYWR5IG9yZGVyZWQgYW1vbmcgZWFjaCBvdGhlci4gVGh1cywgdGhlIG1heGltYWxcblx0ICogc2V0IG9mIG5vZGVzIHRoYXQgZG8gbm90IG1vdmUgZm9ybSBhIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZS5cblx0ICovXG5cdC8vIENvbXB1dGUgbG9uZ2VzdCBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlXG5cdC8vIG06IHN1YnNlcXVlbmNlIGxlbmd0aCBqID0+IGluZGV4IGsgb2Ygc21hbGxlc3QgdmFsdWUgdGhhdCBlbmRzIGFuIGluY3JlYXNpbmcgc3Vic2VxdWVuY2Ugb2YgbGVuZ3RoIGpcblx0Y29uc3QgbSA9IG5ldyBJbnQzMkFycmF
415KGNoaWxkcmVuLmxlbmd0aCArIDEpO1xuXHQvLyBQcmVkZWNlc3NvciBpbmRpY2VzICsgMVxuXHRjb25zdCBwID0gbmV3IEludDMyQXJyYXkoY2hpbGRyZW4ubGVuZ3RoKTtcblx0bVswXSA9IC0xO1xuXHRsZXQgbG9uZ2VzdCA9IDA7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBjdXJyZW50ID0gY2hpbGRyZW5baV0uY2xhaW1fb3JkZXI7XG5cdFx0Ly8gRmluZCB0aGUgbGFyZ2VzdCBzdWJzZXF1ZW5jZSBsZW5ndGggc3VjaCB0aGF0IGl0IGVuZHMgaW4gYSB2YWx1ZSBsZXNzIHRoYW4gb3VyIGN1cnJlbnQgdmFsdWVcblx0XHQvLyB1cHBlcl9ib3VuZCByZXR1cm5zIGZpcnN0IGdyZWF0ZXIgdmFsdWUsIHNvIHdlIHN1YnRyYWN0IG9uZVxuXHRcdC8vIHdpdGggZmFzdCBwYXRoIGZvciB3aGVuIHdlIGFyZSBvbiB0aGUgY3VycmVudCBsb25nZXN0IHN1YnNlcXVlbmNlXG5cdFx0Y29uc3Qgc2VxX2xlbiA9XG5cdFx0XHQobG9uZ2VzdCA+IDAgJiYgY2hpbGRyZW5bbVtsb25nZXN0XV0uY2xhaW1fb3JkZXIgPD0gY3VycmVudFxuXHRcdFx0XHQ/IGxvbmdlc3QgKyAxXG5cdFx0XHRcdDogdXBwZXJfYm91bmQoMSwgbG9uZ2VzdCwgKGlkeCkgPT4gY2hpbGRyZW5bbVtpZHhdXS5jbGFpbV9vcmRlciwgY3VycmVudCkpIC0gMTtcblx0XHRwW2ldID0gbVtzZXFfbGVuXSArIDE7XG5cdFx0Y29uc3QgbmV3X2xlbiA9IHNlcV9sZW4gKyAxO1xuXHRcdC8vIFdlIGNhbiBndWFyYW50ZWUgdGhhdCBjdXJyZW50IGlzIHRoZSBzbWFsbGVzdCB2YWx1ZS4gT3RoZXJ3aXNlLCB3ZSB3b3VsZCBoYXZlIGdlbmVyYXRlZCBhIGxvbmdlciBzZXF1ZW5jZS5cblx0XHRtW25ld19sZW5dID0gaTtcblx0XHRsb25nZXN0ID0gTWF0aC5tYXgobmV3X2xlbiwgbG9uZ2VzdCk7XG5cdH1cblx0Ly8gVGhlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZSBvZiBub2RlcyAoaW5pdGlhbGx5IHJldmVyc2VkKVxuXG5cdC8qKlxuXHQgKiBAdHlwZSB7Tm9kZUV4MltdfVxuXHQgKi9cblx0Y29uc3QgbGlzID0gW107XG5cdC8vIFRoZSByZXN0IG9mIHRoZSBub2Rlcywgbm9kZXMgdGhhdCB3aWxsIGJlIG1vdmVkXG5cblx0LyoqXG5cdCAqIEB0eXBlIHtOb2RlRXgyW119XG5cdCAqL1xuXHRjb25zdCB0b19tb3ZlID0gW107XG5cdGxldCBsYXN0ID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTtcblx0Zm9yIChsZXQgY3VyID0gbVtsb25nZXN0XSArIDE7IGN1ciAhPSAwOyBjdXIgPSBwW2N1ciAtIDFdKSB7XG5cdFx0bGlzLnB1c2goY2hpbGRyZW5bY3VyIC0gMV0pO1xuXHRcdGZvciAoOyBsYXN0ID49IGN1cjsgbGFzdC0tKSB7XG5cdFx0XHR0b19tb3ZlLnB1c2goY2hpbGRyZW5bbGFzdF0pO1xuXHRcdH1cblx0XHRsYXN0LS07XG5cdH1cblx0Zm9yICg7IGxhc3QgPj0gMDsgbGFzdC0tKSB7XG5cdFx0dG9fbW92ZS5wdXNoKGNoaWxkcmVuW2xhc3RdKTtcblx0fVxuXHRsaXMucmV2ZXJzZSgpO1xuXHQvLyBXZSBzb3J0IHRoZSBub2RlcyBiZWluZyBtb3ZlZCB0byBndWFyYW50ZWUgdGhhdCB0aGVpciBpbnNlcnRpb24gb3JkZXIgbWF0Y2hlcyB0aGUgY2xhaW0gb3JkZXJcblx0dG9fbW92ZS5zb3J0KChhLCBiKSA9PiBhLmNsYWltX29yZGVyIC0gYi5jbGFpbV9vcmRlcik7XG5cdC8vIEZpbmFsbHksIHdlIG1vdmUgdGhlIG5vZGVzXG5cdGZvciAobGV0IGkgPSAwLCBqID0gMDsgaSA8IHRvX21vdmUubGVuZ3RoOyBpKyspIHtcblx0XHR3aGlsZSAoaiA8IGxpcy5sZW5ndGggJiYgdG9fbW92ZVtpXS5jbGFpbV9vcmRlciA+PSBsaXNbal0uY2xhaW1fb3JkZXIpIHtcblx0XHRcdGorKztcblx0XHR9XG5cdFx0Y29uc3QgYW5jaG9yID0gaiA8IGxpcy5sZW5ndGggPyBsaXNbal0gOiBudWxsO1xuXHRcdHRhcmdldC5pbnNlcnRCZWZvcmUodG9fbW92ZVtpXSwgYW5jaG9yKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Tm9kZX0gdGFyZ2V0XG4gKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kKHRhcmdldCwgbm9kZSkge1xuXHR0YXJnZXQuYXBwZW5kQ2hpbGQobm9kZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtOb2RlfSB0YXJnZXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZV9zaGVldF9pZFxuICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRfc3R5bGVzKHRhcmdldCwgc3R5bGVfc2hlZXRfaWQsIHN0eWxlcykge1xuXHRjb25zdCBhcHBlbmRfc3R5bGVzX3RvID0gZ2V0X3Jvb3RfZm9yX3N0eWxlKHRhcmdldCk7XG5cdGlmICghYXBwZW5kX3N0eWxlc190by5nZXRFbGVtZW50QnlJZChzdHlsZV9zaGVldF9pZCkpIHtcblx0XHRjb25zdCBzdHlsZSA9IGVsZW1lbnQoJ3N0eWxlJyk7XG5cdFx0c3R5bGUuaWQgPSBzdHlsZV9zaGVldF9pZDtcblx0XHRzdHlsZS50ZXh0Q29udGVudCA9IHN0eWxlcztcblx0XHRhcHBlbmRfc3R5bGVzaGVldChhcHBlbmRfc3R5bGVzX3RvLCBzdHlsZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAqIEByZXR1cm5zIHtTaGFkb3dSb290IHwgRG9jdW1lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRfcm9vdF9mb3Jfc3R5bGUobm9kZSkge1xuXHRpZiAoIW5vZGUpIHJldHVybiBkb2N1bWVudDtcblx0Y29uc3Qgcm9vdCA9IG5vZGUuZ2V0Um9vdE5vZGUgPyBub2RlLmdldFJvb3ROb2RlKCkgOiBub2RlLm93bmVyRG9jdW1lbnQ7XG5cdGlmIChyb290ICYmIC8qKiBAdHlwZSB7U2hhZG93Um9vdH0gKi8gKHJvb3QpLmhvc3QpIHtcblx0XHRyZXR1cm4gLyoqIEB0eXBlIHtTaGFkb3dSb290fSAqLyAocm9vdCk7XG5cdH1cblx0cmV0dXJuIG5vZGUub3duZXJEb2N1bWVudDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAqIEByZXR1cm5zIHtDU1NTdHlsZVNoZWV0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kX2VtcHR5X3N0eWxlc2hlZXQobm9kZSkge1xuXHRjb25zdCBzdHlsZV9lbGVtZW50ID0gZWxlbWVudCgnc3R5bGUnKTtcblx0Ly8gRm9yIHRyYW5zaXRpb25zIHRvIHdvcmsgd2l0aG91dCAnc3R5bGUtc3JjOiB1bnNhZmUtaW5saW5lJyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSxcblx0Ly8gdGhlc2UgZW1wdHkgdGFncyBuZWVkIHRvIGJlIGFsbG93ZWQgd2l0aCBhIGhhc2ggYXMgYSB3b3JrYXJvdW5kIHVudGlsIHdlIG1vdmUgdG8gdGhlIFdlYiBBbmltYXRpb25zIEFQSS5cblx0Ly8gVXNpbmcgdGhlIGhhc2ggZm9yIHRoZSBlbXB0eSBzdHJpbmcgKGZvciBhbiBlbXB0eSB0YWcpIHdvcmtzIGluIGFsbCBicm93c2VycyBleGNlcHQgU2FmYXJpLlxuXHQvLyBTbyBhcyBhIHdvcmthcm91bmQgZm9yIHRoZSB3b3JrYXJvdW5kLCB3aGVuIHdlIGFwcGVuZCBlbXB0eSBzdHlsZSB0YWdzIHdlIHNldCB0aGVpciBjb250ZW50IHRvIC8qIGVtcHR5ICovLlxuXHQvLyBUaGUgaGFzaCAnc2hhMjU2LTlPbE5PMERORWVhVnpITDRSWndDTHNCSEE4V0JROHRvQnAvNEY1WFYybmM9JyB3aWxsIHRoZW4gd29yayBldmVuIGluIFNhZmFyaS5cblx0c3R5bGVfZWxlbWVudC50ZXh0Q29udGVudCA9ICcvKiBlbXB0eSAqLyc7XG5cdGFwcGVuZF9zdHlsZXNoZWV0KGdldF9yb290X2Zvcl9zdHlsZShub2RlKSwgc3R5bGVfZWxlbWVudCk7XG5cdHJldHVybi
41BzdHlsZV9lbGVtZW50LnNoZWV0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7U2hhZG93Um9vdCB8IERvY3VtZW50fSBub2RlXG4gKiBAcGFyYW0ge0hUTUxTdHlsZUVsZW1lbnR9IHN0eWxlXG4gKiBAcmV0dXJucyB7Q1NTU3R5bGVTaGVldH1cbiAqL1xuZnVuY3Rpb24gYXBwZW5kX3N0eWxlc2hlZXQobm9kZSwgc3R5bGUpIHtcblx0YXBwZW5kKC8qKiBAdHlwZSB7RG9jdW1lbnR9ICovIChub2RlKS5oZWFkIHx8IG5vZGUsIHN0eWxlKTtcblx0cmV0dXJuIHN0eWxlLnNoZWV0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Tm9kZUV4fSB0YXJnZXRcbiAqIEBwYXJhbSB7Tm9kZUV4fSBub2RlXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZF9oeWRyYXRpb24odGFyZ2V0LCBub2RlKSB7XG5cdGlmIChpc19oeWRyYXRpbmcpIHtcblx0XHRpbml0X2h5ZHJhdGUodGFyZ2V0KTtcblx0XHRpZiAoXG5cdFx0XHR0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZCA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHQodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgIT09IG51bGwgJiYgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQucGFyZW50Tm9kZSAhPT0gdGFyZ2V0KVxuXHRcdCkge1xuXHRcdFx0dGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSB0YXJnZXQuZmlyc3RDaGlsZDtcblx0XHR9XG5cdFx0Ly8gU2tpcCBub2RlcyBvZiB1bmRlZmluZWQgb3JkZXJpbmdcblx0XHR3aGlsZSAodGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgIT09IG51bGwgJiYgdGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQuY2xhaW1fb3JkZXIgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSB0YXJnZXQuYWN0dWFsX2VuZF9jaGlsZC5uZXh0U2libGluZztcblx0XHR9XG5cdFx0aWYgKG5vZGUgIT09IHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkKSB7XG5cdFx0XHQvLyBXZSBvbmx5IGluc2VydCBpZiB0aGUgb3JkZXJpbmcgb2YgdGhpcyBub2RlIHNob3VsZCBiZSBtb2RpZmllZCBvciB0aGUgcGFyZW50IG5vZGUgaXMgbm90IHRhcmdldFxuXHRcdFx0aWYgKG5vZGUuY2xhaW1fb3JkZXIgIT09IHVuZGVmaW5lZCB8fCBub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCkge1xuXHRcdFx0XHR0YXJnZXQuaW5zZXJ0QmVmb3JlKG5vZGUsIHRhcmdldC5hY3R1YWxfZW5kX2NoaWxkKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGFyZ2V0LmFjdHVhbF9lbmRfY2hpbGQgPSBub2RlLm5leHRTaWJsaW5nO1xuXHRcdH1cblx0fSBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCB8fCBub2RlLm5leHRTaWJsaW5nICE9PSBudWxsKSB7XG5cdFx0dGFyZ2V0LmFwcGVuZENoaWxkKG5vZGUpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtOb2RlfSB0YXJnZXRcbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtOb2RlfSBbYW5jaG9yXVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnQodGFyZ2V0LCBub2RlLCBhbmNob3IpIHtcblx0dGFyZ2V0Lmluc2VydEJlZm9yZShub2RlLCBhbmNob3IgfHwgbnVsbCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtOb2RlRXh9IHRhcmdldFxuICogQHBhcmFtIHtOb2RlRXh9IG5vZGVcbiAqIEBwYXJhbSB7Tm9kZUV4fSBbYW5jaG9yXVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRfaHlkcmF0aW9uKHRhcmdldCwgbm9kZSwgYW5jaG9yKSB7XG5cdGlmIChpc19oeWRyYXRpbmcgJiYgIWFuY2hvcikge1xuXHRcdGFwcGVuZF9oeWRyYXRpb24odGFyZ2V0LCBub2RlKTtcblx0fSBlbHNlIGlmIChub2RlLnBhcmVudE5vZGUgIT09IHRhcmdldCB8fCBub2RlLm5leHRTaWJsaW5nICE9IGFuY2hvcikge1xuXHRcdHRhcmdldC5pbnNlcnRCZWZvcmUobm9kZSwgYW5jaG9yIHx8IG51bGwpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtOb2RlfSBub2RlXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGFjaChub2RlKSB7XG5cdGlmIChub2RlLnBhcmVudE5vZGUpIHtcblx0XHRub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXN0cm95X2VhY2goaXRlcmF0aW9ucywgZGV0YWNoaW5nKSB7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgaXRlcmF0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuXHRcdGlmIChpdGVyYXRpb25zW2ldKSBpdGVyYXRpb25zW2ldLmQoZGV0YWNoaW5nKTtcblx0fVxufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7a2V5b2YgSFRNTEVsZW1lbnRUYWdOYW1lTWFwfSBLXG4gKiBAcGFyYW0ge0t9IG5hbWVcbiAqIEByZXR1cm5zIHtIVE1MRWxlbWVudFRhZ05hbWVNYXBbS119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbGVtZW50KG5hbWUpIHtcblx0cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobmFtZSk7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIHtrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXB9IEtcbiAqIEBwYXJhbSB7S30gbmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IGlzXG4gKiBAcmV0dXJucyB7SFRNTEVsZW1lbnRUYWdOYW1lTWFwW0tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZWxlbWVudF9pcyhuYW1lLCBpcykge1xuXHRyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuYW1lLCB7
41IGlzIH0pO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdGVtcGxhdGUge2tleW9mIFR9IEtcbiAqIEBwYXJhbSB7VH0gb2JqXG4gKiBAcGFyYW0ge0tbXX0gZXhjbHVkZVxuICogQHJldHVybnMge1BpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBLPj59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvYmplY3Rfd2l0aG91dF9wcm9wZXJ0aWVzKG9iaiwgZXhjbHVkZSkge1xuXHRjb25zdCB0YXJnZXQgPSAvKiogQHR5cGUge1BpY2s8VCwgRXhjbHVkZTxrZXlvZiBULCBLPj59ICovICh7fSk7XG5cdGZvciAoY29uc3QgayBpbiBvYmopIHtcblx0XHRpZiAoXG5cdFx0XHRoYXNfcHJvcChvYmosIGspICYmXG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRleGNsdWRlLmluZGV4T2YoaykgPT09IC0xXG5cdFx0KSB7XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHR0YXJnZXRba10gPSBvYmpba107XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0YXJnZXQ7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIHtrZXlvZiBTVkdFbGVtZW50VGFnTmFtZU1hcH0gS1xuICogQHBhcmFtIHtLfSBuYW1lXG4gKiBAcmV0dXJucyB7U1ZHRWxlbWVudH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN2Z19lbGVtZW50KG5hbWUpIHtcblx0cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCBuYW1lKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZGF0YVxuICogQHJldHVybnMge1RleHR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXh0KGRhdGEpIHtcblx0cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRhdGEpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtUZXh0fSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwYWNlKCkge1xuXHRyZXR1cm4gdGV4dCgnICcpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtUZXh0fSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5KCkge1xuXHRyZXR1cm4gdGV4dCgnJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnRcbiAqIEByZXR1cm5zIHtDb21tZW50fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudChjb250ZW50KSB7XG5cdHJldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KGNvbnRlbnQpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RXZlbnRUYXJnZXR9IG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFxuICogQHBhcmFtIHtFdmVudExpc3RlbmVyT3JFdmVudExpc3RlbmVyT2JqZWN0fSBoYW5kbGVyXG4gKiBAcGFyYW0ge2Jvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyB8IEV2ZW50TGlzdGVuZXJPcHRpb25zfSBbb3B0aW9uc11cbiAqIEByZXR1cm5zIHsoKSA9PiB2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuKG5vZGUsIGV2ZW50LCBoYW5kbGVyLCBvcHRpb25zKSB7XG5cdG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlciwgb3B0aW9ucyk7XG5cdHJldHVybiAoKSA9PiBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZXIsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHsoZXZlbnQ6IGFueSkgPT4gYW55fSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXZlbnRfZGVmYXVsdChmbikge1xuXHRyZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0cmV0dXJuIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuXHR9O1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHsoZXZlbnQ6IGFueSkgPT4gYW55fSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0b3BfcHJvcGFnYXRpb24oZm4pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRyZXR1cm4gZm4uY2FsbCh0aGlzLCBldmVudCk7XG5cdH07XG59XG5cbi8qKlxuICogQHJldHVybnMgeyhldmVudDogYW55KSA9PiBhbnl9ICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcF9pbW1lZGlhdGVfcHJvcGFnYXRpb24oZm4pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuXHRcdGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRyZXR1cm4gZm4uY2FsbCh0aGlzLCBldmVudCk7XG5cdH07XG59XG5cbi8qKlxuICogQHJldHVybnMgeyhldmVudDogYW55KSA9PiB2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbGYoZm4pIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChldmVudCkge1xuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzKSBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcblx0fTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7KGV2ZW50OiBhbnkpID0+IHZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RlZChmbikge1xuXHRyZXR1cm4gZnVuY3Rpb24gKGV2ZW50KSB7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGlmIChldmVudC5pc1RydXN0ZWQpIGZuLmNhbGwodGhpcywgZXZlbnQpO1xuXHR9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RWxlbWVudH0gbm9kZVxuICogQHBhcmFtIHtzdHJpbmd9IGF0dHJpYnV0ZVxuICogQHBhcmFtIHtzdHJpbmd9IFt2YWx1ZV1cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0cihub2RlLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG5cdGlmICh2YWx1ZSA9PSBudWxsKSBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuXHRlbHNlIGlmIChub2RlLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpICE9PSB2YWx1ZSkgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZSk7XG59XG4vKipcbiAqIExpc3Qgb2YgYXR0cmlidXRlcyB0aGF0IHNob3VsZCBhbHdheXMgYmUgc2V0IHRocm91Z2ggdGhlIGF0dHIgbWV0aG9kLFxuICogYmVjYXVzZSB1cGRhdGluZyB0aGVtIHRocm91Z2ggdGhlIHByb3BlcnR5IHNldHRlciBkb2Vzbid0IHdvcmsgcmVsaWFibHkuXG4gKiBJbiB0aGUgZXhhbXBsZSBvZiBgd2lkdGhgL2BoZWlnaHRgLCB0aGUgcHJvYmxlbSBpcyB0aGF0IHR
41oZSBzZXR0ZXIgb25seVxuICogYWNjZXB0cyBudW1lcmljIHZhbHVlcywgYnV0IHRoZSBhdHRyaWJ1dGUgY2FuIGFsc28gYmUgc2V0IHRvIGEgc3RyaW5nIGxpa2UgYDUwJWAuXG4gKiBJZiB0aGlzIGxpc3QgYmVjb21lcyB0b28gYmlnLCByZXRoaW5rIHRoaXMgYXBwcm9hY2guXG4gKi9cbmNvbnN0IGFsd2F5c19zZXRfdGhyb3VnaF9zZXRfYXR0cmlidXRlID0gWyd3aWR0aCcsICdoZWlnaHQnXTtcblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnQgJiBFbGVtZW50Q1NTSW5saW5lU3R5bGV9IG5vZGVcbiAqIEBwYXJhbSB7eyBbeDogc3RyaW5nXTogc3RyaW5nIH19IGF0dHJpYnV0ZXNcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0X2F0dHJpYnV0ZXMobm9kZSwgYXR0cmlidXRlcykge1xuXHQvLyBAdHMtaWdub3JlXG5cdGNvbnN0IGRlc2NyaXB0b3JzID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobm9kZS5fX3Byb3RvX18pO1xuXHRmb3IgKGNvbnN0IGtleSBpbiBhdHRyaWJ1dGVzKSB7XG5cdFx0aWYgKGF0dHJpYnV0ZXNba2V5XSA9PSBudWxsKSB7XG5cdFx0XHRub2RlLnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuXHRcdH0gZWxzZSBpZiAoa2V5ID09PSAnc3R5bGUnKSB7XG5cdFx0XHRub2RlLnN0eWxlLmNzc1RleHQgPSBhdHRyaWJ1dGVzW2tleV07XG5cdFx0fSBlbHNlIGlmIChrZXkgPT09ICdfX3ZhbHVlJykge1xuXHRcdFx0LyoqIEB0eXBlIHthbnl9ICovIChub2RlKS52YWx1ZSA9IG5vZGVba2V5XSA9IGF0dHJpYnV0ZXNba2V5XTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0ZGVzY3JpcHRvcnNba2V5XSAmJlxuXHRcdFx0ZGVzY3JpcHRvcnNba2V5XS5zZXQgJiZcblx0XHRcdGFsd2F5c19zZXRfdGhyb3VnaF9zZXRfYXR0cmlidXRlLmluZGV4T2Yoa2V5KSA9PT0gLTFcblx0XHQpIHtcblx0XHRcdG5vZGVba2V5XSA9IGF0dHJpYnV0ZXNba2V5XTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YXR0cihub2RlLCBrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtFbGVtZW50ICYgRWxlbWVudENTU0lubGluZVN0eWxlfSBub2RlXG4gKiBAcGFyYW0ge3sgW3g6IHN0cmluZ106IHN0cmluZyB9fSBhdHRyaWJ1dGVzXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldF9zdmdfYXR0cmlidXRlcyhub2RlLCBhdHRyaWJ1dGVzKSB7XG5cdGZvciAoY29uc3Qga2V5IGluIGF0dHJpYnV0ZXMpIHtcblx0XHRhdHRyKG5vZGUsIGtleSwgYXR0cmlidXRlc1trZXldKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IGRhdGFfbWFwXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldF9jdXN0b21fZWxlbWVudF9kYXRhX21hcChub2RlLCBkYXRhX21hcCkge1xuXHRPYmplY3Qua2V5cyhkYXRhX21hcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0c2V0X2N1c3RvbV9lbGVtZW50X2RhdGEobm9kZSwga2V5LCBkYXRhX21hcFtrZXldKTtcblx0fSk7XG59XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gc2V0X2N1c3RvbV9lbGVtZW50X2RhdGEobm9kZSwgcHJvcCwgdmFsdWUpIHtcblx0Y29uc3QgbG93ZXIgPSBwcm9wLnRvTG93ZXJDYXNlKCk7IC8vIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5nIGJlaGF2aW9yIHdlIGRvIGxvd2VyY2FzZSBmaXJzdFxuXHRpZiAobG93ZXIgaW4gbm9kZSkge1xuXHRcdG5vZGVbbG93ZXJdID0gdHlwZW9mIG5vZGVbbG93ZXJdID09PSAnYm9vbGVhbicgJiYgdmFsdWUgPT09ICcnID8gdHJ1ZSA6IHZhbHVlO1xuXHR9IGVsc2UgaWYgKHByb3AgaW4gbm9kZSkge1xuXHRcdG5vZGVbcHJvcF0gPSB0eXBlb2Ygbm9kZVtwcm9wXSA9PT0gJ2Jvb2xlYW4nICYmIHZhbHVlID09PSAnJyA/IHRydWUgOiB2YWx1ZTtcblx0fSBlbHNlIHtcblx0XHRhdHRyKG5vZGUsIHByb3AsIHZhbHVlKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldF9keW5hbWljX2VsZW1lbnRfZGF0YSh0YWcpIHtcblx0cmV0dXJuIC8tLy50ZXN0KHRhZykgPyBzZXRfY3VzdG9tX2VsZW1lbnRfZGF0YV9tYXAgOiBzZXRfYXR0cmlidXRlcztcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHhsaW5rX2F0dHIobm9kZSwgYXR0cmlidXRlLCB2YWx1ZSkge1xuXHRub2RlLnNldEF0dHJpYnV0ZU5TKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJywgYXR0cmlidXRlLCB2YWx1ZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbm9kZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldF9zdmVsdGVfZGF0YXNldChub2RlKSB7XG5cdHJldHVybiBub2RlLmRhdGFzZXQuc3ZlbHRlSDtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7dW5rbm93bltdfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldF9iaW5kaW5nX2dyb3VwX3ZhbHVlKGdyb3VwLCBfX3ZhbHVlLCBjaGVja2VkKSB7XG5cdGNvbnN0IHZhbHVlID0gbmV3IFNldCgpO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0aWYgKGdyb3VwW2ldLmNoZWNrZWQpIHZhbHVlLmFkZChncm91cFtpXS5fX3ZhbHVlKTtcblx0fVxuXHRpZiAoIWNoZWNrZWQpIHtcblx0XHR2YWx1ZS
415kZWxldGUoX192YWx1ZSk7XG5cdH1cblx0cmV0dXJuIEFycmF5LmZyb20odmFsdWUpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7SFRNTElucHV0RWxlbWVudFtdfSBncm91cFxuICogQHJldHVybnMge3sgcCguLi5pbnB1dHM6IEhUTUxJbnB1dEVsZW1lbnRbXSk6IHZvaWQ7IHIoKTogdm9pZDsgfX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRfYmluZGluZ19ncm91cChncm91cCkge1xuXHQvKipcblx0ICogQHR5cGUge0hUTUxJbnB1dEVsZW1lbnRbXX0gKi9cblx0bGV0IF9pbnB1dHM7XG5cdHJldHVybiB7XG5cdFx0LyogcHVzaCAqLyBwKC4uLmlucHV0cykge1xuXHRcdFx0X2lucHV0cyA9IGlucHV0cztcblx0XHRcdF9pbnB1dHMuZm9yRWFjaCgoaW5wdXQpID0+IGdyb3VwLnB1c2goaW5wdXQpKTtcblx0XHR9LFxuXHRcdC8qIHJlbW92ZSAqLyByKCkge1xuXHRcdFx0X2lucHV0cy5mb3JFYWNoKChpbnB1dCkgPT4gZ3JvdXAuc3BsaWNlKGdyb3VwLmluZGV4T2YoaW5wdXQpLCAxKSk7XG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyW119IGluZGV4ZXNcbiAqIEByZXR1cm5zIHt7IHUobmV3X2luZGV4ZXM6IG51bWJlcltdKTogdm9pZDsgcCguLi5pbnB1dHM6IEhUTUxJbnB1dEVsZW1lbnRbXSk6IHZvaWQ7IHI6ICgpID0+IHZvaWQ7IH19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0X2JpbmRpbmdfZ3JvdXBfZHluYW1pYyhncm91cCwgaW5kZXhlcykge1xuXHQvKipcblx0ICogQHR5cGUge0hUTUxJbnB1dEVsZW1lbnRbXX0gKi9cblx0bGV0IF9ncm91cCA9IGdldF9iaW5kaW5nX2dyb3VwKGdyb3VwKTtcblxuXHQvKipcblx0ICogQHR5cGUge0hUTUxJbnB1dEVsZW1lbnRbXX0gKi9cblx0bGV0IF9pbnB1dHM7XG5cblx0ZnVuY3Rpb24gZ2V0X2JpbmRpbmdfZ3JvdXAoZ3JvdXApIHtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGluZGV4ZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGdyb3VwID0gZ3JvdXBbaW5kZXhlc1tpXV0gPSBncm91cFtpbmRleGVzW2ldXSB8fCBbXTtcblx0XHR9XG5cdFx0cmV0dXJuIGdyb3VwO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfSAqL1xuXHRmdW5jdGlvbiBwdXNoKCkge1xuXHRcdF9pbnB1dHMuZm9yRWFjaCgoaW5wdXQpID0+IF9ncm91cC5wdXNoKGlucHV0KSk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3ZvaWR9ICovXG5cdGZ1bmN0aW9uIHJlbW92ZSgpIHtcblx0XHRfaW5wdXRzLmZvckVhY2goKGlucHV0KSA9PiBfZ3JvdXAuc3BsaWNlKF9ncm91cC5pbmRleE9mKGlucHV0KSwgMSkpO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0LyogdXBkYXRlICovIHUobmV3X2luZGV4ZXMpIHtcblx0XHRcdGluZGV4ZXMgPSBuZXdfaW5kZXhlcztcblx0XHRcdGNvbnN0IG5ld19ncm91cCA9IGdldF9iaW5kaW5nX2dyb3VwKGdyb3VwKTtcblx0XHRcdGlmIChuZXdfZ3JvdXAgIT09IF9ncm91cCkge1xuXHRcdFx0XHRyZW1vdmUoKTtcblx0XHRcdFx0X2dyb3VwID0gbmV3X2dyb3VwO1xuXHRcdFx0XHRwdXNoKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvKiBwdXNoICovIHAoLi4uaW5wdXRzKSB7XG5cdFx0XHRfaW5wdXRzID0gaW5wdXRzO1xuXHRcdFx0cHVzaCgpO1xuXHRcdH0sXG5cdFx0LyogcmVtb3ZlICovIHI6IHJlbW92ZVxuXHR9O1xufVxuXG4vKiogQHJldHVybnMge251bWJlcn0gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b19udW1iZXIodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlID09PSAnJyA/IG51bGwgOiArdmFsdWU7XG59XG5cbi8qKiBAcmV0dXJucyB7YW55W119ICovXG5leHBvcnQgZnVuY3Rpb24gdGltZV9yYW5nZXNfdG9fYXJyYXkocmFuZ2VzKSB7XG5cdGNvbnN0IGFycmF5ID0gW107XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0YXJyYXkucHVzaCh7IHN0YXJ0OiByYW5nZXMuc3RhcnQoaSksIGVuZDogcmFuZ2VzLmVuZChpKSB9KTtcblx0fVxuXHRyZXR1cm4gYXJyYXk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7Q2hpbGROb2RlW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZHJlbihlbGVtZW50KSB7XG5cdHJldHVybiBBcnJheS5mcm9tKGVsZW1lbnQuY2hpbGROb2Rlcyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtDaGlsZE5vZGVBcnJheX0gbm9kZXNcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBpbml0X2NsYWltX2luZm8obm9kZXMpIHtcblx0aWYgKG5vZGVzLmNsYWltX2luZm8gPT09IHVuZGVmaW5lZCkge1xuXHRcdG5vZGVzLmNsYWltX2luZm8gPSB7IGxhc3RfaW5kZXg6IDAsIHRvdGFsX2NsYWltZWQ6IDAgfTtcblx0fVxufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSB7Q2hpbGROb2RlRXh9IFJcbiAqIEBwYXJhbSB7Q2hpbGROb2RlQXJyYXl9IG5vZGVzXG4gKiBAcGFyYW0geyhub2RlOiBDaGlsZE5vZGVFeCkgPT4gbm9kZSBpcyBSfSBwcmVkaWNhdGVcbiAqIEBwYXJhbSB7KG5vZGU6IENoaWxkTm9kZUV4KSA9PiBDaGlsZE5vZGVFeCB8IHVuZGVmaW5lZH0gcHJvY2Vzc19ub2RlXG4gKiBAcGFyYW0geygpID0+IFJ9IGNyZWF0ZV9ub2RlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGRvbnRfdXBkYXRlX2xhc3RfaW5kZXhcbiAqIEByZXR1cm5zIHtSfVxuICovXG5mdW5jdGlvbiBjbGFpbV9ub2RlKG5vZGVzLCBwcmVkaWNhdGUsIHByb2Nlc3Nfbm9kZSwgY3JlYXRlX25vZGUsIGRvbnRfdXBkYXRlX2xhc3RfaW5kZXggPSBmYWxzZSkge1xuXHQvLyBUcnkgdG8gZmluZCBub2RlcyBpbiBhbiBvcmRlciBzdWNoIHRoYXQgd2UgbGVuZ3RoZW4gdGhlIGxvbmdlc3QgaW5jcmVhc2luZyBzdWJzZXF1ZW5jZVxuXHRpbml0X2NsYWltX2luZm8obm9kZXMpO1xuXHRjb25zdCByZXN1bHRfbm9kZSA9ICgoKSA9PiB7XG5cdFx0Ly8gV2UgZmlyc3QgdHJ5IHRvIGZpbmQgYW4gZWxlbWVudCBhZnRlciB0aGUgcHJldmlvdXMgb25lXG5cdFx0Zm9yIChsZXQgaSA9IG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBub2RlID0gbm9kZXNbaV07XG5cdFx0XHRpZiAocHJlZGljYXRlKG5vZGUpKSB7XG5cdFx0XHRcdGNvbnN0IHJlcGxhY2VtZW50ID0gcHJvY2Vzc19ub2RlKG5vZGUpO1xuXHRcdFx0XHRpZiAocmVwbGFjZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdG5vZGVzLnNwbGljZShpLCAxKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRub2Rlc1tpXSA9IHJlcGxhY2VtZW50O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICghZG9udF91cGRhdGVfbGFzdF9pbmRleCkge1xuXHRcdFx0XHRcdG5vZGVzLmNsYWltX2luZm8ubGFzdF9pbmRleCA9IG
41k7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG5vZGU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIE90aGVyd2lzZSwgd2UgdHJ5IHRvIGZpbmQgb25lIGJlZm9yZVxuXHRcdC8vIFdlIGl0ZXJhdGUgaW4gcmV2ZXJzZSBzbyB0aGF0IHdlIGRvbid0IGdvIHRvbyBmYXIgYmFja1xuXHRcdGZvciAobGV0IGkgPSBub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0Y29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xuXHRcdFx0aWYgKHByZWRpY2F0ZShub2RlKSkge1xuXHRcdFx0XHRjb25zdCByZXBsYWNlbWVudCA9IHByb2Nlc3Nfbm9kZShub2RlKTtcblx0XHRcdFx0aWYgKHJlcGxhY2VtZW50ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRub2Rlcy5zcGxpY2UoaSwgMSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bm9kZXNbaV0gPSByZXBsYWNlbWVudDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWRvbnRfdXBkYXRlX2xhc3RfaW5kZXgpIHtcblx0XHRcdFx0XHRub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXggPSBpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHJlcGxhY2VtZW50ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHQvLyBTaW5jZSB3ZSBzcGxpY2VkIGJlZm9yZSB0aGUgbGFzdF9pbmRleCwgd2UgZGVjcmVhc2UgaXRcblx0XHRcdFx0XHRub2Rlcy5jbGFpbV9pbmZvLmxhc3RfaW5kZXgtLTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbm9kZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gSWYgd2UgY2FuJ3QgZmluZCBhbnkgbWF0Y2hpbmcgbm9kZSwgd2UgY3JlYXRlIGEgbmV3IG9uZVxuXHRcdHJldHVybiBjcmVhdGVfbm9kZSgpO1xuXHR9KSgpO1xuXHRyZXN1bHRfbm9kZS5jbGFpbV9vcmRlciA9IG5vZGVzLmNsYWltX2luZm8udG90YWxfY2xhaW1lZDtcblx0bm9kZXMuY2xhaW1faW5mby50b3RhbF9jbGFpbWVkICs9IDE7XG5cdHJldHVybiByZXN1bHRfbm9kZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NoaWxkTm9kZUFycmF5fSBub2Rlc1xuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7eyBba2V5OiBzdHJpbmddOiBib29sZWFuIH19IGF0dHJpYnV0ZXNcbiAqIEBwYXJhbSB7KG5hbWU6IHN0cmluZykgPT4gRWxlbWVudCB8IFNWR0VsZW1lbnR9IGNyZWF0ZV9lbGVtZW50XG4gKiBAcmV0dXJucyB7RWxlbWVudCB8IFNWR0VsZW1lbnR9XG4gKi9cbmZ1bmN0aW9uIGNsYWltX2VsZW1lbnRfYmFzZShub2RlcywgbmFtZSwgYXR0cmlidXRlcywgY3JlYXRlX2VsZW1lbnQpIHtcblx0cmV0dXJuIGNsYWltX25vZGUoXG5cdFx0bm9kZXMsXG5cdFx0LyoqIEByZXR1cm5zIHtub2RlIGlzIEVsZW1lbnQgfCBTVkdFbGVtZW50fSAqL1xuXHRcdChub2RlKSA9PiBub2RlLm5vZGVOYW1lID09PSBuYW1lLFxuXHRcdC8qKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGUgKi9cblx0XHQobm9kZSkgPT4ge1xuXHRcdFx0Y29uc3QgcmVtb3ZlID0gW107XG5cdFx0XHRmb3IgKGxldCBqID0gMDsgaiA8IG5vZGUuYXR0cmlidXRlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRjb25zdCBhdHRyaWJ1dGUgPSBub2RlLmF0dHJpYnV0ZXNbal07XG5cdFx0XHRcdGlmICghYXR0cmlidXRlc1thdHRyaWJ1dGUubmFtZV0pIHtcblx0XHRcdFx0XHRyZW1vdmUucHVzaChhdHRyaWJ1dGUubmFtZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJlbW92ZS5mb3JFYWNoKCh2KSA9PiBub2RlLnJlbW92ZUF0dHJpYnV0ZSh2KSk7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH0sXG5cdFx0KCkgPT4gY3JlYXRlX2VsZW1lbnQobmFtZSlcblx0KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NoaWxkTm9kZUFycmF5fSBub2Rlc1xuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7eyBba2V5OiBzdHJpbmddOiBib29sZWFuIH19IGF0dHJpYnV0ZXNcbiAqIEByZXR1cm5zIHtFbGVtZW50IHwgU1ZHRWxlbWVudH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYWltX2VsZW1lbnQobm9kZXMsIG5hbWUsIGF0dHJpYnV0ZXMpIHtcblx0cmV0dXJuIGNsYWltX2VsZW1lbnRfYmFzZShub2RlcywgbmFtZSwgYXR0cmlidXRlcywgZWxlbWVudCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtDaGlsZE5vZGVBcnJheX0gbm9kZXNcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge3sgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9fSBhdHRyaWJ1dGVzXG4gKiBAcmV0dXJucyB7RWxlbWVudCB8IFNWR0VsZW1lbnR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFpbV9zdmdfZWxlbWVudChub2RlcywgbmFtZSwgYXR0cmlidXRlcykge1xuXHRyZXR1cm4gY2xhaW1fZWxlbWVudF9iYXNlKG5vZGVzLCBuYW1lLCBhdHRyaWJ1dGVzLCBzdmdfZWxlbWVudCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtDaGlsZE5vZGVBcnJheX0gbm9kZXNcbiAqIEByZXR1cm5zIHtUZXh0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhaW1fdGV4dChub2RlcywgZGF0YSkge1xuXHRyZXR1cm4gY2xhaW1fbm9kZShcblx0XHRub2Rlcyxcblx0XHQvKiogQHJldHVybnMge25vZGUgaXMgVGV4dH0gKi9cblx0XHQobm9kZSkgPT4gbm9kZS5ub2RlVHlwZSA9PT0gMyxcblx0XHQvKiogQHBhcmFtIHtUZXh0fSBub2RlICovXG5cdFx0KG5vZGUpID0+IHtcblx0XHRcdGNvbnN0IGRhdGFfc3RyID0gJycgKyBkYXRhO1xuXHRcdFx0aWYgKG5vZGUuZGF0YS5zdGFydHNXaXRoKGRhdGFfc3RyKSkge1xuXHRcdFx0XHRpZiAobm9kZS5kYXRhLmxlbmd0aCAhPT0gZGF0YV9zdHIubGVuZ3RoKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG5vZGUuc3BsaXRUZXh0KGRhdGFfc3RyLmxlbmd0aCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG5vZGUuZGF0YSA9IGRhdGFfc3RyO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0KCkgPT4gdGV4dChkYXRhKSxcblx0XHR0cnVlIC8vIFRleHQgbm9kZXMgc2hvdWxkIG5vdCB1cGRhdGUgbGFzdCBpbmRleCBzaW5jZSBpdCBpcyBsaWtlbHkgbm90IHdvcnRoIGl0IHRvIGVsaW1pbmF0ZSBhbiBpbmNyZWFzaW5nIHN1YnNlcXVlbmNlIG9mIGFjdHVhbCBlbGVtZW50c1xuXHQpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtUZXh0fSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYWltX3NwYWNlKG5vZGVzKSB7XG5cdHJldHVybi
41BjbGFpbV90ZXh0KG5vZGVzLCAnICcpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Q2hpbGROb2RlQXJyYXl9IG5vZGVzXG4gKiBAcmV0dXJucyB7Q29tbWVudH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYWltX2NvbW1lbnQobm9kZXMsIGRhdGEpIHtcblx0cmV0dXJuIGNsYWltX25vZGUoXG5cdFx0bm9kZXMsXG5cdFx0LyoqIEByZXR1cm5zIHtub2RlIGlzIENvbW1lbnR9ICovXG5cdFx0KG5vZGUpID0+IG5vZGUubm9kZVR5cGUgPT09IDgsXG5cdFx0LyoqIEBwYXJhbSB7Q29tbWVudH0gbm9kZSAqL1xuXHRcdChub2RlKSA9PiB7XG5cdFx0XHRub2RlLmRhdGEgPSAnJyArIGRhdGE7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH0sXG5cdFx0KCkgPT4gY29tbWVudChkYXRhKSxcblx0XHR0cnVlXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGdldF9jb21tZW50X2lkeChub2RlcywgdGV4dCwgc3RhcnQpIHtcblx0Zm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgbm9kZXMubGVuZ3RoOyBpICs9IDEpIHtcblx0XHRjb25zdCBub2RlID0gbm9kZXNbaV07XG5cdFx0aWYgKG5vZGUubm9kZVR5cGUgPT09IDggLyogY29tbWVudCBub2RlICovICYmIG5vZGUudGV4dENvbnRlbnQudHJpbSgpID09PSB0ZXh0KSB7XG5cdFx0XHRyZXR1cm4gaTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIC0xO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNfc3ZnXG4gKiBAcmV0dXJucyB7SHRtbFRhZ0h5ZHJhdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYWltX2h0bWxfdGFnKG5vZGVzLCBpc19zdmcpIHtcblx0Ly8gZmluZCBodG1sIG9wZW5pbmcgdGFnXG5cdGNvbnN0IHN0YXJ0X2luZGV4ID0gZ2V0X2NvbW1lbnRfaWR4KG5vZGVzLCAnSFRNTF9UQUdfU1RBUlQnLCAwKTtcblx0Y29uc3QgZW5kX2luZGV4ID0gZ2V0X2NvbW1lbnRfaWR4KG5vZGVzLCAnSFRNTF9UQUdfRU5EJywgc3RhcnRfaW5kZXggKyAxKTtcblx0aWYgKHN0YXJ0X2luZGV4ID09PSAtMSB8fCBlbmRfaW5kZXggPT09IC0xKSB7XG5cdFx0cmV0dXJuIG5ldyBIdG1sVGFnSHlkcmF0aW9uKGlzX3N2Zyk7XG5cdH1cblxuXHRpbml0X2NsYWltX2luZm8obm9kZXMpO1xuXHRjb25zdCBodG1sX3RhZ19ub2RlcyA9IG5vZGVzLnNwbGljZShzdGFydF9pbmRleCwgZW5kX2luZGV4IC0gc3RhcnRfaW5kZXggKyAxKTtcblx0ZGV0YWNoKGh0bWxfdGFnX25vZGVzWzBdKTtcblx0ZGV0YWNoKGh0bWxfdGFnX25vZGVzW2h0bWxfdGFnX25vZGVzLmxlbmd0aCAtIDFdKTtcblx0Y29uc3QgY2xhaW1lZF9ub2RlcyA9IGh0bWxfdGFnX25vZGVzLnNsaWNlKDEsIGh0bWxfdGFnX25vZGVzLmxlbmd0aCAtIDEpO1xuXHRpZiAoY2xhaW1lZF9ub2Rlcy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gbmV3IEh0bWxUYWdIeWRyYXRpb24oaXNfc3ZnKTtcblx0fVxuXHRmb3IgKGNvbnN0IG4gb2YgY2xhaW1lZF9ub2Rlcykge1xuXHRcdG4uY2xhaW1fb3JkZXIgPSBub2Rlcy5jbGFpbV9pbmZvLnRvdGFsX2NsYWltZWQ7XG5cdFx0bm9kZXMuY2xhaW1faW5mby50b3RhbF9jbGFpbWVkICs9IDE7XG5cdH1cblx0cmV0dXJuIG5ldyBIdG1sVGFnSHlkcmF0aW9uKGlzX3N2ZywgY2xhaW1lZF9ub2Rlcyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtUZXh0fSB0ZXh0XG4gKiBAcGFyYW0ge3Vua25vd259IGRhdGFcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0X2RhdGEodGV4dCwgZGF0YSkge1xuXHRkYXRhID0gJycgKyBkYXRhO1xuXHRpZiAodGV4dC5kYXRhID09PSBkYXRhKSByZXR1cm47XG5cdHRleHQuZGF0YSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZGF0YSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtUZXh0fSB0ZXh0XG4gKiBAcGFyYW0ge3Vua25vd259IGRhdGFcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0X2RhdGFfY29udGVudGVkaXRhYmxlKHRleHQsIGRhdGEpIHtcblx0ZGF0YSA9ICcnICsgZGF0YTtcblx0aWYgKHRleHQud2hvbGVUZXh0ID09PSBkYXRhKSByZXR1cm47XG5cdHRleHQuZGF0YSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZGF0YSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtUZXh0fSB0ZXh0XG4gKiBAcGFyYW0ge3Vua25vd259IGRhdGFcbiAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyX3ZhbHVlXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldF9kYXRhX21heWJlX2NvbnRlbnRlZGl0YWJsZSh0ZXh0LCBkYXRhLCBhdHRyX3ZhbHVlKSB7XG5cdGlmICh+Y29udGVudGVkaXRhYmxlX3RydXRoeV92YWx1ZXMuaW5kZXhPZihhdHRyX3ZhbHVlKSkge1xuXHRcdHNldF9kYXRhX2NvbnRlbnRlZGl0YWJsZSh0ZXh0LCBkYXRhKTtcblx0fSBlbHNlIHtcblx0XHRzZXRfZGF0YSh0ZXh0LCBkYXRhKTtcblx0fVxufVxuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldF9pbnB1dF92YWx1ZShpbnB1dCwgdmFsdWUpIHtcblx0aW5wdXQudmFsdWUgPSB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRfaW5wdXRfdHlwZShpbnB1dCwgdHlwZSkge1xuXHR0cnkge1xuXHRcdGlucHV0LnR5cGUgPSB0eXBlO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gZG8gbm90aGluZ1xuXHR9XG59XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gc2V0X3N0eWxlKG5vZGUsIGtleSwgdmFsdWUsIGltcG9ydGFudCkge1xuXHRpZiAodmFsdWUgPT0gbnVsbCkge1xuXHRcdG5vZGUuc3R5bGUucmVtb3ZlUHJvcGVydHkoa2V5KTtcblx0fSBlbHNlIHtcblx0XHRub2RlLnN0eWxlLnNldFByb3BlcnR5KGtleSwgdmFsdWUsIGltcG9ydGFudCA/ICdpbXBvcnRhbnQnIDogJycpO1xuXHR9XG59XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0X29wdGlvbihzZWxlY3QsIHZhbHVlLCBtb3VudGluZykge1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0Y29uc3Qgb3B0aW9uID0gc2VsZWN0Lm9wdGlvbnNbaV07XG5cdFx0aWYgKG9wdGlvbi5f
41X3ZhbHVlID09PSB2YWx1ZSkge1xuXHRcdFx0b3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdH1cblx0aWYgKCFtb3VudGluZyB8fCB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0c2VsZWN0LnNlbGVjdGVkSW5kZXggPSAtMTsgLy8gbm8gb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZFxuXHR9XG59XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0X29wdGlvbnMoc2VsZWN0LCB2YWx1ZSkge1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IHNlbGVjdC5vcHRpb25zLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0Y29uc3Qgb3B0aW9uID0gc2VsZWN0Lm9wdGlvbnNbaV07XG5cdFx0b3B0aW9uLnNlbGVjdGVkID0gfnZhbHVlLmluZGV4T2Yob3B0aW9uLl9fdmFsdWUpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RfdmFsdWUoc2VsZWN0KSB7XG5cdGNvbnN0IHNlbGVjdGVkX29wdGlvbiA9IHNlbGVjdC5xdWVyeVNlbGVjdG9yKCc6Y2hlY2tlZCcpO1xuXHRyZXR1cm4gc2VsZWN0ZWRfb3B0aW9uICYmIHNlbGVjdGVkX29wdGlvbi5fX3ZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0X211bHRpcGxlX3ZhbHVlKHNlbGVjdCkge1xuXHRyZXR1cm4gW10ubWFwLmNhbGwoc2VsZWN0LnF1ZXJ5U2VsZWN0b3JBbGwoJzpjaGVja2VkJyksIChvcHRpb24pID0+IG9wdGlvbi5fX3ZhbHVlKTtcbn1cbi8vIHVuZm9ydHVuYXRlbHkgdGhpcyBjYW4ndCBiZSBhIGNvbnN0YW50IGFzIHRoYXQgd291bGRuJ3QgYmUgdHJlZS1zaGFrZWFibGVcbi8vIHNvIHdlIGNhY2hlIHRoZSByZXN1bHQgaW5zdGVhZFxuXG4vKipcbiAqIEB0eXBlIHtib29sZWFufSAqL1xubGV0IGNyb3Nzb3JpZ2luO1xuXG4vKipcbiAqIEByZXR1cm5zIHtib29sZWFufSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzX2Nyb3Nzb3JpZ2luKCkge1xuXHRpZiAoY3Jvc3NvcmlnaW4gPT09IHVuZGVmaW5lZCkge1xuXHRcdGNyb3Nzb3JpZ2luID0gZmFsc2U7XG5cdFx0dHJ5IHtcblx0XHRcdGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cucGFyZW50KSB7XG5cdFx0XHRcdHZvaWQgd2luZG93LnBhcmVudC5kb2N1bWVudDtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y3Jvc3NvcmlnaW4gPSB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gY3Jvc3NvcmlnaW47XG59XG5cbi8qKlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gbm9kZVxuICogQHBhcmFtIHsoKSA9PiB2b2lkfSBmblxuICogQHJldHVybnMgeygpID0+IHZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRfaWZyYW1lX3Jlc2l6ZV9saXN0ZW5lcihub2RlLCBmbikge1xuXHRjb25zdCBjb21wdXRlZF9zdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG5cdGlmIChjb21wdXRlZF9zdHlsZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcblx0XHRub2RlLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcblx0fVxuXHRjb25zdCBpZnJhbWUgPSBlbGVtZW50KCdpZnJhbWUnKTtcblx0aWZyYW1lLnNldEF0dHJpYnV0ZShcblx0XHQnc3R5bGUnLFxuXHRcdCdkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7ICcgK1xuXHRcdFx0J292ZXJmbG93OiBoaWRkZW47IGJvcmRlcjogMDsgb3BhY2l0eTogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IC0xOydcblx0KTtcblx0aWZyYW1lLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuXHRpZnJhbWUudGFiSW5kZXggPSAtMTtcblx0Y29uc3QgY3Jvc3NvcmlnaW4gPSBpc19jcm9zc29yaWdpbigpO1xuXG5cdC8qKlxuXHQgKiBAdHlwZSB7KCkgPT4gdm9pZH1cblx0ICovXG5cdGxldCB1bnN1YnNjcmliZTtcblx0aWYgKGNyb3Nzb3JpZ2luKSB7XG5cdFx0aWZyYW1lLnNyYyA9IFwiZGF0YTp0ZXh0L2h0bWwsPHNjcmlwdD5vbnJlc2l6ZT1mdW5jdGlvbigpe3BhcmVudC5wb3N0TWVzc2FnZSgwLCcqJyl9PC9zY3JpcHQ+XCI7XG5cdFx0dW5zdWJzY3JpYmUgPSBsaXN0ZW4oXG5cdFx0XHR3aW5kb3csXG5cdFx0XHQnbWVzc2FnZScsXG5cdFx0XHQvKiogQHBhcmFtIHtNZXNzYWdlRXZlbnR9IGV2ZW50ICovIChldmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZXZlbnQuc291cmNlID09PSBpZnJhbWUuY29udGVudFdpbmRvdykgZm4oKTtcblx0XHRcdH1cblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdGlmcmFtZS5zcmMgPSAnYWJvdXQ6YmxhbmsnO1xuXHRcdGlmcmFtZS5vbmxvYWQgPSAoKSA9PiB7XG5cdFx0XHR1bnN1YnNjcmliZSA9IGxpc3RlbihpZnJhbWUuY29udGVudFdpbmRvdywgJ3Jlc2l6ZScsIGZuKTtcblx0XHRcdC8vIG1ha2Ugc3VyZSBhbiBpbml0aWFsIHJlc2l6ZSBldmVudCBpcyBmaXJlZCBfYWZ0ZXJfIHRoZSBpZnJhbWUgaXMgbG9hZGVkICh3aGljaCBpcyBhc3luY2hyb25vdXMpXG5cdFx0XHQvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3N2ZWx0ZWpzL3N2ZWx0ZS9pc3N1ZXMvNDIzM1xuXHRcdFx0Zm4oKTtcblx0XHR9O1xuXHR9XG5cdGFwcGVuZChub2RlLCBpZnJhbWUpO1xuXHRyZXR1cm4gKCkgPT4ge1xuXHRcdGlmIChjcm9zc29yaWdpbikge1xuXHRcdFx0dW5zdWJzY3JpYmUoKTtcblx0XHR9IGVsc2UgaWYgKHVuc3Vic2NyaWJlICYmIGlmcmFtZS5jb250ZW50V2luZG93KSB7XG5cdFx0XHR1bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0XHRkZXRhY2goaWZyYW1lKTtcblx0fTtcbn1cbmV4cG9ydCBjb25zdCByZXNpemVfb2JzZXJ2ZXJfY29udGVudF9ib3ggPSAvKiBAX19QVVJFX18gKi8gbmV3IFJlc2l6ZU9ic2VydmVyU2luZ2xldG9uKHtcblx0Ym94OiAnY29udGVudC1ib3gnXG59KTtcbmV4cG9ydCBjb25zdCByZXNpemVfb2JzZXJ2ZXJfYm9yZGVyX2JveCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgUmVzaXplT2JzZXJ2ZXJTaW5nbGV0b24oe1xuXHRib3g6ICdib3JkZXItYm94J1xufSk7XG5leHBvcnQgY29uc3QgcmVzaXplX29ic2VydmVyX2RldmljZV9waXhlbF9jb250ZW50X2JveCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgUmVzaXplT2JzZXJ2ZXJTaW5nbGV0b24oXG5cdHsgYm94OiAnZGV2aWNlLXBpeGVsLWNvbnRlbnQtYm94JyB9XG4pO
411xuZXhwb3J0IHsgUmVzaXplT2JzZXJ2ZXJTaW5nbGV0b24gfTtcblxuLyoqXG4gKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2dnbGVfY2xhc3MoZWxlbWVudCwgbmFtZSwgdG9nZ2xlKSB7XG5cdC8vIFRoZSBgISFgIGlzIHJlcXVpcmVkIGJlY2F1c2UgYW4gYHVuZGVmaW5lZGAgZmxhZyBtZWFucyBmbGlwcGluZyB0aGUgY3VycmVudCBzdGF0ZS5cblx0ZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKG5hbWUsICEhdG9nZ2xlKTtcbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEBwYXJhbSB7VH0gW2RldGFpbF1cbiAqIEBwYXJhbSB7eyBidWJibGVzPzogYm9vbGVhbiwgY2FuY2VsYWJsZT86IGJvb2xlYW4gfX0gW29wdGlvbnNdXG4gKiBAcmV0dXJucyB7Q3VzdG9tRXZlbnQ8VD59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjdXN0b21fZXZlbnQodHlwZSwgZGV0YWlsLCB7IGJ1YmJsZXMgPSBmYWxzZSwgY2FuY2VsYWJsZSA9IGZhbHNlIH0gPSB7fSkge1xuXHRyZXR1cm4gbmV3IEN1c3RvbUV2ZW50KHR5cGUsIHsgZGV0YWlsLCBidWJibGVzLCBjYW5jZWxhYmxlIH0pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvclxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gcGFyZW50XG4gKiBAcmV0dXJucyB7Q2hpbGROb2RlQXJyYXl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeV9zZWxlY3Rvcl9hbGwoc2VsZWN0b3IsIHBhcmVudCA9IGRvY3VtZW50LmJvZHkpIHtcblx0cmV0dXJuIEFycmF5LmZyb20ocGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbm9kZUlkXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBoZWFkXG4gKiBAcmV0dXJucyB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoZWFkX3NlbGVjdG9yKG5vZGVJZCwgaGVhZCkge1xuXHRjb25zdCByZXN1bHQgPSBbXTtcblx0bGV0IHN0YXJ0ZWQgPSAwO1xuXHRmb3IgKGNvbnN0IG5vZGUgb2YgaGVhZC5jaGlsZE5vZGVzKSB7XG5cdFx0aWYgKG5vZGUubm9kZVR5cGUgPT09IDggLyogY29tbWVudCBub2RlICovKSB7XG5cdFx0XHRjb25zdCBjb21tZW50ID0gbm9kZS50ZXh0Q29udGVudC50cmltKCk7XG5cdFx0XHRpZiAoY29tbWVudCA9PT0gYEhFQURfJHtub2RlSWR9X0VORGApIHtcblx0XHRcdFx0c3RhcnRlZCAtPSAxO1xuXHRcdFx0XHRyZXN1bHQucHVzaChub2RlKTtcblx0XHRcdH0gZWxzZSBpZiAoY29tbWVudCA9PT0gYEhFQURfJHtub2RlSWR9X1NUQVJUYCkge1xuXHRcdFx0XHRzdGFydGVkICs9IDE7XG5cdFx0XHRcdHJlc3VsdC5wdXNoKG5vZGUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoc3RhcnRlZCA+IDApIHtcblx0XHRcdHJlc3VsdC5wdXNoKG5vZGUpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuLyoqICovXG5leHBvcnQgY2xhc3MgSHRtbFRhZyB7XG5cdC8qKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAZGVmYXVsdCBmYWxzZVxuXHQgKi9cblx0aXNfc3ZnID0gZmFsc2U7XG5cdC8qKiBwYXJlbnQgZm9yIGNyZWF0aW5nIG5vZGUgKi9cblx0ZSA9IHVuZGVmaW5lZDtcblx0LyoqIGh0bWwgdGFnIG5vZGVzICovXG5cdG4gPSB1bmRlZmluZWQ7XG5cdC8qKiB0YXJnZXQgKi9cblx0dCA9IHVuZGVmaW5lZDtcblx0LyoqIGFuY2hvciAqL1xuXHRhID0gdW5kZWZpbmVkO1xuXHRjb25zdHJ1Y3Rvcihpc19zdmcgPSBmYWxzZSkge1xuXHRcdHRoaXMuaXNfc3ZnID0gaXNfc3ZnO1xuXHRcdHRoaXMuZSA9IHRoaXMubiA9IG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IGh0bWxcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRjKGh0bWwpIHtcblx0XHR0aGlzLmgoaHRtbCk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IGh0bWxcblx0ICogQHBhcmFtIHtIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnR9IHRhcmdldFxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50IHwgU1ZHRWxlbWVudH0gYW5jaG9yXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0bShodG1sLCB0YXJnZXQsIGFuY2hvciA9IG51bGwpIHtcblx0XHRpZiAoIXRoaXMuZSkge1xuXHRcdFx0aWYgKHRoaXMuaXNfc3ZnKVxuXHRcdFx0XHR0aGlzLmUgPSBzdmdfZWxlbWVudCgvKiogQHR5cGUge2tleW9mIFNWR0VsZW1lbnRUYWdOYW1lTWFwfSAqLyAodGFyZ2V0Lm5vZGVOYW1lKSk7XG5cdFx0XHQvKiogIzczNjQgIHRhcmdldCBmb3IgPHRlbXBsYXRlPiBtYXkgYmUgcHJvdmlkZWQgYXMgI2RvY3VtZW50LWZyYWdtZW50KDExKSAqLyBlbHNlXG5cdFx0XHRcdHRoaXMuZSA9IGVsZW1lbnQoXG5cdFx0XHRcdFx0LyoqIEB0eXBlIHtrZXlvZiBIVE1MRWxlbWVudFRhZ05hbWVNYXB9ICovIChcblx0XHRcdFx0XHRcdHRhcmdldC5ub2RlVHlwZSA9PT0gMTEgPyAnVEVNUExBVEUnIDogdGFyZ2V0Lm5vZGVOYW1lXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0dGhpcy50ID1cblx0XHRcdFx0dGFyZ2V0LnRhZ05hbWUgIT09ICdURU1QTEFURSdcblx0XHRcdFx0XHQ/IHRhcmdldFxuXHRcdFx0XHRcdDogLyoqIEB0eXBlIHtIVE1MVGVtcGxhdGVFbGVtZW50fSAqLyAodGFyZ2V0KS5jb250ZW50O1xuXHRcdFx0dGhpcy5jKGh0bWwpO1xuXHRcdH1cblx0XHR0aGlzLmkoYW5jaG9yKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaHRtbFxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdGgoaHRtbCkge1xuXHRcdHRoaXMuZS5pbm5lckhUTUwgPSBodG1sO1xuXHRcdHRoaXMubiA9IEFycmF5LmZyb20oXG5cdFx0XHR0aGlzLmUubm9kZU5hbWUgPT09ICdURU1QTEFURScgPyB0aGlzLmUuY29udGVudC5jaGlsZE5vZGVzIDogdGhpcy5lLmNoaWxkTm9kZXNcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfSAqL1xuXHRpKGFuY2hvcikge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0XHRpbnNlcnQodGhpcy50LCB0aGlzLm5baV0sIGFuY2hvcik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBodG1sXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0cChodG1sKSB7XG5cdFx0dGhpcy5kKCk7XG5cdFx0dGhpcy5oKGh0bWwpO1xuXHRcdHRoaXMuaSh0aGlzLmEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfSAqL1xuXHRkKCkge1xuXHRcdHRoaXMubi5mb3JFYWNoKGRldGFjaCk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIEh0bWxUYWdIeWRyYXRpb24gZXh0ZW5kcyBIdG1sVGFnIHtcblx0LyoqIEB0eXBlIHtFbGVtZW50W119IGh5ZHJhdGlvbiBjbGFpbWVkIG5vZGVzICovXG5cdGwgPSB1bmRlZmluZWQ7XG5cblx0Y29uc3RydWN0b3IoaXNfc3ZnID0gZmFsc2UsIGNsYWltZWRfbm9kZXMpIHtcblx0XHRzdXBlcihpc19zdmcpO1xuXHRcdHRoaXMuZSA9IHRoaXMubiA9IG51bGw7XG5cdFx0dGhpcy5sID0gY2xhaW1lZF9ub2Rlcztcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaHRtbFxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdGMoaHRtbCkge1xuXHRcdGlmICh0aGlzLmwpIHtcblx0XHRcdHRoaXMubiA9IHRoaXMubDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c3VwZXIuYyhodG1sKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3ZvaWR9ICovXG5cdGkoYW5jaG9yKSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm4ubGVuZ3RoOyBpICs9IDEpIHtcblx0XHRcdGluc2VydF9oeWRyYXRpb24odGhpcy50LCB0aGlzLm5baV0sIGFuY2hvcik7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtOYW1lZE5vZGVNYXB9IGF0dHJpYnV0ZXNcbiAqIEByZXR1cm5zIHt7fX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF0dHJpYnV0ZV90b19vYmplY3QoYXR0cmlidXRlcykge1xuXHRjb25zdCByZXN1bHQgPSB7fTtcblx0Zm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuXHRcdHJlc3VsdFthdHRyaWJ1dGUubmFtZV0gPSBhdHRyaWJ1dGUudmFsdWU7XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuY29uc3QgZXNjYXBlZCA9IHtcblx0J1wiJzogJyZxdW90OycsXG5cdCcmJzogJyZhbXA7Jyxcblx0JzwnOiAnJmx0Oydcbn07XG5cbmNvbnN0IHJlZ2V4X2F0dHJpYnV0ZV9jaGFyYWN0ZXJzX3RvX2VzY2FwZSA9IC9bXCImPF0vZztcblxuLyoqXG4gKiBOb3RlIHRoYXQgdGhlIGF0dHJpYnV0ZSBpdHNlbGYgc2hvdWxkIGJlIHN1cnJvdW5kZWQgaW4gZG91YmxlIHF1b3Rlc1xuICogQHBhcmFtIHthbnl9IGF0dHJpYnV0ZVxuICovXG5mdW5jdGlvbiBlc2NhcGVfY
41XR0cmlidXRlKGF0dHJpYnV0ZSkge1xuXHRyZXR1cm4gU3RyaW5nKGF0dHJpYnV0ZSkucmVwbGFjZShyZWdleF9hdHRyaWJ1dGVfY2hhcmFjdGVyc190b19lc2NhcGUsIChtYXRjaCkgPT4gZXNjYXBlZFttYXRjaF0pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nPn0gYXR0cmlidXRlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5X3NwcmVhZChhdHRyaWJ1dGVzKSB7XG5cdGxldCBzdHIgPSAnICc7XG5cdGZvciAoY29uc3Qga2V5IGluIGF0dHJpYnV0ZXMpIHtcblx0XHRpZiAoYXR0cmlidXRlc1trZXldICE9IG51bGwpIHtcblx0XHRcdHN0ciArPSBgJHtrZXl9PVwiJHtlc2NhcGVfYXR0cmlidXRlKGF0dHJpYnV0ZXNba2V5XSl9XCIgYDtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gc3RyO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsZW1lbnRcbiAqIEByZXR1cm5zIHt7fX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldF9jdXN0b21fZWxlbWVudHNfc2xvdHMoZWxlbWVudCkge1xuXHRjb25zdCByZXN1bHQgPSB7fTtcblx0ZWxlbWVudC5jaGlsZE5vZGVzLmZvckVhY2goXG5cdFx0LyoqIEBwYXJhbSB7RWxlbWVudH0gbm9kZSAqLyAobm9kZSkgPT4ge1xuXHRcdFx0cmVzdWx0W25vZGUuc2xvdCB8fCAnZGVmYXVsdCddID0gdHJ1ZTtcblx0XHR9XG5cdCk7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3Rfc3ZlbHRlX2NvbXBvbmVudChjb21wb25lbnQsIHByb3BzKSB7XG5cdHJldHVybiBuZXcgY29tcG9uZW50KHByb3BzKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7Tm9kZSAmIHtcbiAqIFx0Y2xhaW1fb3JkZXI/OiBudW1iZXI7XG4gKiBcdGh5ZHJhdGVfaW5pdD86IHRydWU7XG4gKiBcdGFjdHVhbF9lbmRfY2hpbGQ/OiBOb2RlRXg7XG4gKiBcdGNoaWxkTm9kZXM6IE5vZGVMaXN0T2Y8Tm9kZUV4PjtcbiAqIH19IE5vZGVFeFxuICovXG5cbi8qKiBAdHlwZWRlZiB7Q2hpbGROb2RlICYgTm9kZUV4fSBDaGlsZE5vZGVFeCAqL1xuXG4vKiogQHR5cGVkZWYge05vZGVFeCAmIHsgY2xhaW1fb3JkZXI6IG51bWJlciB9fSBOb2RlRXgyICovXG5cbi8qKlxuICogQHR5cGVkZWYge0NoaWxkTm9kZUV4W10gJiB7XG4gKiBcdGNsYWltX2luZm8/OiB7XG4gKiBcdFx0bGFzdF9pbmRleDogbnVtYmVyO1xuICogXHRcdHRvdGFsX2NsYWltZWQ6IG51bWJlcjtcbiAqIFx0fTtcbiAqIH19IENoaWxkTm9kZUFycmF5XG4gKi9cbiIsImltcG9ydCB7IGFwcGVuZF9lbXB0eV9zdHlsZXNoZWV0LCBkZXRhY2gsIGdldF9yb290X2Zvcl9zdHlsZSB9IGZyb20gJy4vZG9tLmpzJztcbmltcG9ydCB7IHJhZiB9IGZyb20gJy4vZW52aXJvbm1lbnQuanMnO1xuXG4vLyB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiBmb3IgbXVsdGlwbGUgZG9jdW1lbnRzIGJlY2F1c2UgYSBTdmVsdGUgYXBwbGljYXRpb24gY291bGQgYWxzbyBjb250YWluIGlmcmFtZXNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdmVsdGVqcy9zdmVsdGUvaXNzdWVzLzM2MjRcbi8qKiBAdHlwZSB7TWFwPERvY3VtZW50IHwgU2hhZG93Um9vdCwgaW1wb3J0KCcuL3ByaXZhdGUuZC50cycpLlN0eWxlSW5mb3JtYXRpb24+fSAqL1xuY29uc3QgbWFuYWdlZF9zdHlsZXMgPSBuZXcgTWFwKCk7XG5cbmxldCBhY3RpdmUgPSAwO1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZGFya3NreWFwcC9zdHJpbmctaGFzaC9ibG9iL21hc3Rlci9pbmRleC5qc1xuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBoYXNoKHN0cikge1xuXHRsZXQgaGFzaCA9IDUzODE7XG5cdGxldCBpID0gc3RyLmxlbmd0aDtcblx0d2hpbGUgKGktLSkgaGFzaCA9ICgoaGFzaCA8PCA1KSAtIGhhc2gpIF4gc3RyLmNoYXJDb2RlQXQoaSk7XG5cdHJldHVybiBoYXNoID4+PiAwO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RG9jdW1lbnQgfCBTaGFkb3dSb290fSBkb2NcbiAqIEBwYXJhbSB7RWxlbWVudCAmIEVsZW1lbnRDU1NJbmxpbmVTdHlsZX0gbm9kZVxuICogQHJldHVybnMge3sgc3R5bGVzaGVldDogYW55OyBydWxlczoge307IH19XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZV9zdHlsZV9pbmZvcm1hdGlvbihkb2MsIG5vZGUpIHtcblx0Y29uc3QgaW5mbyA9IHsgc3R5bGVzaGVldDogYXBwZW5kX2VtcHR5X3N0eWxlc2hlZXQobm9kZSksIHJ1bGVzOiB7fSB9O1xuXHRtYW5hZ2VkX3N0eWxlcy5zZXQoZG9jLCBpbmZvKTtcblx0cmV0dXJuIGluZm87XG59XG5cbi8qKlxuICogQHBhcmFtIHtFbGVtZW50ICYgRWxlbWVudENTU0lubGluZVN0eWxlfSBub2RlXG4gKiBAcGFyYW0ge251bWJlcn0gYVxuICogQHBhcmFtIHtudW1iZXJ9IGJcbiAqIEBwYXJhbSB7bnVtYmVyfSBkdXJhdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IGRlbGF5XG4gKiBAcGFyYW0geyh0OiBudW1iZXIpID0+IG51bWJlcn0gZWFzZVxuICogQHBhcmFtIHsodDogbnVtYmVyLCB1OiBudW1iZXIpID0+IHN0cmluZ30gZm5cbiAqIEBwYXJhbSB7bnVtYmVyfSB1aWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVfcnVsZShub2RlLCBhLCBiLCBkdXJhdGlvbiwgZGVsYXksIGVhc2UsIGZuLCB1aWQgPSAwKSB7XG5cdGNvbnN0IHN0ZXAgPSAxNi42NjYgLyBkdXJhdGlvbjtcblx0bGV0IGtleWZyYW1lcyA9ICd7XFxuJztcblx0Zm9yIChsZXQgcCA9IDA7IHAgPD0gMTsgcCArPSBzdGVwKSB7XG5cdFx0Y29uc3QgdCA9IGEgKyAoYiAtIGEpICogZWFzZShwKTtcblx0XHRrZXlmcmFtZXMgKz0gcCAqIDEwMCArIGAleyR7Zm4odCwgMSAtIHQpfX1cXG5gO1xuXHR9XG5cdGNvbnN0IHJ1bGUgPSBrZXlmcmFtZXMgKyBgMTAwJSB7JHtmbihiLCAxIC0gYil9fVxcbn1gO1xuXHRjb25zdCBuYW1lID0gYF9fc3ZlbHRlXyR7aGFzaChydWxlKX1fJHt1aWR9YDtcblx0Y29uc3QgZG9jID0gZ2V0X3Jvb3RfZm9yX3N0eWxlKG5vZGUpO1xuXHRjb25zdCB7IHN0eWxlc2hlZXQsIHJ1bGVzIH0gPSBtYW5hZ2VkX3N0eWxlcy5nZXQoZG9jKSB8fCBjcmVhdGVfc3R5bGVfaW5mb3JtYXRpb24oZG9jLCBub2RlKTtcblx0aWYgKCFydWxlc1tuYW1lXSkge1xuXHRcdHJ1bGVzW25hbWVdID0gdHJ1ZTtcblx0XHRzdHlsZXNoZWV0Lmluc2VydFJ1bGUoYEBrZXlmcmFtZXMgJHtuYW1lfSAke3J1bGV9Y
41Cwgc3R5bGVzaGVldC5jc3NSdWxlcy5sZW5ndGgpO1xuXHR9XG5cdGNvbnN0IGFuaW1hdGlvbiA9IG5vZGUuc3R5bGUuYW5pbWF0aW9uIHx8ICcnO1xuXHRub2RlLnN0eWxlLmFuaW1hdGlvbiA9IGAke1xuXHRcdGFuaW1hdGlvbiA/IGAke2FuaW1hdGlvbn0sIGAgOiAnJ1xuXHR9JHtuYW1lfSAke2R1cmF0aW9ufW1zIGxpbmVhciAke2RlbGF5fW1zIDEgYm90aGA7XG5cdGFjdGl2ZSArPSAxO1xuXHRyZXR1cm4gbmFtZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnQgJiBFbGVtZW50Q1NTSW5saW5lU3R5bGV9IG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbmFtZV1cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlX3J1bGUobm9kZSwgbmFtZSkge1xuXHRjb25zdCBwcmV2aW91cyA9IChub2RlLnN0eWxlLmFuaW1hdGlvbiB8fCAnJykuc3BsaXQoJywgJyk7XG5cdGNvbnN0IG5leHQgPSBwcmV2aW91cy5maWx0ZXIoXG5cdFx0bmFtZVxuXHRcdFx0PyAoYW5pbSkgPT4gYW5pbS5pbmRleE9mKG5hbWUpIDwgMCAvLyByZW1vdmUgc3BlY2lmaWMgYW5pbWF0aW9uXG5cdFx0XHQ6IChhbmltKSA9PiBhbmltLmluZGV4T2YoJ19fc3ZlbHRlJykgPT09IC0xIC8vIHJlbW92ZSBhbGwgU3ZlbHRlIGFuaW1hdGlvbnNcblx0KTtcblx0Y29uc3QgZGVsZXRlZCA9IHByZXZpb3VzLmxlbmd0aCAtIG5leHQubGVuZ3RoO1xuXHRpZiAoZGVsZXRlZCkge1xuXHRcdG5vZGUuc3R5bGUuYW5pbWF0aW9uID0gbmV4dC5qb2luKCcsICcpO1xuXHRcdGFjdGl2ZSAtPSBkZWxldGVkO1xuXHRcdGlmICghYWN0aXZlKSBjbGVhcl9ydWxlcygpO1xuXHR9XG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhcl9ydWxlcygpIHtcblx0cmFmKCgpID0+IHtcblx0XHRpZiAoYWN0aXZlKSByZXR1cm47XG5cdFx0bWFuYWdlZF9zdHlsZXMuZm9yRWFjaCgoaW5mbykgPT4ge1xuXHRcdFx0Y29uc3QgeyBvd25lck5vZGUgfSA9IGluZm8uc3R5bGVzaGVldDtcblx0XHRcdC8vIHRoZXJlIGlzIG5vIG93bmVyTm9kZSBpZiBpdCBydW5zIG9uIGpzZG9tLlxuXHRcdFx0aWYgKG93bmVyTm9kZSkgZGV0YWNoKG93bmVyTm9kZSk7XG5cdFx0fSk7XG5cdFx0bWFuYWdlZF9zdHlsZXMuY2xlYXIoKTtcblx0fSk7XG59XG4iLCJpbXBvcnQgeyBpZGVudGl0eSBhcyBsaW5lYXIsIG5vb3AgfSBmcm9tICcuL3V0aWxzLmpzJztcbmltcG9ydCB7IG5vdyB9IGZyb20gJy4vZW52aXJvbm1lbnQuanMnO1xuaW1wb3J0IHsgbG9vcCB9IGZyb20gJy4vbG9vcC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVfcnVsZSwgZGVsZXRlX3J1bGUgfSBmcm9tICcuL3N0eWxlX21hbmFnZXIuanMnO1xuXG4vKipcbiAqIEBwYXJhbSB7RWxlbWVudCAmIEVsZW1lbnRDU1NJbmxpbmVTdHlsZX0gbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLlBvc2l0aW9uUmVjdH0gZnJvbVxuICogQHBhcmFtIHtpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLkFuaW1hdGlvbkZufSBmblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlX2FuaW1hdGlvbihub2RlLCBmcm9tLCBmbiwgcGFyYW1zKSB7XG5cdGlmICghZnJvbSkgcmV0dXJuIG5vb3A7XG5cdGNvbnN0IHRvID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0aWYgKFxuXHRcdGZyb20ubGVmdCA9PT0gdG8ubGVmdCAmJlxuXHRcdGZyb20ucmlnaHQgPT09IHRvLnJpZ2h0ICYmXG5cdFx0ZnJvbS50b3AgPT09IHRvLnRvcCAmJlxuXHRcdGZyb20uYm90dG9tID09PSB0by5ib3R0b21cblx0KVxuXHRcdHJldHVybiBub29wO1xuXHRjb25zdCB7XG5cdFx0ZGVsYXkgPSAwLFxuXHRcdGR1cmF0aW9uID0gMzAwLFxuXHRcdGVhc2luZyA9IGxpbmVhcixcblx0XHQvLyBAdHMtaWdub3JlIHRvZG86IHNob3VsZCB0aGlzIGJlIHNlcGFyYXRlZCBmcm9tIGRlc3RydWN0dXJpbmc/IE9yIHN0YXJ0L2VuZCBhZGRlZCB0byBwdWJsaWMgYXBpIGFuZCBkb2N1bWVudGF0aW9uP1xuXHRcdHN0YXJ0OiBzdGFydF90aW1lID0gbm93KCkgKyBkZWxheSxcblx0XHQvLyBAdHMtaWdub3JlIHRvZG86XG5cdFx0ZW5kID0gc3RhcnRfdGltZSArIGR1cmF0aW9uLFxuXHRcdHRpY2sgPSBub29wLFxuXHRcdGNzc1xuXHR9ID0gZm4obm9kZSwgeyBmcm9tLCB0byB9LCBwYXJhbXMpO1xuXHRsZXQgcnVubmluZyA9IHRydWU7XG5cdGxldCBzdGFydGVkID0gZmFsc2U7XG5cdGxldCBuYW1lO1xuXHQvKiogQHJldHVybnMge3ZvaWR9ICovXG5cdGZ1bmN0aW9uIHN0YXJ0KCkge1xuXHRcdGlmIChjc3MpIHtcblx0XHRcdG5hbWUgPSBjcmVhdGVfcnVsZShub2RlLCAwLCAxLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzKTtcblx0XHR9XG5cdFx0aWYgKCFkZWxheSkge1xuXHRcdFx0c3RhcnRlZCA9IHRydWU7XG5cdFx0fVxuXHR9XG5cdC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cblx0ZnVuY3Rpb24gc3RvcCgpIHtcblx0XHRpZiAoY3NzKSBkZWxldGVfcnVsZShub2RlLCBuYW1lKTtcblx0XHRydW5uaW5nID0gZmFsc2U7XG5cdH1cblx0bG9vcCgobm93KSA9PiB7XG5cdFx0aWYgKCFzdGFydGVkICYmIG5vdyA+PSBzdGFydF90aW1lKSB7XG5cdFx0XHRzdGFydGVkID0gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKHN0YXJ0ZWQgJiYgbm93ID49IGVuZCkge1xuXHRcdFx0dGljaygxLCAwKTtcblx0XHRcdHN0b3AoKTtcblx0XHR9XG5cdFx0aWYgKCFydW5uaW5nKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGlmIChzdGFydGVkKSB7XG5cdFx0XHRjb25zdCBwID0gbm93IC0gc3RhcnRfdGltZTtcblx0XHRcdGNvbnN0IHQgPSAwICsgMSAqIGVhc2luZyhwIC8gZHVyYXRpb24pO1xuXHRcdFx0dGljayh0LCAxIC0gdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9KTtcblx0c3RhcnQoKTtcblx0dGljaygwLCAxKTtcblx0cmV0dXJuIHN0b3A7XG59XG5cbi8qKlxuICogQHBhcmFtIHtFbGVtZW50ICYgRWxlbWVudENTU0lubGluZVN0eWxlfSBub2RlXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpeF9wb3NpdGlvbihub2RlKSB7XG5cdGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcblx0aWYgKHN0eWxlLnBvc2l0aW9uICE9PSAnYWJzb2x1dGUnICYmIHN0eWxlLnBvc2l0aW9uICE9PSAnZml4ZWQnKSB7XG5cdFx0Y29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBzdHlsZTtcblx0XHRjb25zdCBhID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHRub2RlLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcblx0XHRub2RlLnN0eWxlLndpZHRoID0gd2lkdGg7XG5cdFx0bm9kZS5zdHlsZS5oZWlnaHQgPSBoZWlnaHQ7XG5cdFx0YWRkX3RyYW5zZm9ybShub2Rl
41LCBhKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7RWxlbWVudCAmIEVsZW1lbnRDU1NJbmxpbmVTdHlsZX0gbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLlBvc2l0aW9uUmVjdH0gYVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRfdHJhbnNmb3JtKG5vZGUsIGEpIHtcblx0Y29uc3QgYiA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdGlmIChhLmxlZnQgIT09IGIubGVmdCB8fCBhLnRvcCAhPT0gYi50b3ApIHtcblx0XHRjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG5cdFx0Y29uc3QgdHJhbnNmb3JtID0gc3R5bGUudHJhbnNmb3JtID09PSAnbm9uZScgPyAnJyA6IHN0eWxlLnRyYW5zZm9ybTtcblx0XHRub2RlLnN0eWxlLnRyYW5zZm9ybSA9IGAke3RyYW5zZm9ybX0gdHJhbnNsYXRlKCR7YS5sZWZ0IC0gYi5sZWZ0fXB4LCAke2EudG9wIC0gYi50b3B9cHgpYDtcblx0fVxufVxuIiwiaW1wb3J0IHsgY3VzdG9tX2V2ZW50IH0gZnJvbSAnLi9kb20uanMnO1xuXG5leHBvcnQgbGV0IGN1cnJlbnRfY29tcG9uZW50O1xuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gc2V0X2N1cnJlbnRfY29tcG9uZW50KGNvbXBvbmVudCkge1xuXHRjdXJyZW50X2NvbXBvbmVudCA9IGNvbXBvbmVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldF9jdXJyZW50X2NvbXBvbmVudCgpIHtcblx0aWYgKCFjdXJyZW50X2NvbXBvbmVudCkgdGhyb3cgbmV3IEVycm9yKCdGdW5jdGlvbiBjYWxsZWQgb3V0c2lkZSBjb21wb25lbnQgaW5pdGlhbGl6YXRpb24nKTtcblx0cmV0dXJuIGN1cnJlbnRfY29tcG9uZW50O1xufVxuXG4vKipcbiAqIFNjaGVkdWxlcyBhIGNhbGxiYWNrIHRvIHJ1biBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyB1cGRhdGVkIGFmdGVyIGFueSBzdGF0ZSBjaGFuZ2UuXG4gKlxuICogVGhlIGZpcnN0IHRpbWUgdGhlIGNhbGxiYWNrIHJ1bnMgd2lsbCBiZSBiZWZvcmUgdGhlIGluaXRpYWwgYG9uTW91bnRgXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlI2JlZm9yZXVwZGF0ZVxuICogQHBhcmFtIHsoKSA9PiBhbnl9IGZuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJlZm9yZVVwZGF0ZShmbikge1xuXHRnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5iZWZvcmVfdXBkYXRlLnB1c2goZm4pO1xufVxuXG4vKipcbiAqIFRoZSBgb25Nb3VudGAgZnVuY3Rpb24gc2NoZWR1bGVzIGEgY2FsbGJhY2sgdG8gcnVuIGFzIHNvb24gYXMgdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBtb3VudGVkIHRvIHRoZSBET00uXG4gKiBJdCBtdXN0IGJlIGNhbGxlZCBkdXJpbmcgdGhlIGNvbXBvbmVudCdzIGluaXRpYWxpc2F0aW9uIChidXQgZG9lc24ndCBuZWVkIHRvIGxpdmUgKmluc2lkZSogdGhlIGNvbXBvbmVudDtcbiAqIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSBhbiBleHRlcm5hbCBtb2R1bGUpLlxuICpcbiAqIElmIGEgZnVuY3Rpb24gaXMgcmV0dXJuZWQgX3N5bmNocm9ub3VzbHlfIGZyb20gYG9uTW91bnRgLCBpdCB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgdW5tb3VudGVkLlxuICpcbiAqIGBvbk1vdW50YCBkb2VzIG5vdCBydW4gaW5zaWRlIGEgW3NlcnZlci1zaWRlIGNvbXBvbmVudF0oaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3MjcnVuLXRpbWUtc2VydmVyLXNpZGUtY29tcG9uZW50LWFwaSkuXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlI29ubW91bnRcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0geygpID0+IGltcG9ydCgnLi9wcml2YXRlLmpzJykuTm90RnVuY3Rpb248VD4gfCBQcm9taXNlPGltcG9ydCgnLi9wcml2YXRlLmpzJykuTm90RnVuY3Rpb248VD4+IHwgKCgpID0+IGFueSl9IGZuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uTW91bnQoZm4pIHtcblx0Z2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQub25fbW91bnQucHVzaChmbik7XG59XG5cbi8qKlxuICogU2NoZWR1bGVzIGEgY2FsbGJhY2sgdG8gcnVuIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gdXBkYXRlZC5cbiAqXG4gKiBUaGUgZmlyc3QgdGltZSB0aGUgY2FsbGJhY2sgcnVucyB3aWxsIGJlIGFmdGVyIHRoZSBpbml0aWFsIGBvbk1vdW50YFxuICpcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZSNhZnRlcnVwZGF0ZVxuICogQHBhcmFtIHsoKSA9PiBhbnl9IGZuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFmdGVyVXBkYXRlKGZuKSB7XG5cdGdldF9jdXJyZW50X2NvbXBvbmVudCgpLiQkLmFmdGVyX3VwZGF0ZS5wdXNoKGZuKTtcbn1cblxuLyoqXG4gKiBTY2hlZHVsZXMgYSBjYWxsYmFjayB0byBydW4gaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgdW5tb3VudGVkLlxuICpcbiAqIE91dCBvZiBgb25Nb3VudGAsIGBiZWZvcmVVcGRhdGVgLCBgYWZ0ZXJVcGRhdGVgIGFuZCBgb25EZXN0cm95YCwgdGhpcyBpcyB0aGVcbiAqIG9ubHkgb25lIHRoYXQgcnVucyBpbnNpZGUgYSBzZXJ2ZXItc2lkZSBjb21wb25lbnQuXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlI29uZGVzdHJveVxuICogQHBhcmFtIHsoKSA9PiBhbnl9IGZuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9uRGVzdHJveShmbikge1xuXHRnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5vbl9kZXN0cm95LnB1c2goZm4pO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gZXZlbnQgZGlzcGF0Y2hlciB0aGF0IGNhbiBiZSB1c2VkIHRvIGRpc3BhdGNoIFtjb21wb25lbnQgZXZlbnRzXShodHRwczovL3N2ZWx0ZS5kZXYvZG9jcyN0ZW1wbGF0ZS1zeW50YXgtY29tcG9uZW50LWRpcmVjdGl2ZXMtb24tZXZlbnRuYW1lKS5cbiAqIEV2ZW50IGRpc3BhdGNoZXJzIGFyZSBmdW5jdGlvbnMgdGhhdCBjYW4gdGFrZSB0d28gYXJndW1lbnRzOiBgbmFtZWAgYW5kIGBkZXRhaWxgLlxuICpcbiAqIENvbXBvbmVudCBldmVudHMgY3JlYXRlZCB3aXRoIGBjcmVhdGVFdmVudERpc3BhdGNoZXJgIGNyZWF0ZSBhXG4gKiBbQ3VzdG9tRXZlbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9DdXN0b21FdmVudCkuXG4gKiBUaGVzZSBldmVudHMgZG8gbm90IFtidWJibGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTGVhcm4vSmF2YVNjcmlwdC9CdWlsZGluZ19ibG9ja3MvRXZlbnRzI0V2ZW50X2J1YmJsaW5nX2FuZF9jYXB0dXJlKS5cbiAqIFRoZSBgZGV0YWlsYCBhcmd1bWVudCBjb3JyZXNwb25kcyB0byB0aGUgW0N1c3RvbUV2ZW50LmRldGFpbF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0N1c3RvbUV2ZW50L2RldGFpbClcbiAqIHByb3BlcnR5IGFuZCBjYW4gY29udGFpbiBhbnkgdHlwZSBvZiBkYXRhLlxuICpcbiAqIFRoZSBldmVudCBkaXNwYXRjaGVyIGNhbiBiZSB0eXBlZCB0byBuYXJyb3cgdGhlIGFsbG93ZWQgZXZlbnQgbmFtZXMgYW5kIHR
41oZSB0eXBlIG9mIHRoZSBgZGV0YWlsYCBhcmd1bWVudDpcbiAqIGBgYHRzXG4gKiBjb25zdCBkaXNwYXRjaCA9IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlcjx7XG4gKiAgbG9hZGVkOiBuZXZlcjsgLy8gZG9lcyBub3QgdGFrZSBhIGRldGFpbCBhcmd1bWVudFxuICogIGNoYW5nZTogc3RyaW5nOyAvLyB0YWtlcyBhIGRldGFpbCBhcmd1bWVudCBvZiB0eXBlIHN0cmluZywgd2hpY2ggaXMgcmVxdWlyZWRcbiAqICBvcHRpb25hbDogbnVtYmVyIHwgbnVsbDsgLy8gdGFrZXMgYW4gb3B0aW9uYWwgZGV0YWlsIGFyZ3VtZW50IG9mIHR5cGUgbnVtYmVyXG4gKiB9PigpO1xuICogYGBgXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlI2NyZWF0ZWV2ZW50ZGlzcGF0Y2hlclxuICogQHRlbXBsYXRlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbRXZlbnRNYXA9YW55XVxuICogQHJldHVybnMge2ltcG9ydCgnLi9wdWJsaWMuanMnKS5FdmVudERpc3BhdGNoZXI8RXZlbnRNYXA+fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRXZlbnREaXNwYXRjaGVyKCkge1xuXHRjb25zdCBjb21wb25lbnQgPSBnZXRfY3VycmVudF9jb21wb25lbnQoKTtcblx0cmV0dXJuICh0eXBlLCBkZXRhaWwsIHsgY2FuY2VsYWJsZSA9IGZhbHNlIH0gPSB7fSkgPT4ge1xuXHRcdGNvbnN0IGNhbGxiYWNrcyA9IGNvbXBvbmVudC4kJC5jYWxsYmFja3NbdHlwZV07XG5cdFx0aWYgKGNhbGxiYWNrcykge1xuXHRcdFx0Ly8gVE9ETyBhcmUgdGhlcmUgc2l0dWF0aW9ucyB3aGVyZSBldmVudHMgY291bGQgYmUgZGlzcGF0Y2hlZFxuXHRcdFx0Ly8gaW4gYSBzZXJ2ZXIgKG5vbi1ET00pIGVudmlyb25tZW50P1xuXHRcdFx0Y29uc3QgZXZlbnQgPSBjdXN0b21fZXZlbnQoLyoqIEB0eXBlIHtzdHJpbmd9ICovICh0eXBlKSwgZGV0YWlsLCB7IGNhbmNlbGFibG
41UgfSk7XG5cdFx0XHRjYWxsYmFja3Muc2xpY2UoKS5mb3JFYWNoKChmbikgPT4ge1xuXHRcdFx0XHRmbi5jYWxsKGNvbXBvbmVudCwgZXZlbnQpO1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQ7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9O1xufVxuXG4vKipcbiAqIEFzc29jaWF0ZXMgYW4gYXJiaXRyYXJ5IGBjb250ZXh0YCBvYmplY3Qgd2l0aCB0aGUgY3VycmVudCBjb21wb25lbnQgYW5kIHRoZSBzcGVjaWZpZWQgYGtleWBcbiAqIGFuZCByZXR1cm5zIHRoYXQgb2JqZWN0LiBUaGUgY29udGV4dCBpcyB0aGVuIGF2YWlsYWJsZSB0byBjaGlsZHJlbiBvZiB0aGUgY29tcG9uZW50XG4gKiAoaW5jbHVkaW5nIHNsb3R0ZWQgY29udGVudCkgd2l0aCBgZ2V0Q29udGV4dGAuXG4gKlxuICogTGlrZSBsaWZlY3ljbGUgZnVuY3Rpb25zLCB0aGlzIG11c3QgYmUgY2FsbGVkIGR1cmluZyBjb21wb25lbnQgaW5pdGlhbGlzYXRpb24uXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlI3NldGNvbnRleHRcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge2FueX0ga2V5XG4gKiBAcGFyYW0ge1R9IGNvbnRleHRcbiAqIEByZXR1cm5zIHtUfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0Q29udGV4dChrZXksIGNvbnRleHQpIHtcblx0Z2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuY29udGV4dC5zZXQoa2V5LCBjb250ZXh0KTtcblx0cmV0dXJuIGNvbnRleHQ7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBjb250ZXh0IHRoYXQgYmVsb25ncyB0byB0aGUgY2xvc2VzdCBwYXJlbnQgY29tcG9uZW50IHdpdGggdGhlIHNwZWNpZmllZCBga2V5YC5cbiAqIE11c3QgYmUgY2FsbGVkIGR1cmluZyBjb21wb25lbnQgaW5pdGlhbGlzYXRpb24uXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlI2dldGNvbnRleHRcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge2FueX0ga2V5XG4gKiBAcmV0dXJucyB7VH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbnRleHQoa2V5KSB7XG5cdHJldHVybiBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0LmdldChrZXkpO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgd2hvbGUgY29udGV4dCBtYXAgdGhhdCBiZWxvbmdzIHRvIHRoZSBjbG9zZXN0IHBhcmVudCBjb21wb25lbnQuXG4gKiBNdXN0IGJlIGNhbGxlZCBkdXJpbmcgY29tcG9uZW50IGluaXRpYWxpc2F0aW9uLiBVc2VmdWwsIGZvciBleGFtcGxlLCBpZiB5b3VcbiAqIHByb2dyYW1tYXRpY2FsbHkgY3JlYXRlIGEgY29tcG9uZW50IGFuZCB3YW50IHRvIHBhc3MgdGhlIGV4aXN0aW5nIGNvbnRleHQgdG8gaXQuXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlI2dldGFsbGNvbnRleHRzXG4gKiBAdGVtcGxhdGUge01hcDxhbnksIGFueT59IFtUPU1hcDxhbnksIGFueT5dXG4gKiBAcmV0dXJucyB7VH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbENvbnRleHRzKCkge1xuXHRyZXR1cm4gZ2V0X2N1cnJlbnRfY29tcG9uZW50KCkuJCQuY29udGV4dDtcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIGdpdmVuIGBrZXlgIGhhcyBiZWVuIHNldCBpbiB0aGUgY29udGV4dCBvZiBhIHBhcmVudCBjb21wb25lbnQuXG4gKiBNdXN0IGJlIGNhbGxlZCBkdXJpbmcgY29tcG9uZW50IGluaXRpYWxpc2F0aW9uLlxuICpcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZSNoYXNjb250ZXh0XG4gKiBAcGFyYW0ge2FueX0ga2V5XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0NvbnRleHQoa2V5KSB7XG5cdHJldHVybiBnZXRfY3VycmVudF9jb21wb25lbnQoKS4kJC5jb250ZXh0LmhhcyhrZXkpO1xufVxuXG4vLyBUT0RPIGZpZ3VyZSBvdXQgaWYgd2Ugc3RpbGwgd2FudCB0byBzdXBwb3J0XG4vLyBzaG9ydGhhbmQgZXZlbnRzLCBvciBpZiB3ZSB3YW50IHRvIGltcGxlbWVudFxuLy8gYSByZWFsIGJ1YmJsaW5nIG1lY2hhbmlzbVxuLyoqXG4gKiBAcGFyYW0gY29tcG9uZW50XG4gKiBAcGFyYW0gZXZlbnRcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYnViYmxlKGNvbXBvbmVudCwgZXZlbnQpIHtcblx0Y29uc3QgY2FsbGJhY2tzID0gY29tcG9uZW50LiQkLmNhbGxiYWNrc1tldmVudC50eXBlXTtcblx0aWYgKGNhbGxiYWNrcykge1xuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRjYWxsYmFja3Muc2xpY2UoKS5mb3JFYWNoKChmbikgPT4gZm4uY2FsbCh0aGlzLCBldmVudCkpO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBydW5fYWxsIH0gZnJvbSAnLi91dGlscy5qcyc7XG5pbXBvcnQgeyBjdXJyZW50X2NvbXBvbmVudCwgc2V0X2N1cnJlbnRfY29tcG9uZW50IH0gZnJvbSAnLi9saWZlY3ljbGUuanMnO1xuXG5leHBvcnQgY29uc3QgZGlydHlfY29tcG9uZW50cyA9IFtdO1xuZXhwb3J0IGNvbnN0IGludHJvcyA9IHsgZW5hYmxlZDogZmFsc2UgfTtcbmV4cG9ydCBjb25zdCBiaW5kaW5nX2NhbGxiYWNrcyA9IFtdO1xuXG5sZXQgcmVuZGVyX2NhbGxiYWNrcyA9IFtdO1xuXG5jb25zdCBmbHVzaF9jYWxsYmFja3MgPSBbXTtcblxuY29uc3QgcmVzb2x2ZWRfcHJvbWlzZSA9IC8qIEBfX1BVUkVfXyAqLyBQcm9taXNlLnJlc29sdmUoKTtcblxubGV0IHVwZGF0ZV9zY2hlZHVsZWQgPSBmYWxzZTtcblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjaGVkdWxlX3VwZGF0ZSgpIHtcblx0aWYgKCF1cGRhdGVfc2NoZWR1bGVkKSB7XG5cdFx0dXBkYXRlX3NjaGVkdWxlZCA9IHRydWU7XG5cdFx0cmVzb2x2ZWRfcHJvbWlzZS50aGVuKGZsdXNoKTtcblx0fVxufVxuXG4vKiogQHJldHVybnMge1Byb21pc2U8dm9pZD59ICovXG5leHBvcnQgZnVuY3Rpb24gdGljaygpIHtcblx0c2NoZWR1bGVfdXBkYXRlKCk7XG5cdHJldHVybiByZXNvbHZlZF9wcm9taXNlO1xufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gYWRkX3JlbmRlcl9jYWxsYmFjayhmbikge1xuXHRyZW5kZXJfY2FsbGJhY2tzLnB1c2goZm4pO1xufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gYWRkX2ZsdXNoX2NhbGxiYWNrKGZuKSB7XG5cdGZsdXNoX2NhbGxiYWNrcy5wdXNoKGZuKTtcbn1cblxuLy8gZmx1c2goKSBjYWxscyBjYWxsYmFja3MgaW4gdGhpcyBvcmRlcjpcbi8vIDEuIEFsbCBiZWZvcmVVcGRhdGUgY2FsbGJhY2tzLCBpbiBvcmRlcjogcGFyZW50cyBiZWZvcmUgY2hpbGRyZW5cbi8vIDIuIEFsbCBiaW5kOnRoaXMgY2FsbGJhY2tzLCBpbiByZXZlcnNlIG9yZGVyOiBjaGlsZHJlbiBiZWZvcmUgcGFyZW50cy5cbi8vIDMuIEFsbCBhZnRlclVwZGF0ZSBjYWxsYmFja3MsIGluIG9yZGVyOiBwYXJlbnRzIGJlZm9yZSBjaGlsZHJlbi4gRVhDRVBUXG4vLyAgICBmb3IgYWZ0ZXJVcGRhdGVzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWwgb25Nb3VudCwgd2hpY2ggYXJlIGNhbGxlZCBpblxuLy8gICAgcmV2ZXJzZSBvcmRlcjogY2hpbGRyZW4gYmVmb3JlIHBhcmVudHMuXG4vLyBTaW5jZSBjYWxsYmFja3MgbWlnaHQgdXBkYXRlIGNvbXBvbmVudCB2YWx1ZXMsIHdoaWNoIGNvdWxkIHRyaWdnZXIgYW5vdGhlclxuLy8gY2FsbCB0byBmbHVzaCgpLCB0aGUgZm9sbG93aW5nIHN0ZXBzIGd1YXJkIGFnYWluc3QgdGhpczpcbi8vIDEuIER1cmluZyBiZWZvcmVVcGRhdGUsIGFueSB1cGRhdGVkIGNvbXBvbmVudHMgd2lsbCBiZSBhZGRlZCB0byB0aG
41Vcbi8vICAgIGRpcnR5X2NvbXBvbmVudHMgYXJyYXkgYW5kIHdpbGwgY2F1c2UgYSByZWVudHJhbnQgY2FsbCB0byBmbHVzaCgpLiBCZWNhdXNlXG4vLyAgICB0aGUgZmx1c2ggaW5kZXggaXMga2VwdCBvdXRzaWRlIHRoZSBmdW5jdGlvbiwgdGhlIHJlZW50cmFudCBjYWxsIHdpbGwgcGlja1xuLy8gICAgdXAgd2hlcmUgdGhlIGVhcmxpZXIgY2FsbCBsZWZ0IG9mZiBhbmQgZ28gdGhyb3VnaCBhbGwgZGlydHkgY29tcG9uZW50cy4gVGhlXG4vLyAgICBjdXJyZW50X2NvbXBvbmVudCB2YWx1ZSBpcyBzYXZlZCBhbmQgcmVzdG9yZWQgc28gdGhhdCB0aGUgcmVlbnRyYW50IGNhbGwgd2lsbFxuLy8gICAgbm90IGludGVyZmVyZSB3aXRoIHRoZSBcInBhcmVudFwiIGZsdXNoKCkgY2FsbC5cbi8vIDIuIGJpbmQ6dGhpcyBjYWxsYmFja3MgY2Fubm90IHRyaWdnZXIgbmV3IGZsdXNoKCkgY2FsbHMuXG4vLyAzLiBEdXJpbmcgYWZ0ZXJVcGRhdGUsIGFueSB1cGRhdGVkIGNvbXBvbmVudHMgd2lsbCBOT1QgaGF2ZSB0aGVpciBhZnRlclVwZGF0ZVxuLy8gICAgY2FsbGJhY2sgY2FsbGVkIGEgc2Vjb25kIHRpbWU7IHRoZSBzZWVuX2NhbGxiYWNrcyBzZXQsIG91dHNpZGUgdGhlIGZsdXNoKClcbi8vICAgIGZ1bmN0aW9uLCBndWFyYW50ZWVzIHRoaXMgYmVoYXZpb3IuXG5jb25zdCBzZWVuX2NhbGxiYWNrcyA9IG5ldyBTZXQoKTtcblxubGV0IGZsdXNoaWR4ID0gMDsgLy8gRG8gKm5vdCogbW92ZSB0aGlzIGluc2lkZSB0aGUgZmx1c2goKSBmdW5jdGlvblxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gZmx1c2goKSB7XG5cdC8vIERvIG5vdCByZWVudGVyIGZsdXNoIHdoaWxlIGRpcnR5IGNvbXBvbmVudHMgYXJlIHVwZGF0ZWQsIGFzIHRoaXMgY2FuXG5cdC8vIHJlc3VsdCBpbiBhbiBpbmZpbml0ZSBsb29wLiBJbnN0ZWFkLCBsZXQgdGhlIGlubmVyIGZsdXNoIGhhbmRsZSBpdC5cblx0Ly8gUmVlbnRyYW5jeSBpcyBvayBhZnRlcndhcmRzIGZvciBiaW5kaW5ncyBldGMuXG5cdGlmIChmbHVzaGlkeCAhPT0gMCkge1xuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBzYXZlZF9jb21wb25lbnQgPSBjdXJyZW50X2NvbXBvbmVudDtcblx0ZG8ge1xuXHRcdC8vIGZpcnN0LCBjYWxsIGJlZm9yZVVwZGF0ZSBmdW5jdGlvbnNcblx0XHQvLyBhbmQgdXBkYXRlIGNvbXBvbmVudHNcblx0XHR0cnkge1xuXHRcdFx0d2hpbGUgKGZsdXNoaWR4IDwgZGlydHlfY29tcG9uZW50cy5sZW5ndGgpIHtcblx0XHRcdFx0Y29uc3QgY29tcG9uZW50ID0gZGlydHlfY29tcG9uZW50c1tmbHVzaGlkeF07XG5cdFx0XHRcdGZsdXNoaWR4Kys7XG5cdFx0XHRcdHNldF9jdXJyZW50X2NvbXBvbmVudChjb21wb25lbnQpO1xuXHRcdFx0XHR1cGRhdGUoY29tcG9uZW50LiQkKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHQvLyByZXNldCBkaXJ0eSBzdGF0ZSB0byBub3QgZW5kIHVwIGluIGEgZGVhZGxvY2tlZCBzdGF0ZSBhbmQgdGhlbiByZXRocm93XG5cdFx0XHRkaXJ0eV9jb21wb25lbnRzLmxlbmd0aCA9IDA7XG5cdFx0XHRmbHVzaGlkeCA9IDA7XG5cdFx0XHR0aHJvdyBlO1xuXHRcdH1cblx0XHRzZXRfY3VycmVudF9jb21wb25lbnQobnVsbCk7XG5cdFx0ZGlydHlfY29tcG9uZW50cy5sZW5ndGggPSAwO1xuXHRcdGZsdXNoaWR4ID0gMDtcblx0XHR3aGlsZSAoYmluZGluZ19jYWxsYmFja3MubGVuZ3RoKSBiaW5kaW5nX2NhbGxiYWNrcy5wb3AoKSgpO1xuXHRcdC8vIHRoZW4sIG9uY2UgY29tcG9uZW50cyBhcmUgdXBkYXRlZCwgY2FsbFxuXHRcdC8vIGFmdGVyVXBkYXRlIGZ1bmN0aW9ucy4gVGhpcyBtYXkgY2F1c2Vcblx0XHQvLyBzdWJzZXF1ZW50IHVwZGF0ZXMuLi5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHJlbmRlcl9jYWxsYmFja3MubGVuZ3RoOyBpICs9IDEpIHtcblx0XHRcdGNvbnN0IGNhbGxiYWNrID0gcmVuZGVyX2NhbGxiYWNrc1tpXTtcblx0XHRcdGlmICghc2Vlbl9jYWxsYmFja3MuaGFzKGNhbGxiYWNrKSkge1xuXHRcdFx0XHQvLyAuLi5zbyBndWFyZCBhZ2FpbnN0IGluZmluaXRlIGxvb3BzXG5cdFx0XHRcdHNlZW5fY2FsbGJhY2tzLmFkZChjYWxsYmFjayk7XG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJlbmRlcl9jYWxsYmFja3MubGVuZ3RoID0gMDtcblx0fSB3aGlsZSAoZGlydHlfY29tcG9uZW50cy5sZW5ndGgpO1xuXHR3aGlsZSAoZmx1c2hfY2FsbGJhY2tzLmxlbmd0aCkge1xuXHRcdGZsdXNoX2NhbGxiYWNrcy5wb3AoKSgpO1xuXHR9XG5cdHVwZGF0ZV9zY2hlZHVsZWQgPSBmYWxzZTtcblx0c2Vlbl9jYWxsYmFja3MuY2xlYXIoKTtcblx0c2V0X2N1cnJlbnRfY29tcG9uZW50KHNhdmVkX2NvbXBvbmVudCk7XG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmZ1bmN0aW9uIHVwZGF0ZSgkJCkge1xuXHRpZiAoJCQuZnJhZ21lbnQgIT09IG51bGwpIHtcblx0XHQkJC51cGRhdGUoKTtcblx0XHRydW5fYWxsKCQkLmJlZm9yZV91cGRhdGUpO1xuXHRcdGNvbnN0IGRpcnR5ID0gJCQuZGlydHk7XG5cdFx0JCQuZGlydHkgPSBbLTFdO1xuXHRcdCQkLmZyYWdtZW50ICYmICQkLmZyYWdtZW50LnAoJCQuY3R4LCBkaXJ0eSk7XG5cdFx0JCQuYWZ0ZXJfdXBkYXRlLmZvckVhY2goYWRkX3JlbmRlcl9jYWxsYmFjayk7XG5cdH1cbn1cblxuLyoqXG4gKiBVc2VmdWwgZm9yIGV4YW1wbGUgdG8gZXhlY3V0ZSByZW1haW5pbmcgYGFmdGVyVXBkYXRlYCBjYWxsYmFja3MgYmVmb3JlIGV4ZWN1dGluZyBgZGVzdHJveWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9uW119IGZuc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbHVzaF9yZW5kZXJfY2FsbGJhY2tzKGZucykge1xuXHRjb25zdCBmaWx0ZXJlZCA9IFtdO1xuXHRjb25zdCB0YXJnZXRzID0gW107XG5cdHJlbmRlcl9jYWxsYmFja3MuZm9yRWFjaCgoYykgPT4gKGZucy5pbmRleE9mKGMpID09PSAtMSA/IGZpbHRlcmVkLnB1c2goYykgOiB0YXJnZXRzLnB1c2goYykpKTtcblx0dGFyZ2V0cy5mb3JFYWNoKChjKSA9PiBjKCkpO1xuXHRyZW5kZXJfY2FsbGJhY2tzID0gZmlsdGVyZWQ7XG59XG4iLCJpbXBvcnQgeyBpZGVudGl0eSBhcyBsaW5lYXIsIGlzX2Z1bmN0aW9uLCBub29wLCBydW5fYWxsIH0gZnJvbSAnLi91dGlscy5qcyc7XG5pbXBvcnQgeyBub3cgfSBmcm9tICcuL2Vudmlyb25tZW50LmpzJztcbmltcG9ydCB7
41IGxvb3AgfSBmcm9tICcuL2xvb3AuanMnO1xuaW1wb3J0IHsgY3JlYXRlX3J1bGUsIGRlbGV0ZV9ydWxlIH0gZnJvbSAnLi9zdHlsZV9tYW5hZ2VyLmpzJztcbmltcG9ydCB7IGN1c3RvbV9ldmVudCB9IGZyb20gJy4vZG9tLmpzJztcbmltcG9ydCB7IGFkZF9yZW5kZXJfY2FsbGJhY2sgfSBmcm9tICcuL3NjaGVkdWxlci5qcyc7XG5cbi8qKlxuICogQHR5cGUge1Byb21pc2U8dm9pZD4gfCBudWxsfVxuICovXG5sZXQgcHJvbWlzZTtcblxuLyoqXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuZnVuY3Rpb24gd2FpdCgpIHtcblx0aWYgKCFwcm9taXNlKSB7XG5cdFx0cHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdHByb21pc2UudGhlbigoKSA9PiB7XG5cdFx0XHRwcm9taXNlID0gbnVsbDtcblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gcHJvbWlzZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7SU5UUk8gfCBPVVRSTyB8IGJvb2xlYW59IGRpcmVjdGlvblxuICogQHBhcmFtIHsnc3RhcnQnIHwgJ2VuZCd9IGtpbmRcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBkaXNwYXRjaChub2RlLCBkaXJlY3Rpb24sIGtpbmQpIHtcblx0bm9kZS5kaXNwYXRjaEV2ZW50KGN1c3RvbV9ldmVudChgJHtkaXJlY3Rpb24gPyAnaW50cm8nIDogJ291dHJvJ30ke2tpbmR9YCkpO1xufVxuXG5jb25zdCBvdXRyb2luZyA9IG5ldyBTZXQoKTtcblxuLyoqXG4gKiBAdHlwZSB7T3V0cm99XG4gKi9cbmxldCBvdXRyb3M7XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBfb3V0cm9zKCkge1xuXHRvdXRyb3MgPSB7XG5cdFx0cjogMCxcblx0XHRjOiBbXSxcblx0XHRwOiBvdXRyb3MgLy8gcGFyZW50IGdyb3VwXG5cdH07XG59XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tfb3V0cm9zKCkge1xuXHRpZiAoIW91dHJvcy5yKSB7XG5cdFx0cnVuX2FsbChvdXRyb3MuYyk7XG5cdH1cblx0b3V0cm9zID0gb3V0cm9zLnA7XG59XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLkZyYWdtZW50fSBibG9ja1xuICogQHBhcmFtIHswIHwgMX0gW2xvY2FsXVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2l0aW9uX2luKGJsb2NrLCBsb2NhbCkge1xuXHRpZiAoYmxvY2sgJiYgYmxvY2suaSkge1xuXHRcdG91dHJvaW5nLmRlbGV0ZShibG9jayk7XG5cdFx0YmxvY2suaShsb2NhbCk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9wcml2YXRlLmpzJykuRnJhZ21lbnR9IGJsb2NrXG4gKiBAcGFyYW0gezAgfCAxfSBsb2NhbFxuICogQHBhcmFtIHswIHwgMX0gW2RldGFjaF1cbiAqIEBwYXJhbSB7KCkgPT4gdm9pZH0gW2NhbGxiYWNrXVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2l0aW9uX291dChibG9jaywgbG9jYWwsIGRldGFjaCwgY2FsbGJhY2spIHtcblx0aWYgKGJsb2NrICYmIGJsb2NrLm8pIHtcblx0XHRpZiAob3V0cm9pbmcuaGFzKGJsb2NrKSkgcmV0dXJuO1xuXHRcdG91dHJvaW5nLmFkZChibG9jayk7XG5cdFx0b3V0cm9zLmMucHVzaCgoKSA9PiB7XG5cdFx0XHRvdXRyb2luZy5kZWxldGUoYmxvY2spO1xuXHRcdFx0aWYgKGNhbGxiYWNrKSB7XG5cdFx0XHRcdGlmIChkZXRhY2gpIGJsb2NrLmQoMSk7XG5cdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0YmxvY2subyhsb2NhbCk7XG5cdH0gZWxzZSBpZiAoY2FsbGJhY2spIHtcblx0XHRjYWxsYmFjaygpO1xuXHR9XG59XG5cbi8qKlxuICogQHR5cGUge2ltcG9ydCgnLi4vdHJhbnNpdGlvbi9wdWJsaWMuanMnKS5UcmFuc2l0aW9uQ29uZmlnfVxuICovXG5jb25zdCBudWxsX3RyYW5zaXRpb24gPSB7IGR1cmF0aW9uOiAwIH07XG5cbi8qKlxuICogQHBhcmFtIHtFbGVtZW50ICYgRWxlbWVudENTU0lubGluZVN0eWxlfSBub2RlXG4gKiBAcGFyYW0ge1RyYW5zaXRpb25Gbn0gZm5cbiAqIEBwYXJhbSB7YW55fSBwYXJhbXNcbiAqIEByZXR1cm5zIHt7IHN0YXJ0KCk6IHZvaWQ7IGludmFsaWRhdGUoKTogdm9pZDsgZW5kKCk6IHZvaWQ7IH19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVfaW5fdHJhbnNpdGlvbihub2RlLCBmbiwgcGFyYW1zKSB7XG5cdC8qKlxuXHQgKiBAdHlwZSB7VHJhbnNpdGlvbk9wdGlvbnN9ICovXG5cdGNvbnN0IG9wdGlvbnMgPSB7IGRpcmVjdGlvbjogJ2luJyB9O1xuXHRsZXQgY29uZmlnID0gZm4obm9kZSwgcGFyYW1zLCBvcHRpb25zKTtcblx0bGV0IHJ1bm5pbmcgPSBmYWxzZTtcblx0bGV0IGFuaW1hdGlvbl9uYW1lO1xuXHRsZXQgdGFzaztcblx0bGV0IHVpZCA9IDA7XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfSAqL1xuXHRmdW5jdGlvbiBjbGVhbnVwKCkge1xuXHRcdGlmIChhbmltYXRpb25fbmFtZSkgZGVsZXRlX3J1bGUobm9kZSwgYW5pbWF0aW9uX25hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfSAqL1xuXHRmdW5jdGlvbiBnbygpIHtcblx0XHRjb25zdCB7XG5cdFx0XHRkZWxheSA9IDAsXG5cdFx0XHRkdXJhdGlvbiA9IDMwMCxcblx0XHRcdGVhc2luZyA9IGxpbmVhcixcblx0XHRcdHRpY2sgPSBub29wLFxuXHRcdFx0Y3NzXG5cdFx0fSA9IGNvbmZpZyB8fCBudWxsX3RyYW5zaXRpb247XG5cdFx0aWYgKGNzcykgYW5pbWF0aW9uX25hbWUgPSBjcmVhdGVfcnVsZShub2RlLCAwLCAxLCBkdXJhdGlvbiwgZGVsYXksIGVhc2luZywgY3NzLCB1aWQrKyk7XG5cdFx0dGljaygwLCAxKTtcblx0XHRjb25zdCBzdGFydF90aW1lID0gbm93KCkgKyBkZWxheTtcblx0XHRjb25zdCBlbmRfdGltZSA9IHN0YXJ0X3RpbWUgKyBkdXJhdGlvbjtcblx0XHRpZiAodGFzaykgdGFzay5hYm9ydCgpO1xuXHRcdHJ1bm5pbmcgPSB0cnVlO1xuXHRcdGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4gZGlzcGF0Y2gobm9kZSwgdHJ1ZSwgJ3N0YXJ0JykpO1xuXHRcdHRhc2sgPSBsb29wKChub3cpID0+IHtcblx0XHRcdGlmIChydW5uaW5nKSB7XG5cdFx0XHRcdGlmIChub3cgPj0gZW5kX3RpbW
41UpIHtcblx0XHRcdFx0XHR0aWNrKDEsIDApO1xuXHRcdFx0XHRcdGRpc3BhdGNoKG5vZGUsIHRydWUsICdlbmQnKTtcblx0XHRcdFx0XHRjbGVhbnVwKCk7XG5cdFx0XHRcdFx0cmV0dXJuIChydW5uaW5nID0gZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChub3cgPj0gc3RhcnRfdGltZSkge1xuXHRcdFx0XHRcdGNvbnN0IHQgPSBlYXNpbmcoKG5vdyAtIHN0YXJ0X3RpbWUpIC8gZHVyYXRpb24pO1xuXHRcdFx0XHRcdHRpY2sodCwgMSAtIHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcnVubmluZztcblx0XHR9KTtcblx0fVxuXHRsZXQgc3RhcnRlZCA9IGZhbHNlO1xuXHRyZXR1cm4ge1xuXHRcdHN0YXJ0KCkge1xuXHRcdFx0aWYgKHN0YXJ0ZWQpIHJldHVybjtcblx0XHRcdHN0YXJ0ZWQgPSB0cnVlO1xuXHRcdFx0ZGVsZXRlX3J1bGUobm9kZSk7XG5cdFx0XHRpZiAoaXNfZnVuY3Rpb24oY29uZmlnKSkge1xuXHRcdFx0XHRjb25maWcgPSBjb25maWcob3B0aW9ucyk7XG5cdFx0XHRcdHdhaXQoKS50aGVuKGdvKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGdvKCk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRpbnZhbGlkYXRlKCkge1xuXHRcdFx0c3RhcnRlZCA9IGZhbHNlO1xuXHRcdH0sXG5cdFx0ZW5kKCkge1xuXHRcdFx0aWYgKHJ1bm5pbmcpIHtcblx0XHRcdFx0Y2xlYW51cCgpO1xuXHRcdFx0XHRydW5uaW5nID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RWxlbWVudCAmIEVsZW1lbnRDU1NJbmxpbmVTdHlsZX0gbm9kZVxuICogQHBhcmFtIHtUcmFuc2l0aW9uRm59IGZuXG4gKiBAcGFyYW0ge2FueX0gcGFyYW1zXG4gKiBAcmV0dXJucyB7eyBlbmQocmVzZXQ6IGFueSk6IHZvaWQ7IH19XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVfb3V0X3RyYW5zaXRpb24obm9kZSwgZm4sIHBhcmFtcykge1xuXHQvKiogQHR5cGUge1RyYW5zaXRpb25PcHRpb25zfSAqL1xuXHRjb25zdCBvcHRpb25zID0geyBkaXJlY3Rpb246ICdvdXQnIH07XG5cdGxldCBjb25maWcgPSBmbihub2RlLCBwYXJhbXMsIG9wdGlvbnMpO1xuXHRsZXQgcnVubmluZyA9IHRydWU7XG5cdGxldCBhbmltYXRpb25fbmFtZTtcblx0Y29uc3QgZ3JvdXAgPSBvdXRyb3M7XG5cdGdyb3VwLnIgKz0gMTtcblx0LyoqIEB0eXBlIHtib29sZWFufSAqL1xuXHRsZXQgb3JpZ2luYWxfaW5lcnRfdmFsdWU7XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfSAqL1xuXHRmdW5jdGlvbiBnbygpIHtcblx0XHRjb25zdCB7XG5cdFx0XHRkZWxheSA9IDAsXG5cdFx0XHRkdXJhdGlvbiA9IDMwMCxcblx0XHRcdGVhc2luZyA9IGxpbmVhcixcblx0XHRcdHRpY2sgPSBub29wLFxuXHRcdFx0Y3NzXG5cdFx0fSA9IGNvbmZpZyB8fCBudWxsX3RyYW5zaXRpb247XG5cblx0XHRpZiAoY3NzKSBhbmltYXRpb25fbmFtZSA9IGNyZWF0ZV9ydWxlKG5vZGUsIDEsIDAsIGR1cmF0aW9uLCBkZWxheSwgZWFzaW5nLCBjc3MpO1xuXG5cdFx0Y29uc3Qgc3RhcnRfdGltZSA9IG5vdygpICsgZGVsYXk7XG5cdFx0Y29uc3QgZW5kX3RpbWUgPSBzdGFydF90aW1lICsgZHVyYXRpb247XG5cdFx0YWRkX3JlbmRlcl9jYWxsYmFjaygoKSA9PiBkaXNwYXRjaChub2RlLCBmYWxzZSwgJ3N0YXJ0JykpO1xuXG5cdFx0aWYgKCdpbmVydCcgaW4gbm9kZSkge1xuXHRcdFx0b3JpZ2luYWxfaW5lcnRfdmFsdWUgPSAvKiogQHR5cGUge0hUTUxFbGVtZW50fSAqLyAobm9kZSkuaW5lcnQ7XG5cdFx0XHRub2RlLmluZXJ0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRsb29wKChub3cpID0+IHtcblx0XHRcdGlmIChydW5uaW5nKSB7XG5cdFx0XHRcdGlmIChub3cgPj0gZW5kX3RpbWUpIHtcblx0XHRcdFx0XHR0aWNrKDAsIDEpO1xuXHRcdFx0XHRcdGRpc3BhdGNoKG5vZGUsIGZhbHNlLCAnZW5kJyk7XG5cdFx0XHRcdFx0aWYgKCEtLWdyb3VwLnIpIHtcblx0XHRcdFx0XHRcdC8vIHRoaXMgd2lsbCByZXN1bHQgaW4gYGVuZCgpYCBiZWluZyBjYWxsZWQsXG5cdFx0XHRcdFx0XHQvLyBzbyB3ZSBkb24ndCBuZWVkIHRvIGNsZWFuIHVwIGhlcmVcblx0XHRcdFx0XHRcdHJ1bl9hbGwoZ3JvdXAuYyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAobm93ID49IHN0YXJ0X3RpbWUpIHtcblx0XHRcdFx0XHRjb25zdCB0ID0gZWFzaW5nKChub3cgLSBzdGFydF90aW1lKSAvIGR1cmF0aW9uKTtcblx0XHRcdFx0XHR0aWNrKDEgLSB0LCB0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJ1bm5pbmc7XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAoaXNfZnVuY3Rpb24oY29uZmlnKSkge1xuXHRcdHdhaXQoKS50aGVuKCgpID0+IHtcblx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdGNvbmZpZyA9IGNvbmZpZyhvcHRpb25zKTtcblx0XHRcdGdvKCk7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0Z28oKTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0ZW5kKHJlc2V0KSB7XG5cdFx0XHRpZiAocmVzZXQgJiYgJ2luZXJ0JyBpbiBub2RlKSB7XG5cdFx0XHRcdG5vZGUuaW5lcnQgPSBvcmlnaW5hbF9pbmVydF92YWx1ZTtcblx0XHRcdH1cblx0XHRcdGlmIChyZXNldCAmJiBjb25maWcudGljaykge1xuXHRcdFx0XHRjb25maWcudGljaygxLCAwKTtcblx0XHRcdH1cblx0XHRcdGlmIChydW5uaW5nKSB7XG5cdFx0XHRcdGlmIChhbmltYXRpb25fbmFtZSkgZGVsZXRlX3J1bGUobm9kZSwgYW5pbWF0aW9uX25hbWUpO1xuXHRcdFx0XHRydW5uaW5nID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RWxlbWVudCAmIEVsZW1lbnRDU1NJbmxpbmVTdHlsZX0gbm9kZVxuICogQHBhcmFtIHtUcmFuc2l0aW9uRm59IGZuXG4gKiBAcGFyYW0ge2FueX0gcGFyYW1zXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGludHJvXG4gKiBAcmV0dXJucyB7eyBydW4oYjogMCB8IDEpOiB2b2lkOyBlbmQoKTogdm9pZDsgfX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZV9iaWRpcmVjdGlvbmFsX3RyYW5zaXRpb24obm9kZSwgZm4sIHBhcmFtcywgaW50cm8pIHtcblx0LyoqXG5cdCAqIEB0eXBlIHtUcmFuc2l0aW9uT3B0aW9uc30gKi9cblx0Y29uc3Qgb3B0aW9ucyA9IHsgZGlyZWN0aW9uOiAnYm90aCcgfTtcblx0bGV0IGNvbmZpZyA9IGZuKG5vZGUsIHBhcmFtcywgb3B0aW9ucyk7XG5cdGxldCB0ID0gaW50cm8gPyAwIDogMTtcblxuXHQvKipcblx0ICogQHR5cGUge1Byb2dyYW0gfCBudWxsfSAqL1xuXHRsZXQgcnVubmluZ19wcm9ncmFtID0gbnVsbDtcblxuXHQvKipcblx0ICogQHR5cGUge1BlbmRpbmdQcm9ncmFtIHwgbnVsbH0gKi9cblx0bGV0IHBlbmRpbmdfcHJvZ3JhbSA9IG51bGw7XG5cdGxldCBhbmltYXRpb25fbmFtZSA9IG51bGw7XG5cblx0LyoqIEB0eXBlIHtib29sZWFufSAqL1xuXHRsZXQgb3JpZ2luYWxfaW5lcnRfdmFsdWU7XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfSAqL1xuXHRmdW5jdGlvbiBjbGVhcl9hbmltYXRpb24oKSB7XG5cdFx0aWYgKGFuaW1hdGlvbl9uYW1lKSBkZWxldGVfcnVsZShub2RlLCBhbmltYXRpb25fbmFtZSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtQZW5kaW5nUHJvZ3JhbX0gcHJvZ3JhbVxuXHQgKiBAcGFyYW0ge251bWJlcn0gZHVyYXRpb25cblx0ICogQHJldHVybnMge1Byb2dyYW19XG5cdCAqL1xuXHRmdW5jdGlvbiBpbml0KHByb2dyYW0sIGR1cmF0aW9uKSB7XG5cdFx0Y29uc3QgZCA9IC8qKiBAdHlwZSB7UHJvZ3JhbVsnZCddfSAqLyAocHJvZ3JhbS5iIC0gdCk7XG5cdFx0ZHVyYXRpb24gKj0gTWF0aC5hYnMoZCk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGE6IHQsXG5cdFx0XHRiOiBwcm9ncmFtLmIsXG5cdFx0XHRkLFxuXHRcdFx0ZHVyYXRpb24sXG5cdFx0XHRzdGFydDogcHJvZ3JhbS5zdGFydCxcblx0XHRcdGVuZDogcHJvZ3JhbS5zdGFydCArIGR1cmF0aW9uLFxuXHRcdFx0Z3JvdXA6IHByb2dyYW0uZ3JvdXBcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7SU5UUk8gfCBPVVRST30gYlxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdGZ1bmN0aW9uIGdvKGIpIHtcblx0XHRjb25zdCB7XG5cdFx0XHRkZWxheSA9IDAsXG5cdFx0XHRkdXJhdGlvbiA9IDMwMCxcblx0XHRcdGVhc2luZyA9IGxpbmVhcixcblx0XHRcdHRpY2sgPSBub29wLFxuXHRcdFx0Y3NzXG5cdFx0fSA9IGNvbmZpZyB8fCBudWxsX3RyYW5zaXRpb247XG5cblx0XHQvKipcblx0XHQgKiBAdHlwZSB7UGVuZGluZ1Byb2dyYW19ICovXG5cdFx0Y29uc3QgcHJvZ3JhbSA9IHtcblx0XHRcdHN0YXJ0Oi
41Bub3coKSArIGRlbGF5LFxuXHRcdFx0YlxuXHRcdH07XG5cblx0XHRpZiAoIWIpIHtcblx0XHRcdC8vIEB0cy1pZ25vcmUgdG9kbzogaW1wcm92ZSB0eXBpbmdzXG5cdFx0XHRwcm9ncmFtLmdyb3VwID0gb3V0cm9zO1xuXHRcdFx0b3V0cm9zLnIgKz0gMTtcblx0XHR9XG5cblx0XHRpZiAoJ2luZXJ0JyBpbiBub2RlKSB7XG5cdFx0XHRpZiAoYikge1xuXHRcdFx0XHRpZiAob3JpZ2luYWxfaW5lcnRfdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdC8vIGFib3J0ZWQvcmV2ZXJzZWQgb3V0cm8g4oCUIHJlc3RvcmUgcHJldmlvdXMgaW5lcnQgdmFsdWVcblx0XHRcdFx0XHRub2RlLmluZXJ0ID0gb3JpZ2luYWxfaW5lcnRfdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9yaWdpbmFsX2luZXJ0X3ZhbHVlID0gLyoqIEB0eXBlIHtIVE1MRWxlbWVudH0gKi8gKG5vZGUpLmluZXJ0O1xuXHRcdFx0XHRub2RlLmluZXJ0ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAocnVubmluZ19wcm9ncmFtIHx8IHBlbmRpbmdfcHJvZ3JhbSkge1xuXHRcdFx0cGVuZGluZ19wcm9ncmFtID0gcHJvZ3JhbTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gaWYgdGhpcyBpcyBhbiBpbnRybywgYW5kIHRoZXJlJ3MgYSBkZWxheSwgd2UgbmVlZCB0byBkb1xuXHRcdFx0Ly8gYW4gaW5pdGlhbCB0aWNrIGFuZC9vciBhcHBseSBDU1MgYW5pbWF0aW9uIGltbWVkaWF0ZWx5XG5cdFx0XHRpZiAoY3NzKSB7XG5cdFx0XHRcdGNsZWFyX2FuaW1hdGlvbigpO1xuXHRcdFx0XHRhbmltYXRpb25fbmFtZSA9IGNyZWF0ZV9ydWxlKG5vZGUsIHQsIGIsIGR1cmF0aW9uLCBkZWxheSwgZWFzaW5nLCBjc3MpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGIpIHRpY2soMCwgMSk7XG5cdFx0XHRydW5uaW5nX3Byb2dyYW0gPSBpbml0KHByb2dyYW0sIGR1cmF0aW9uKTtcblx0XHRcdGFkZF9yZW5kZXJfY2FsbGJhY2soKCkgPT4gZGlzcGF0Y2gobm9kZSwgYiwgJ3N0YXJ0JykpO1xuXHRcdFx0bG9vcCgobm93KSA9PiB7XG5cdFx0XHRcdGlmIChwZW5kaW5nX3Byb2dyYW0gJiYgbm93ID4gcGVuZGluZ19wcm9ncmFtLnN0YXJ0KSB7XG5cdFx0XHRcdFx0cnVubmluZ19wcm9ncmFtID0gaW5pdChwZW5kaW5nX3Byb2dyYW0sIGR1cmF0aW9uKTtcblx0XHRcdFx0XHRwZW5kaW5nX3Byb2dyYW0gPSBudWxsO1xuXHRcdFx0XHRcdGRpc3BhdGNoKG5vZGUsIHJ1bm5pbmdfcHJvZ3JhbS5iLCAnc3RhcnQnKTtcblx0XHRcdFx0XHRpZiAoY3NzKSB7XG5cdFx0XHRcdFx0XHRjbGVhcl9hbmltYXRpb24oKTtcblx0XHRcdFx0XHRcdGFuaW1hdGlvbl9uYW1lID0gY3JlYXRlX3J1bGUoXG5cdFx0XHRcdFx0XHRcdG5vZGUsXG5cdFx0XHRcdFx0XHRcdHQsXG5cdFx0XHRcdFx0XHRcdHJ1bm5pbmdfcHJvZ3JhbS5iLFxuXHRcdFx0XHRcdFx0XHRydW5uaW5nX3Byb2dyYW0uZHVyYXRpb24sXG5cdFx0XHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0XHRcdGVhc2luZyxcblx0XHRcdFx0XHRcdFx0Y29uZmlnLmNzc1xuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKHJ1bm5pbmdfcHJvZ3JhbSkge1xuXHRcdFx0XHRcdGlmIChub3cgPj0gcnVubmluZ19wcm9ncmFtLmVuZCkge1xuXHRcdFx0XHRcdFx0dGljaygodCA9IHJ1bm5pbmdfcHJvZ3JhbS5iKSwgMSAtIHQpO1xuXHRcdFx0XHRcdFx0ZGlzcGF0Y2gobm9kZSwgcnVubmluZ19wcm9ncmFtLmIsICdlbmQnKTtcblx0XHRcdFx0XHRcdGlmICghcGVuZGluZ19wcm9ncmFtKSB7XG5cdFx0XHRcdFx0XHRcdC8vIHdlJ3JlIGRvbmVcblx0XHRcdFx0XHRcdFx0aWYgKHJ1bm5pbmdfcHJvZ3JhbS5iKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gaW50cm8g4oCUIHdlIGNhbiB0aWR5IHVwIGltbWVkaWF0ZWx5XG5cdFx0XHRcdFx0XHRcdFx0Y2xlYXJfYW5pbWF0aW9uKCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gb3V0cm8g4oCUIG5lZWRzIHRvIGJlIGNvb3JkaW5hdGVkXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCEtLXJ1bm5pbmdfcHJvZ3JhbS5ncm91cC5yKSBydW5fYWxsKHJ1bm5pbmdfcHJvZ3JhbS5ncm91cC5jKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cnVubmluZ19wcm9ncmFtID0gbnVsbDtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKG5vdyA+PSBydW5uaW5nX3Byb2dyYW0uc3RhcnQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHAgPSBub3cgLSBydW5uaW5nX3Byb2dyYW0uc3RhcnQ7XG5cdFx0XHRcdFx0XHR0ID0gcnVubmluZ19wcm9ncmFtLmEgKyBydW5uaW5nX3Byb2dyYW0uZCAqIGVhc2luZyhwIC8gcnVubmluZ19wcm9ncmFtLmR1cmF0aW9uKTtcblx0XHRcdFx0XHRcdHRpY2sodCwgMSAtIHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gISEocnVubmluZ19wcm9ncmFtIHx8IHBlbmRpbmdfcHJvZ3JhbSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHtcblx0XHRydW4oYikge1xuXHRcdFx0aWYgKGlzX2Z1bmN0aW9uKGNvbmZpZykpIHtcblx0XHRcdFx0d2FpdCgpLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IG9wdHMgPSB7IGRpcmVjdGlvbjogYiA/ICdpbicgOiAnb3V0JyB9O1xuXHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0XHRjb25maWcgPSBjb25maWcob3B0cyk7XG5cdFx0XHRcdFx0Z28oYik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Z28oYik7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRlbmQoKSB7XG5cdFx0XHRjbGVhcl9hbmltYXRpb24oKTtcblx0XHRcdHJ1bm5pbmdfcHJvZ3JhbSA9IHBlbmRpbmdfcHJvZ3JhbSA9IG51bGw7XG5cdFx0fVxuXHR9O1xufVxuXG4vKiogQHR5cGVkZWYgezF9IElOVFJPICovXG4vKiogQHR5cGVkZWYgezB9IE9VVFJPICovXG4vKiogQHR5cGVkZWYge3sgZGlyZWN0aW9uOiAnaW4nIHwgJ291dCcgfCAnYm90aCcgfX0gVHJhbnNpdGlvbk9wdGlvbnMgKi9cbi8qKiBAdHlwZWRlZiB7KG5vZGU6IEVsZW1lbnQsIHBhcmFtczogYW55LCBvcHRpb25zOiBUcmFuc2l0aW9uT3B0aW9ucykgPT4gaW1wb3J0KCcuLi90cmFuc2l0aW9uL3B1YmxpYy5qcycpLlRyYW5zaXRpb25Db25maWd9IFRyYW5zaXRpb25GbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IE91dHJvXG4gKiBAcHJvcGVydHkge251bWJlcn0gclxuICogQHByb3BlcnR5IHtGdW5jdGlvbltdfSBjXG4gKiBAcHJvcGVydHkge09iamVjdH0gcFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUGVuZGluZ1Byb2dyYW1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBzdGFydFxuICogQHByb3BlcnR5IHtJTlRST3xPVVRST30gYlxuICogQHByb3BlcnR5IHtPdXRyb30gW2dyb3VwXVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUHJvZ3JhbVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGFcbiAqIEBwcm9wZXJ0eSB7SU5UUk98T1VUUk99IGJcbiAqIEBwcm9wZXJ0eSB7MXwtMX0gZFxuICogQHByb3BlcnR5IHtudW1iZXJ9IGR1cmF0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gc3RhcnRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBlbmRcbiAqIEBwcm9wZXJ0eSB7T3V0cm99IFtncm91cF1cbiAqL1xuIiwiaW1wb3J0IHsgaXNfcHJvbWlzZSB9IGZyb20gJy4vdXRpbHMuanMnO1xuaW1wb3J0IHsgY2hlY2tfb3V0cm9zLCBncm91cF9vdXRyb3MsIHRyYW5zaXRpb25faW4sIHRyYW5zaXRpb25fb3V0IH0gZnJvbSAnLi90cmFuc2l0aW9ucy5qcyc7XG5pbXBvcnQgeyBmbHVzaCB9IGZyb20gJy4vc2NoZWR1bGVyLmpzJztcbmltcG9ydCB7
41IGdldF9jdXJyZW50X2NvbXBvbmVudCwgc2V0X2N1cnJlbnRfY29tcG9uZW50IH0gZnJvbSAnLi9saWZlY3ljbGUuanMnO1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAcGFyYW0ge1Byb21pc2U8VD59IHByb21pc2VcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3ByaXZhdGUuanMnKS5Qcm9taXNlSW5mbzxUPn0gaW5mb1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVfcHJvbWlzZShwcm9taXNlLCBpbmZvKSB7XG5cdGNvbnN0IHRva2VuID0gKGluZm8udG9rZW4gPSB7fSk7XG5cdC8qKlxuXHQgKiBAcGFyYW0ge2ltcG9ydCgnLi9wcml2YXRlLmpzJykuRnJhZ21lbnRGYWN0b3J5fSB0eXBlXG5cdCAqIEBwYXJhbSB7MCB8IDEgfCAyfSBpbmRleFxuXHQgKiBAcGFyYW0ge251bWJlcn0gW2tleV1cblx0ICogQHBhcmFtIHthbnl9IFt2YWx1ZV1cblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRmdW5jdGlvbiB1cGRhdGUodHlwZSwgaW5kZXgsIGtleSwgdmFsdWUpIHtcblx0XHRpZiAoaW5mby50b2tlbiAhPT0gdG9rZW4pIHJldHVybjtcblx0XHRpbmZvLnJlc29sdmVkID0gdmFsdWU7XG5cdFx0bGV0IGNoaWxkX2N0eCA9IGluZm8uY3R4O1xuXHRcdGlmIChrZXkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y2hpbGRfY3R4ID0gY2hpbGRfY3R4LnNsaWNlKCk7XG5cdFx0XHRjaGlsZF9jdHhba2V5XSA9IHZhbHVlO1xuXHRcdH1cblx0XHRjb25zdCBibG9jayA9IHR5cGUgJiYgKGluZm8uY3VycmVudCA9IHR5cGUpKGNoaWxkX2N0eCk7XG5cdFx0bGV0IG5lZWRzX2ZsdXNoID0gZmFsc2U7XG5cdFx0aWYgKGluZm8uYmxvY2spIHtcblx0XHRcdGlmIChpbmZvLmJsb2Nrcykge1xuXHRcdFx0XHRpbmZvLmJsb2Nrcy5mb3JFYWNoKChibG9jaywgaSkgPT4ge1xuXHRcdFx0XHRcdGlmIChpICE9PSBpbmRleCAmJiBibG9jaykge1xuXHRcdFx0XHRcdFx0Z3JvdXBfb3V0cm9zKCk7XG5cdFx0XHRcdFx0XHR0cmFuc2l0aW9uX291dChibG9jaywgMSwgMSwgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoaW5mby5ibG9ja3NbaV0gPT09IGJsb2NrKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5mby5ibG9ja3NbaV0gPSBudWxsO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGNoZWNrX291dHJvcygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpbmZvLmJsb2NrLmQoMSk7XG5cdFx0XHR9XG5cdFx0XHRibG9jay5jKCk7XG5cdFx0XHR0cmFuc2l0aW9uX2luKGJsb2NrLCAxKTtcblx0XHRcdGJsb2NrLm0oaW5mby5tb3VudCgpLCBpbmZvLmFuY2hvcik7XG5cdFx0XHRuZWVkc19mbHVzaCA9IHRydWU7XG5cdFx0fVxuXHRcdGluZm8uYmxvY2sgPSBibG9jaztcblx0XHRpZiAoaW5mby5ibG9ja3MpIGluZm8uYmxvY2tzW2luZGV4XSA9IGJsb2NrO1xuXHRcdGlmIChuZWVkc19mbHVzaCkge1xuXHRcdFx0Zmx1c2goKTtcblx0XHR9XG5cdH1cblx0aWYgKGlzX3Byb21pc2UocHJvbWlzZSkpIHtcblx0XHRjb25zdCBjdXJyZW50X2NvbXBvbmVudCA9IGdldF9jdXJyZW50X2NvbXBvbmVudCgpO1xuXHRcdHByb21pc2UudGhlbihcblx0XHRcdCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRzZXRfY3VycmVudF9jb21wb25lbnQoY3VycmVudF9jb21wb25lbnQpO1xuXHRcdFx0XHR1cGRhdGUoaW5mby50aGVuLCAxLCBpbmZvLnZhbHVlLCB2YWx1ZSk7XG5cdFx0XHRcdHNldF9jdXJyZW50X2NvbXBvbmVudChudWxsKTtcblx0XHRcdH0sXG5cdFx0XHQoZXJyb3IpID0+IHtcblx0XHRcdFx0c2V0X2N1cnJlbnRfY29tcG9uZW50KGN1cnJlbnRfY29tcG9uZW50KTtcblx0XHRcdFx0dXBkYXRlKGluZm8uY2F0Y2gsIDIsIGluZm8uZXJyb3IsIGVycm9yKTtcblx0XHRcdFx0c2V0X2N1cnJlbnRfY29tcG9uZW50KG51bGwpO1xuXHRcdFx0XHRpZiAoIWluZm8uaGFzQ2F0Y2gpIHtcblx0XHRcdFx0XHR0aHJvdyBlcnJvcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdCk7XG5cdFx0Ly8gaWYgd2UgcHJldmlvdXNseSBoYWQgYSB0aGVuL2NhdGNoIGJsb2NrLCBkZXN0cm95IGl0XG5cdFx0aWYgKGluZm8uY3VycmVudCAhPT0gaW5mby5wZW5kaW5nKSB7XG5cdFx0XHR1cGRhdGUoaW5mby5wZW5kaW5nLCAwKTtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRpZiAoaW5mby5jdXJyZW50ICE9PSBpbmZvLnRoZW4pIHtcblx0XHRcdHVwZGF0ZShpbmZvLnRoZW4sIDEsIGluZm8udmFsdWUsIHByb21pc2UpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGluZm8ucmVzb2x2ZWQgPSAvKiogQHR5cGUge1R9ICovIChwcm9taXNlKTtcblx0fVxufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlX2F3YWl0X2Jsb2NrX2JyYW5jaChpbmZvLCBjdHgsIGRpcnR5KSB7XG5cdGNvbnN0IGNoaWxkX2N0eCA9IGN0eC5zbGljZSgpO1xuXHRjb25zdCB7IHJlc29sdmVkIH0gPSBpbmZvO1xuXHRpZiAoaW5mby5jdXJyZW50ID09PSBpbmZvLnRoZW4pIHtcblx0XHRjaGlsZF9jdHhbaW5mby52YWx1ZV0gPSByZXNvbHZlZDtcblx0fVxuXHRpZiAoaW5mby5jdXJyZW50ID09PSBpbmZvLmNhdGNoKSB7XG5cdFx0Y2hpbGRfY3R4W2luZm8uZXJyb3JdID0gcmVzb2x2ZWQ7XG5cdH1cblx0aW5mby5ibG9jay5wKGNoaWxkX2N0eCwgZGlydHkpO1xufVxuIiwiaW1wb3J0IHsgdHJhbnNpdGlvbl9pbiwgdHJhbnNpdGlvbl9vdXQgfSBmcm9tICcuL3RyYW5zaXRpb25zLmpzJztcbmltcG9ydCB7IHJ1bl9hbGwgfSBmcm9tICcuL3V0aWxzLmpzJztcblxuLy8gZ2VuZXJhbCBlYWNoIGZ1bmN0aW9uczpcblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZV9hcnJheV9saWtlKGFycmF5X2xpa2Vfb3JfaXRlcmF0b3IpIHtcblx0cmV0dXJuIGFycmF5X2xpa2Vfb3JfaXRlcmF0b3I/Lmxlbmd0aCAhPT0gdW5kZWZpbmVkXG5cdFx0PyBhcnJheV9saWtlX29yX2l0ZXJhdG9yXG5cdFx0OiBBcnJheS5mcm9tKGFycmF5X2xpa2Vfb3JfaXRlcmF0b3IpO1xufVxuXG4vLyBrZXllZCBlYWNoIGZ1bmN0aW9uczpcblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCkge1xuXHRibG9jay5kKDEpO1xuXHRsb29rdXAuZGVsZXRlKGJsb2NrLmtleSk7XG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBvdXRyb19hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG5cdHRyYW5zaXRpb25fb3V0KGJsb2NrLCAxLCAxLCAoKSA9PiB7XG5cdFx0bG9va3VwLmRlbGV0ZShibG9jay5rZXkpO1xuXHR9KTtcbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpeF9hbmRfZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKSB7XG5cdGJsb2NrLmYoKTtcblx0ZGVzdHJveV9ibG9jayhibG9jaywgbG9va3VwKTtcbn1cblxuLyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpeF9hbmRfb3V0cm9fYW5kX2Rlc3Ryb3lfYmxvY2soYmxvY2ssIGxvb2t1cCkge1xuXHRibG9jay5mKCk7XG5cdG91dHJvX2FuZF9kZXN0cm95X2Jsb2NrKGJsb2NrLCBsb29rdXApO1xufVxuXG4vKiogQHJldHVybnMge2FueVtdfSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZV9rZXllZF9lYWNoKFxuXHRvbGRfYmxvY2tzLFxuXHRkaXJ0eSxcblx0Z2V0X2tleSxcblx0ZHluYW1pYyxcblx0Y3R4LFxuXHRsaXN0LFxuXHRsb29rdXAsXG5cdG5vZGUsXG5cdGRlc3Ryb3ksXG5cdGNyZWF0ZV9lYWNoX2Jsb2NrLFxuXHRuZXh0LFxuXHRnZXRfY29udGV4dFxuKSB7XG5cdGxldCBvID0gb2xkX2Jsb2Nrcy5sZW5ndGg7XG5cdGxldCBuID0gbGlzdC5sZW5ndGg7XG5cdGxldCBpID0gbztcblx0Y29uc3Qgb2xkX2luZGV4ZXMgPSB7fTtcblx0d2hpbGUgKGktLSkgb2xkX2luZGV4ZXNbb2xkX2Jsb2Nrc1tpXS5rZXldID0gaTtcblx0Y29uc3QgbmV3X2Jsb2NrcyA9IFtdO1xuXHRjb25zdCBuZXdfbG9va3VwID0gbmV3IE1hcCgpO1xuXHRjb25zdCBkZWx0YXMgPSBuZXcgTWFwKCk7XG5cdGNvbnN0IHVwZGF0ZXMgPSBbXTtcblx0aSA9IG47XG5cdHdoaWxlIChpLS0pIHtcblx0XHRjb25zdCBjaGlsZF9jdHggPSBnZXRfY29udGV4dChjdHgsIGxpc3QsIGkpO1xuXHRcdGNvbnN0IGtleSA9IGdldF9rZXkoY2hpbGRfY3R4KTtcblx0XHRsZXQgYmxvY2sgPSBsb29rdXAuZ2V0KGtleSk7XG5cdFx0aWYgKCFibG9jaykge1xuXHRcdFx0YmxvY2sgPSBjcmVhdGVfZWFjaF9ibG9jayhrZXksIGNoaWxkX2N0eCk7XG5cdFx0XHRibG9jay5jKCk7XG5cdFx0fSBlbHNlIGlmIChkeW5hbWljKSB7XG5cdFx0XHQvLyBkZWZlciB1cGRhdGVzIHVudGlsIGFsbCB0aGUgRE9NIHNodWZmbGluZyBpcyBkb25lXG5cdFx0XHR1cGRhdGVzLnB1c2goKCkgPT4gYmxvY2sucChjaGlsZF9jdHgsIGRpcnR5KSk7XG5cdFx0fVxuXHRcdG5ld19sb29rdXAu
41c2V0KGtleSwgKG5ld19ibG9ja3NbaV0gPSBibG9jaykpO1xuXHRcdGlmIChrZXkgaW4gb2xkX2luZGV4ZXMpIGRlbHRhcy5zZXQoa2V5LCBNYXRoLmFicyhpIC0gb2xkX2luZGV4ZXNba2V5XSkpO1xuXHR9XG5cdGNvbnN0IHdpbGxfbW92ZSA9IG5ldyBTZXQoKTtcblx0Y29uc3QgZGlkX21vdmUgPSBuZXcgU2V0KCk7XG5cdC8qKiBAcmV0dXJucyB7dm9pZH0gKi9cblx0ZnVuY3Rpb24gaW5zZXJ0KGJsb2NrKSB7XG5cdFx0dHJhbnNpdGlvbl9pbihibG9jaywgMSk7XG5cdFx0YmxvY2subShub2RlLCBuZXh0KTtcblx0XHRsb29rdXAuc2V0KGJsb2NrLmtleSwgYmxvY2spO1xuXHRcdG5leHQgPSBibG9jay5maXJzdDtcblx0XHRuLS07XG5cdH1cblx0d2hpbGUgKG8gJiYgbikge1xuXHRcdGNvbnN0IG5ld19ibG9jayA9IG5ld19ibG9ja3NbbiAtIDFdO1xuXHRcdGNvbnN0IG9sZF9ibG9jayA9IG9sZF9ibG9ja3NbbyAtIDFdO1xuXHRcdGNvbnN0IG5ld19rZXkgPSBuZXdfYmxvY2sua2V5O1xuXHRcdGNvbnN0IG9sZF9rZXkgPSBvbGRfYmxvY2sua2V5O1xuXHRcdGlmIChuZXdfYmxvY2sgPT09IG9sZF9ibG9jaykge1xuXHRcdFx0Ly8gZG8gbm90aGluZ1xuXHRcdFx0bmV4dCA9IG5ld19ibG9jay5maXJzdDtcblx0XHRcdG8tLTtcblx0XHRcdG4tLTtcblx0XHR9IGVsc2UgaWYgKCFuZXdfbG9va3VwLmhhcyhvbGRfa2V5KSkge1xuXHRcdFx0Ly8gcmVtb3ZlIG9sZCBibG9ja1xuXHRcdFx0ZGVzdHJveShvbGRfYmxvY2ssIGxvb2t1cCk7XG5cdFx0XHRvLS07XG5cdFx0fSBlbHNlIGlmICghbG9va3VwLmhhcyhuZXdfa2V5KSB8fCB3aWxsX21vdmUuaGFzKG5ld19rZXkpKSB7XG5cdFx0XHRpbnNlcnQobmV3X2Jsb2NrKTtcblx0XHR9IGVsc2UgaWYgKGRpZF9tb3ZlLmhhcyhvbGRfa2V5KSkge1xuXHRcdFx0by0tO1xuXHRcdH0gZWxzZSBpZiAoZGVsdGFzLmdldChuZXdfa2V5KSA+IGRlbHRhcy5nZXQob2xkX2tleSkpIHtcblx0XHRcdGRpZF9tb3ZlLmFkZChuZXdfa2V5KTtcblx0XHRcdGluc2VydChuZXdfYmxvY2spO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3aWxsX21vdmUuYWRkKG9sZF9rZXkpO1xuXHRcdFx0by0tO1xuXHRcdH1cblx0fVxuXHR3aGlsZSAoby0tKSB7XG5cdFx0Y29uc3Qgb2xkX2Jsb2NrID0gb2xkX2Jsb2Nrc1tvXTtcblx0XHRpZiAoIW5ld19sb29rdXAuaGFzKG9sZF9ibG9jay5rZXkpKSBkZXN0cm95KG9sZF9ibG9jaywgbG9va3VwKTtcblx0fVxuXHR3aGlsZSAobikgaW5zZXJ0KG5ld19ibG9ja3NbbiAtIDFdKTtcblx0cnVuX2FsbCh1cGRhdGVzKTtcblx0cmV0dXJuIG5ld19ibG9ja3M7XG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZV9lYWNoX2tleXMoY3R4LCBsaXN0LCBnZXRfY29udGV4dCwgZ2V0X2tleSkge1xuXHRjb25zdCBrZXlzID0gbmV3IE1hcCgpO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRjb25zdCBrZXkgPSBnZXRfa2V5KGdldF9jb250ZXh0KGN0eCwgbGlzdCwgaSkpO1xuXHRcdGlmIChrZXlzLmhhcyhrZXkpKSB7XG5cdFx0XHRsZXQgdmFsdWUgPSAnJztcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHZhbHVlID0gYHdpdGggdmFsdWUgJyR7U3RyaW5nKGtleSl9JyBgO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHQvLyBjYW4ndCBzdHJpbmdpZnlcblx0XHRcdH1cblx0XHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdFx0YENhbm5vdCBoYXZlIGR1cGxpY2F0ZSBrZXlzIGluIGEga2V5ZWQgZWFjaDogS2V5cyBhdCBpbmRleCAke2tleXMuZ2V0KFxuXHRcdFx0XHRcdGtleVxuXHRcdFx0XHQpfSBhbmQgJHtpfSAke3ZhbHVlfWFyZSBkdXBsaWNhdGVzYFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0a2V5cy5zZXQoa2V5LCBpKTtcblx0fVxufVxuIiwiLyoqIEByZXR1cm5zIHt7fX0gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRfc3ByZWFkX3VwZGF0ZShsZXZlbHMsIHVwZGF0ZXMpIHtcblx0Y29uc3QgdXBkYXRlID0ge307XG5cdGNvbnN0IHRvX251bGxfb3V0ID0ge307XG5cdGNvbnN0IGFjY291bnRlZF9mb3IgPSB7ICQkc2NvcGU6IDEgfTtcblx0bGV0IGkgPSBsZXZlbHMubGVuZ3RoO1xuXHR3aGlsZSAoaS0tKSB7XG5cdFx0Y29uc3QgbyA9IGxldmVsc1tpXTtcblx0XHRjb25zdCBuID0gdXBkYXRlc1tpXTtcblx0XHRpZiAobikge1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgaW4gbykge1xuXHRcdFx0XHRpZiAoIShrZXkgaW4gbikpIHRvX251bGxfb3V0W2tleV0gPSAxO1xuXHRcdFx0fVxuXHRcdFx0Zm9yIChjb25zdCBrZXkgaW4gbikge1xuXHRcdFx0XHRpZiAoIWFjY291bnRlZF9mb3Jba2V5XSkge1xuXHRcdFx0XHRcdHVwZGF0ZVtrZXldID0gbltrZXldO1xuXHRcdFx0XHRcdGFjY291bnRlZF9mb3Jba2V5XSA9IDE7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGxldmVsc1tpXSA9IG47XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoY29uc3Qga2V5IGluIG8pIHtcblx0XHRcdFx0YWNjb3VudGVkX2ZvcltrZXldID0gMTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Zm9yIChjb25zdCBrZXkgaW4gdG9fbnVsbF9vdXQpIHtcblx0XHRpZiAoIShrZXkgaW4gdXBkYXRlKSkgdXBkYXRlW2tleV0gPSB1bmRlZmluZWQ7XG5cdH1cblx0cmV0dXJuIHVwZGF0ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldF9zcHJlYWRfb2JqZWN0KHNwcmVhZF9wcm9wcykge1xuXHRyZXR1cm4gdHlwZW9mIHNwcmVhZF9wcm9wcyA9PT0gJ29iamVjdCcgJiYgc3ByZWFkX3Byb3BzICE9PSBudWxsID8gc3ByZWFkX3Byb3BzIDoge307XG59XG4iLCJpbXBvcnQge1xuXHRhZGRfcmVuZGVyX2NhbGxiYWNrLFxuXHRmbHVzaCxcblx0Zmx1c2hfcmVuZGVyX2NhbGxiYWNrcyxcblx0c2NoZWR1bGVfdXBkYXRlLFxuXHRkaXJ0eV9jb21wb25lbnRzXG59IGZyb20gJy4vc2NoZWR1bGVyLmpzJztcbmltcG9ydCB7IGN1cnJlbnRfY29tcG9uZW50LCBzZXRfY3VycmVudF9jb21wb25lbnQgfSBmcm9tICcuL2xpZmVjeWNsZS5qcyc7XG5pbXBvcnQgeyBibGFua19vYmplY3QsIGlzX2VtcHR5LCBpc19mdW5jdGlvbiwgcnVuLCBydW5fYWxsLCBub29wIH0gZnJvbSAnLi91dGlscy5qcyc7XG5pbXBvcnQge1xuXHRjaGlsZHJlbixcblx0ZGV0YWNoLFxuXHRzdGFydF9oeWRyYXRpbmcsXG5cdGVuZF9oeWRyYXRpbmcsXG5cdGdldF9jdXN0b21fZWxlbWVudHNfc2xvdHMsXG5cdGluc2VydCxcblx0ZWxlbWVudCxcblx0YXR0clxufSBmcm9tICcuL2RvbS5qcyc7XG5pbXBvcnQgeyB0cmFuc2l0aW9uX2luIH0gZnJvbSAnLi90cmFuc2l0aW9ucy5qcyc7XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBiaW5kKGNvbXBvbmVudCwgbmFtZSwgY2FsbGJhY2spIHtcblx0Y29uc3QgaW5kZXggPSBjb21wb25lbnQuJCQucHJvcHNbbmFtZV07XG5cdGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0Y29tcG9uZW50LiQkLmJvdW5kW2luZGV4XSA9IGNhbGxiYWNrO1xuXHRcdGNhbGxiYWNrKGNvbXBvbmVudC4kJC5jdHhbaW5kZXhdKTtcblx0fVxufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlX2NvbXBvbmVudChibG9jaykge1xuXHRibG9jayAmJiBibG9jay5jKCk7XG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFpbV9jb21wb25lbnQoYmxvY2ssIHBhcmVudF9ub2Rlcykge1xuXHRibG9jayAmJiBibG9jay5sKHBhcmVudF9ub2Rlcyk7XG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb3VudF9jb21wb25lbnQoY29tcG9uZW50LCB0YXJnZXQsIGFuY2hvcikge1xuXHRjb25zdCB7IGZyYWdtZW50LCBhZnRlcl91cGRhdGUgfSA9IGNvbXBvbmVudC4kJDtcblx0ZnJhZ21lbnQgJiYgZnJhZ21lbnQubSh0YXJnZXQsIGFuY2hvcik7XG5cdC8vIG9uTW91bnQgaGFwcGVucyBiZWZvcmUgdGhlIGluaXRpYWwgYWZ0ZXJVcGRhdGVcblx0YWRkX3JlbmRlcl9jYWxsYmFjaygoKSA9PiB7XG5cdFx0Y29uc3QgbmV3X29uX2Rlc3Ryb3kgPSBjb21wb25lbnQuJCQub25fbW91bnQubWFwKHJ1bikuZmlsdGVyKGlzX2Z1bmN0aW9uKTtcblx0XHQvLyBpZiB0aGUgY29tcG9uZW50IHdhcyBkZXN0cm95ZWQgaW1tZWRpYXRlbHlcblx0XHQvLyBpdCB3aWxsIHVwZGF0ZSB0aGUgYCQkLm9uX2Rlc3Ryb3lgIHJlZmVyZW5jZSB0byBgbnVsbGAuXG5cdFx0Ly8gdGhlIGRlc3RydWN0dXJlZCBvbl9kZXN0cm95IG1heSBzdGlsbCByZWZlcmVuY2UgdG8gdGhlIG9sZCBhcnJheVxuXHRcdGlmIChjb21wb25lbnQuJCQub25fZGVzdHJveSkge1xuXHRcdFx0Y29tcG9uZW50LiQkLm9uX2Rlc3Ryb3kucHVzaCguLi5uZXdfb25fZGVzdHJveSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIEVkZ2UgY2FzZSAtIGNvbXBvbmVudCB3YXMgZGVzdHJveWVkIGltbWVkaWF0ZWx5LFxuXHRcdFx0Ly8gbW9zdCBsaWtlbHkgYXMgYSByZXN1bHQgb2YgYSBiaW5kaW5nIGluaXRpYWxpc2luZ1xuXHRcdFx0cnVuX2FsbChuZXdfb25fZGVzdHJveSk7XG5cdFx0fVxuXHRcdGNvbXBvbmVudC4kJC5vbl9tb3VudCA9IFtdO1xuXHR9KTtcblx0YWZ0ZXJfdXBkYXRlLmZvckVhY2goYWRkX3JlbmRlcl9jYWxsYmFjayk7XG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXN0cm95X2NvbXBvbmVudChjb21wb25lbnQsIGRldGFjaGluZykge1xuXHRjb25zdCAkJCA9IGNvbXBvbmVudC4kJDtcblx0aWYgKCQkLmZyYWdtZW50ICE9PSBudWxsKSB7XG5cdFx0Zmx1c2hfcmVuZGVyX2NhbGxiYWNrcygkJC5hZnRlcl91cGRhdGUpO1xuXHRcdHJ1bl9hbGwoJCQub25fZGVzdHJveSk7XG5cdFx0JCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQuZChkZXRhY2hpbmcpO1xuXHRcdC8vIFRPRE8gbnVsbCBvdXQgb3RoZXIgcmVmcywgaW5jbHVkaW5nIGNvbXBvbmVudC4kJCAoYnV0IG5lZWQgdG9cblx0XHQvLyBwcmVzZXJ2ZSBmaW5hbCBzdGF0ZT8pXG5cdFx0JCQub25fZGVzdHJveSA9ICQkLmZyYWdtZW50ID0gbnVsbDtcblx0XHQkJC5jdHggPSBbXTtcblx0fVxufVxuXG4vKiogQHJldHVybnMge3ZvaWR9ICovXG5mdW5jdGlvbiBtYWtlX2RpcnR5KGNvbXBvbmVudCwgaSkge1xuXHRpZiAoY29tcG9uZW50LiQkLmRpcnR5WzBdID09PSAtMSkge1xuXHRcdGRpcnR5X2NvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuXHRcdHNjaGVkdWxlX3VwZGF0ZSgpO1xuXHRcdGNvbXBvbmVudC4kJC5kaXJ0eS5maWxsKDApO1xuXHR9XG5cdGNvbXBvbmVudC4kJC5kaXJ0eVsoaSAvIDMxKSB8IDBdIHw9IDEgPDwgaSAlIDMxO1xufVxuXG4vLyBUT0RPOiBEb2N1bWVudCB0aGUgb3RoZXIgcGFyYW1zXG4vKipcbiAqIEBwYXJhbSB7U3ZlbHRlQ29tcG9uZW50fSBjb21wb25lbnRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3B1YmxpYy5qcycpLkNvbXBvbmVudENvbnN0cnVjdG9yT3B0aW9uc30gb3B0aW9uc1xuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3V0aWxzLmpzJylbJ25vdF9lcXVhbCddfSBub3RfZXF1YWwgVXNlZCB0byBjb21wYXJlIHByb3BzIGFuZCBzdGF0ZSB2YWx1ZXMuXG4gKiBAcGFyYW0geyh0YXJnZXQ6IEVsZW1lbnQgfCBTaGFkb3dSb290KSA9PiB2b2lkfSBbYXBwZW5kX3N0eWxlc10gRnVuY3Rpb24gdGhhdCBhcHBlbmRzIHN0eWxlcyB0byB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBmaXJzdCBpbml0aWFsaXNlZC5cbiAqIFRoaXMgd2lsbCBiZSB0aGUgYGFkZF9jc3NgIGZ1bmN0aW9uIGZyb20gdGhlIGNvbXBpbGVkIGNvbXBvbmVudC5cbiAqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXQoXG5cdGNvbXBvbmVudCxcblx0b3B0aW9ucyxcblx0aW5zdGFuY2UsXG5cdGNyZWF0ZV9mcmFnbWVudCxcblx0bm90X2VxdWFsLFxuXHRwcm9wcyxcblx0YXBwZW5kX3N0eWxlcyA9IG51bGwsXG5cdGRpcnR5ID0gWy0xXVxuKSB7XG5cdGNvbnN0IHBhcmVudF9jb21wb25lbnQgPSBjdXJyZW50X2NvbXBvbmVudDtcblx0c2V0X2N1cnJlbnRfY29tcG9uZW50KGNvbXBvbmVudCk7XG5cdC8qKiBAdHlwZSB7aW1wb3J0KCcuL3ByaXZhdGUuanMnKS5UJCR9ICovXG5cdGNvbnN0ICQkI
41D0gKGNvbXBvbmVudC4kJCA9IHtcblx0XHRmcmFnbWVudDogbnVsbCxcblx0XHRjdHg6IFtdLFxuXHRcdC8vIHN0YXRlXG5cdFx0cHJvcHMsXG5cdFx0dXBkYXRlOiBub29wLFxuXHRcdG5vdF9lcXVhbCxcblx0XHRib3VuZDogYmxhbmtfb2JqZWN0KCksXG5cdFx0Ly8gbGlmZWN5Y2xlXG5cdFx0b25fbW91bnQ6IFtdLFxuXHRcdG9uX2Rlc3Ryb3k6IFtdLFxuXHRcdG9uX2Rpc2Nvbm5lY3Q6IFtdLFxuXHRcdGJlZm9yZV91cGRhdGU6IFtdLFxuXHRcdGFmdGVyX3VwZGF0ZTogW10sXG5cdFx0Y29udGV4dDogbmV3IE1hcChvcHRpb25zLmNvbnRleHQgfHwgKHBhcmVudF9jb21wb25lbnQgPyBwYXJlbnRfY29tcG9uZW50LiQkLmNvbnRleHQgOiBbXSkpLFxuXHRcdC8vIGV2ZXJ5dGhpbmcgZWxzZVxuXHRcdGNhbGxiYWNrczogYmxhbmtfb2JqZWN0KCksXG5cdFx0ZGlydHksXG5cdFx0c2tpcF9ib3VuZDogZmFsc2UsXG5cdFx0cm9vdDogb3B0aW9ucy50YXJnZXQgfHwgcGFyZW50X2NvbXBvbmVudC4kJC5yb290XG5cdH0pO1xuXHRhcHBlbmRfc3R5bGVzICYmIGFwcGVuZF9zdHlsZXMoJCQucm9vdCk7XG5cdGxldCByZWFkeSA9IGZhbHNlO1xuXHQkJC5jdHggPSBpbnN0YW5jZVxuXHRcdD8gaW5zdGFuY2UoY29tcG9uZW50LCBvcHRpb25zLnByb3BzIHx8IHt9LCAoaSwgcmV0LCAuLi5yZXN0KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gcmVzdC5sZW5ndGggPyByZXN0WzBdIDogcmV0O1xuXHRcdFx0XHRpZiAoJCQuY3R4ICYmIG5vdF9lcXVhbCgkJC5jdHhbaV0sICgkJC5jdHhbaV0gPSB2YWx1ZSkpKSB7XG5cdFx0XHRcdFx0aWYgKCEkJC5za2lwX2JvdW5kICYmICQkLmJvdW5kW2ldKSAkJC5ib3VuZFtpXSh2YWx1ZSk7XG5cdFx0XHRcdFx0aWYgKHJlYWR5KSBtYWtlX2RpcnR5KGNvbXBvbmVudCwgaSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHQgIH0pXG5cdFx0OiBbXTtcblx0JCQudXBkYXRlKCk7XG5cdHJlYWR5ID0gdHJ1ZTtcblx0cnVuX2FsbCgkJC5iZWZvcmVfdXBkYXRlKTtcblx0Ly8gYGZhbHNlYCBhcyBhIHNwZWNpYWwgY2FzZSBvZiBubyBET00gY29tcG9uZW50XG5cdCQkLmZyYWdtZW50ID0gY3JlYXRlX2ZyYWdtZW50ID8gY3JlYXRlX2ZyYWdtZW50KCQkLmN0eCkgOiBmYWxzZTtcblx0aWYgKG9wdGlvbnMudGFyZ2V0KSB7XG5cdFx0aWYgKG9wdGlvbnMuaHlkcmF0ZSkge1xuXHRcdFx0c3RhcnRfaHlkcmF0aW5nKCk7XG5cdFx0XHQvLyBUT0RPOiB3aGF0IGlzIHRoZSBjb3JyZWN0IHR5cGUgaGVyZT9cblx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3Jcblx0XHRcdGNvbnN0IG5vZGVzID0gY2hpbGRyZW4ob3B0aW9ucy50YXJnZXQpO1xuXHRcdFx0JCQuZnJhZ21lbnQgJiYgJCQuZnJhZ21lbnQubChub2Rlcyk7XG5cdFx0XHRub2Rlcy5mb3JFYWNoKGRldGFjaCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG5cdFx0XHQkJC5mcmFnbWVudCAmJiAkJC5mcmFnbWVudC5jKCk7XG5cdFx0fVxuXHRcdGlmIChvcHRpb25zLmludHJvKSB0cmFuc2l0aW9uX2luKGNvbXBvbmVudC4kJC5mcmFnbWVudCk7XG5cdFx0bW91bnRfY29tcG9uZW50KGNvbXBvbmVudCwgb3B0aW9ucy50YXJnZXQsIG9wdGlvbnMuYW5jaG9yKTtcblx0XHRlbmRfaHlkcmF0aW5nKCk7XG5cdFx0Zmx1c2goKTtcblx0fVxuXHRzZXRfY3VycmVudF9jb21wb25lbnQocGFyZW50X2NvbXBvbmVudCk7XG59XG5cbmV4cG9ydCBsZXQgU3ZlbHRlRWxlbWVudDtcblxuaWYgKHR5cGVvZiBIVE1MRWxlbWVudCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRTdmVsdGVFbGVtZW50ID0gY2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG5cdFx0LyoqIFRoZSBTdmVsdGUgY29tcG9uZW50IGNvbnN0cnVjdG9yICovXG5cdFx0JCRjdG9yO1xuXHRcdC8qKiBTbG90cyAqL1xuXHRcdCQkcztcblx0XHQvKiogVGhlIFN2ZWx0ZSBjb21wb25lbnQgaW5zdGFuY2UgKi9cblx0XHQkJGM7XG5cdFx0LyoqIFdoZXRoZXIgb3Igbm90IHRoZSBjdXN0b20gZWxlbWVudCBpcyBjb25uZWN0ZWQgKi9cblx0XHQkJGNuID0gZmFsc2U7XG5cdFx0LyoqIENvbXBvbmVudCBwcm9wcyBkYXRhICovXG5cdFx0JCRkID0ge307XG5cdFx0LyoqIGB0cnVlYCBpZiBjdXJyZW50bHkgaW4gdGhlIHByb2Nlc3Mgb2YgcmVmbGVjdGluZyBjb21wb25lbnQgcHJvcHMgYmFjayB0byBhdHRyaWJ1dGVzICovXG5cdFx0JCRyID0gZmFsc2U7XG5cdFx0LyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBDdXN0b21FbGVtZW50UHJvcERlZmluaXRpb24+fSBQcm9wcyBkZWZpbml0aW9uIChuYW1lLCByZWZsZWN0ZWQsIHR5cGUgZXRjKSAqL1xuXHRcdCQkcF9kID0ge307XG5cdFx0LyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBGdW5jdGlvbltdPn0gRXZlbnQgbGlzdGVuZXJzICovXG5cdFx0JCRsID0ge307XG5cdFx0LyoqIEB0eXBlIHtNYXA8RnVuY3Rpb24sIEZ1bmN0aW9uPn0gRXZlbnQgbGlzdGVuZXIgdW5zdWJzY3JpYmUgZnVuY3Rpb25zICovXG5cdFx0JCRsX3UgPSBuZXcgTWFwKCk7XG5cblx0XHRjb25zdHJ1Y3RvcigkJGNvbXBvbmVudEN0b3IsICQkc2xvdHMsIHVzZV9zaGFkb3dfZG9tKSB7XG5cdFx0XHRzdXBlcigpO1xuXHRcdFx0dGhpcy4kJGN0b3IgPSAkJGNvbXBvbmVudEN0b3I7XG5cdFx0XHR0aGlzLiQkcyA9ICQkc2xvdHM7XG5cdFx0XHRpZiAodXNlX3NoYWRvd19kb20pIHtcblx0XHRcdFx0dGhpcy5hdHRhY2hTaGFkb3coeyBtb2RlOiAnb3BlbicgfSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0YWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucykge1xuXHRcdFx0Ly8gV2UgY2FuJ3QgZGV0ZXJtaW5lIHVwZnJvbnQgaWYgdGhlIGV2ZW50IGlzIGEgY3VzdG9tIGV2ZW50IG9yIG5vdCwgc28gd2UgaGF2ZSB0b1xuXHRcdFx0Ly8gbGlzdGVuIHRvIGJvdGguIElmIHNvbWVvbmUgdXNlcyBhIGN1c3RvbSBldmVudCB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYSByZWd1bGFyXG5cdFx0XHQvLyBicm93c2VyIGV2ZW50LCB0aGlzIGZpcmVzIHR3aWNlIC0gd2UgY2FuJ3QgYXZvaWQgdGhhdC5cblx0XHRcdHRoaXMuJCRsW3R5cGVdID0gdGh
41pcy4kJGxbdHlwZV0gfHwgW107XG5cdFx0XHR0aGlzLiQkbFt0eXBlXS5wdXNoKGxpc3RlbmVyKTtcblx0XHRcdGlmICh0aGlzLiQkYykge1xuXHRcdFx0XHRjb25zdCB1bnN1YiA9IHRoaXMuJCRjLiRvbih0eXBlLCBsaXN0ZW5lcik7XG5cdFx0XHRcdHRoaXMuJCRsX3Uuc2V0KGxpc3RlbmVyLCB1bnN1Yik7XG5cdFx0XHR9XG5cdFx0XHRzdXBlci5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcblx0XHR9XG5cblx0XHRyZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKSB7XG5cdFx0XHRzdXBlci5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcblx0XHRcdGlmICh0aGlzLiQkYykge1xuXHRcdFx0XHRjb25zdCB1bnN1YiA9IHRoaXMuJCRsX3UuZ2V0KGxpc3RlbmVyKTtcblx0XHRcdFx0aWYgKHVuc3ViKSB7XG5cdFx0XHRcdFx0dW5zdWIoKTtcblx0XHRcdFx0XHR0aGlzLiQkbF91LmRlbGV0ZShsaXN0ZW5lcik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRhc3luYyBjb25uZWN0ZWRDYWxsYmFjaygpIHtcblx0XHRcdHRoaXMuJCRjbiA9IHRydWU7XG5cdFx0XHRpZiAoIXRoaXMuJCRjKSB7XG5cdFx0XHRcdC8vIFdlIHdhaXQgb25lIHRpY2sgdG8gbGV0IHBvc3NpYmxlIGNoaWxkIHNsb3QgZWxlbWVudHMgYmUgY3JlYXRlZC9tb3VudGVkXG5cdFx0XHRcdGF3YWl0IFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0XHRpZiAoIXRoaXMuJCRjbiB8fCB0aGlzLiQkYykge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRmdW5jdGlvbiBjcmVhdGVfc2xvdChuYW1lKSB7XG5cdFx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHRcdGxldCBub2RlO1xuXHRcdFx0XHRcdFx0Y29uc3Qgb2JqID0ge1xuXHRcdFx0XHRcdFx0XHRjOiBmdW5jdGlvbiBjcmVhdGUoKSB7XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW1lbnQoJ3Nsb3QnKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAobmFtZSAhPT0gJ2RlZmF1bHQnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyKG5vZGUsICduYW1lJywgbmFtZSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHRcdFx0ICogQHBhcmFtIHtIVE1MRWxlbWVudH0gdGFyZ2V0XG5cdFx0XHRcdFx0XHRcdCAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IFthbmNob3JdXG5cdFx0XHRcdFx0XHRcdCAqL1xuXHRcdFx0XHRcdFx0XHRtOiBmdW5jdGlvbiBtb3VudCh0YXJnZXQsIGFuY2hvcikge1xuXHRcdFx0XHRcdFx0XHRcdGluc2VydCh0YXJnZXQsIG5vZGUsIGFuY2hvcik7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdGQ6IGZ1bmN0aW9uIGRlc3Ryb3koZGV0YWNoaW5nKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGRldGFjaGluZykge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZGV0YWNoKG5vZGUpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHJldHVybiBvYmo7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zdCAkJHNsb3RzID0ge307XG5cdFx0XHRcdGNvbnN0IGV4aXN0aW5nX3Nsb3RzID0gZ2V0X2N1c3RvbV9lbGVtZW50c19zbG90cyh0aGlzKTtcblx0XHRcdFx0Zm9yIChjb25zdCBuYW1lIG9mIHRoaXMuJCRzKSB7XG5cdFx0XHRcdFx0aWYgKG5hbWUgaW4gZXhpc3Rpbmdfc2xvdHMpIHtcblx0XHRcdFx0XHRcdCQkc2xvdHNbbmFtZV0gPSBbY3JlYXRlX3Nsb3QobmFtZSldO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiB0aGlzLmF0dHJpYnV0ZXMpIHtcblx0XHRcdFx0XHQvLyB0aGlzLiQkZGF0YSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhpcy5hdHRyaWJ1dGVzXG5cdFx0XHRcdFx0Y29uc3QgbmFtZSA9IHRoaXMuJCRnX3AoYXR0cmlidXRlLm5hbWUpO1xuXHRcdFx0XHRcdGlmICghKG5hbWUgaW4gdGhpcy4kJGQpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLiQkZFtuYW1lXSA9IGdldF9jdXN0b21fZWxlbWVudF92YWx1ZShuYW1lLCBhdHRyaWJ1dGUudmFsdWUsIHRoaXMuJCRwX2QsICd0b1Byb3AnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gUG9ydCBvdmVyIHByb3BzIHRoYXQgd2VyZSBzZXQgcHJvZ3JhbW1hdGljYWxseSBiZWZvcmUgY2Ugd2FzIGluaXRpYWxpemVkXG5cdFx0XHRcdGZvciAoY29uc3Qga2V5IGluIHRoaXMuJCRwX2QpIHtcblx0XHRcdFx0XHRpZiAoIShrZXkgaW4gdGhpcy4kJGQpICYmIHRoaXNba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHR0aGlzLiQkZFtrZXldID0gdGhpc1trZXldOyAvLyBkb24ndCB0cmFuc2Zvcm0sIHRoZXNlIHdlcmUgc2V0IHRocm91Z2ggSmF2YVNjcmlwdFxuXHRcdFx0XHRcdFx0ZGVsZXRlIHRoaXNba2V5XTsgLy8gcmVtb3ZlIHRoZSBwcm9wZXJ0eSB0aGF0IHNoYWRvd3MgdGhlIGdldHRlci9zZXR0ZXJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy4kJGMgPSBuZXcgdGhpcy4kJGN0b3Ioe1xuXHRcdFx0XHRcdHRhcmdldDogdGhpcy5zaGFkb3dSb290IHx8IHRoaXMsXG5cdFx0XHRcdFx0cHJvcHM6IHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuJCRkLFxuXHRcdFx0XHRcdFx0JCRzbG90cyxcblx0XHRcdFx0XHRcdCQkc2NvcGU6IHtcblx0XHRcdFx0XHRcdFx0Y3R4OiBbXVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gUmVmbGVjdCBjb21wb25lbnQgcHJvcHMgYXMgYXR0cmlidXRlc1xuXHRcdFx0XHRjb25zdCByZWZsZWN0X2F0dHJpYnV0ZXMgPSAoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy4kJHIgPSB0cnVlO1xuXHRcdFx0XHRcdGZvciAoY29uc3Qga2V5IGluIHRoaXMuJCRwX2QpIHtcblx0XHRcdFx0XHRcdHRoaXMuJCRkW2tleV0gPSB0aGlzLiQkYy4kJC5jdHhbdGhpcy4kJGMuJCQucHJvcHNba2V5XV07XG5cdFx0XHRcdFx0XHRpZiAodGhpcy4kJHBfZFtrZXldLnJlZmxlY3QpIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgYXR0cmlidXRlX3ZhbHVlID0gZ2V0X2N1c3RvbV9lbGVtZW50X3ZhbHVlKFxuXHRcdFx0XHRcdFx0XHRcdGtleSxcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiQkZFtrZXldLFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuJCRwX2QsXG5cdFx0XHRcdFx0XHRcdFx0J3RvQXR0cmlidXRlJ1xuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRpZiAoYXR0cmlidXRlX3ZhbHVlID09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLiQkcF9kW2tleV0uYXR0cmlidXRlIHx8IGtleSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZXRBdHRyaWJ1dGUodGhpcy4kJHBfZFtrZXldLmF0dHJpYnV0ZSB8fCBrZXksIGF0dHJpYnV0ZV92YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy4kJHIgPSBmYWxzZTtcblx0XHRcdFx0fTtcblx0XHRcdFx0dGhpcy4kJGMuJCQuYWZ0ZXJfdXBkYXRlLnB1c2gocmVmbGVjdF9hdHRyaWJ1dGVzKTtcblx0XHRcdFx0cmVmbGVjdF9hdHRyaWJ1dGVzKCk7IC8vIG9uY2UgaW5pdGlhbGx5IGJlY2F1c2UgYWZ0ZXJfdXBkYXRlIGlzIGFkZGVkIHRvbyBsYXRlIGZvciBmaXJzdCByZW5kZXJcblxuXHRcdFx0XHRmb3IgKGNvbnN0IHR5cGUgaW4gdGhpcy4kJGwpIHtcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIHRoaXMuJCRsW3R5cGVdKSB7XG5cdFx0XHRcdFx0XHRjb25zdCB1bnN1YiA9IHRoaXMuJCRjLiRvbih0eXBlLCBsaXN0ZW5lcik7XG5cdFx0XHRcdFx0XHR0aGlzLiQkbF91LnNldChsaXN0ZW5lciwgdW5zdWIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLiQkbCA9IHt9O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFdlIGRvbid0IG5lZWQgdGhpcyB3aGVuIHdvcmtpbmcgd2l0aGluIFN2ZWx0ZSBjb2RlLCBidXQgZm9yIGNvbXBhdGliaWxpdHkgb2YgcGVvcGxlIHVzaW5nIHRoaXMgb3V0c2lkZSBvZiBTdmVsdGVcblx0XHQvLyBhbmQgc2V0dGluZyBhdHRyaWJ1dGVzIHRocm91Z2ggc2V0QXR0cmlidXRlIGV0YywgdGhpcyBpcyBoZWxwZnVsXG5cdFx0YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKGF0dHIsIF9vbGRWYWx1ZSwgbmV3VmFsdWUpIHtcblx0XHRcdGlmICh0aGlzLiQkcikgcmV0dXJuO1xuXHRcdFx0YXR0ciA9IHRoaXMuJCRnX3AoYXR0cik7XG5cdFx0XHR0aGlzLiQkZFthdHRyXSA9IGdldF9jdXN0b21fZWxlbWVudF92YWx1ZShhdHRyLCBuZXdWYWx1ZSwgdGhpcy4kJHBfZCwgJ3RvUHJvcCcpO1xuXHRcdFx0dGhpcy4kJGM/LiRzZXQoeyBbY
41XR0cl06IHRoaXMuJCRkW2F0dHJdIH0pO1xuXHRcdH1cblxuXHRcdGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkge1xuXHRcdFx0dGhpcy4kJGNuID0gZmFsc2U7XG5cdFx0XHQvLyBJbiBhIG1pY3JvdGFzaywgYmVjYXVzZSB0aGlzIGNvdWxkIGJlIGEgbW92ZSB3aXRoaW4gdGhlIERPTVxuXHRcdFx0UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG5cdFx0XHRcdGlmICghdGhpcy4kJGNuICYmIHRoaXMuJCRjKSB7XG5cdFx0XHRcdFx0dGhpcy4kJGMuJGRlc3Ryb3koKTtcblx0XHRcdFx0XHR0aGlzLiQkYyA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0JCRnX3AoYXR0cmlidXRlX25hbWUpIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdE9iamVjdC5rZXlzKHRoaXMuJCRwX2QpLmZpbmQoXG5cdFx0XHRcdFx0KGtleSkgPT5cblx0XHRcdFx0XHRcdHRoaXMuJCRwX2Rba2V5XS5hdHRyaWJ1dGUgPT09IGF0dHJpYnV0ZV9uYW1lIHx8XG5cdFx0XHRcdFx0XHQoIXRoaXMuJCRwX2Rba2V5XS5hdHRyaWJ1dGUgJiYga2V5LnRvTG93ZXJDYXNlKCkgPT09IGF0dHJpYnV0ZV9uYW1lKVxuXHRcdFx0XHQpIHx8IGF0dHJpYnV0ZV9uYW1lXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcFxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIEN1c3RvbUVsZW1lbnRQcm9wRGVmaW5pdGlvbj59IHByb3BzX2RlZmluaXRpb25cbiAqIEBwYXJhbSB7J3RvQXR0cmlidXRlJyB8ICd0b1Byb3AnfSBbdHJhbnNmb3JtXVxuICovXG5mdW5jdGlvbiBnZXRfY3VzdG9tX2VsZW1lbnRfdmFsdWUocHJvcCwgdmFsdWUsIHByb3BzX2RlZmluaXRpb24sIHRyYW5zZm9ybSkge1xuXHRjb25zdCB0eXBlID0gcHJvcHNfZGVmaW5pdGlvbltwcm9wXT8udHlwZTtcblx0dmFsdWUgPSB0eXBlID09PSAnQm9vbGVhbicgJiYgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbicgPyB2YWx1ZSAhPSBudWxsIDogdmFsdWU7XG5cdGlmICghdHJhbnNmb3JtIHx8ICFwcm9wc19kZWZpbml0aW9uW3Byb3BdKSB7XG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9IGVsc2UgaWYgKHRyYW5zZm9ybSA9PT0gJ3RvQXR0cmlidXRlJykge1xuXHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0Y2FzZSAnT2JqZWN0Jzpcblx0XHRcdGNhc2UgJ0FycmF5Jzpcblx0XHRcdFx0cmV0dXJuIHZhbHVlID09IG51bGwgPyBudWxsIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXHRcdFx0Y2FzZSAnQm9vbGVhbic6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSA/ICcnIDogbnVsbDtcblx0XHRcdGNhc2UgJ051bWJlcic6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSA9PSBudWxsID8gbnVsbCA6IHZhbHVlO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdGNhc2UgJ09iamVjdCc6XG5cdFx0XHRjYXNlICdBcnJheSc6XG5cdFx0XHRcdHJldHVybiB2YWx1ZSAmJiBKU09OLnBhcnNlKHZhbHVlKTtcblx0XHRcdGNhc2UgJ0Jvb2xlYW4nOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7IC8vIGNvbnZlcnNpb24gYWxyZWFkeSBoYW5kbGVkIGFib3ZlXG5cdFx0XHRjYXNlICdOdW1iZXInOlxuXHRcdFx0XHRyZXR1cm4gdmFsdWUgIT0gbnVsbCA/ICt2YWx1ZSA6IHZhbHVlO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICpcbiAqIFR1cm4gYSBTdmVsdGUgY29tcG9uZW50IGludG8gYSBjdXN0b20gZWxlbWVudC5cbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3B1YmxpYy5qcycpLkNvbXBvbmVudFR5cGV9IENvbXBvbmVudCAgQSBTdmVsdGUgY29tcG9uZW50IGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIEN1c3RvbUVsZW1lbnRQcm9wRGVmaW5pdGlvbj59IHByb3BzX2RlZmluaXRpb24gIFRoZSBwcm9wcyB0byBvYnNlcnZlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBzbG90cyAgVGhlIHNsb3RzIHRvIGNyZWF0ZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gYWNjZXNzb3JzICBPdGhlciBhY2Nlc3NvcnMgYmVzaWRlcyB0aGUgb25lcyBmb3IgcHJvcHMgdGhlIGNvbXBvbmVudCBoYXNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdXNlX3NoYWRvd19kb20gIFdoZXRoZXIgdG8gdXNlIHNoYWRvdyBET01cbiAqIEBwYXJhbSB7KGNlOiBuZXcgKCkgPT4gSFRNTEVsZW1lbnQpID0+IG5ldyAoKSA9PiBIVE1MRWxlbWVudH0gW2V4dGVuZF1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZV9jdXN0b21fZWxlbWVudChcblx0Q29tcG9uZW50LFxuXHRwcm9wc19kZWZpbml0aW9uLFxuXHRzbG90cyxcblx0YWNjZXNzb3JzLFxuXHR1c2Vfc2hhZG93X2RvbSxcblx0ZXh0ZW5kXG4pIHtcblx0bGV0IENsYXNzID0gY2xhc3MgZXh0ZW5kcyBTdmVsdGVFbGVtZW50IHtcblx0XHRjb25zdHJ1Y3RvcigpIHtcblx0XHRcdHN1cGVyKENvbXBvbmVudCwgc2xvdHMsIHVzZV9zaGFkb3dfZG9tKTtcblx0XHRcdHRoaXMuJCRwX2QgPSBwcm9wc19kZWZpbml0aW9uO1xuXHRcdH1cblx0XHRzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpIHtcblx0XHRcdHJldHVybiBPYmplY3Qua2V5cyhwcm9wc19kZWZpbml0aW9uKS5tYXAoKGtleSkgPT5cblx0XHRcdFx0KHByb3BzX2RlZmluaXRpb25ba2V5XS5hdHRyaWJ1dGUgfHwga2V5KS50b0xvd2VyQ2FzZSgpXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblx0T2JqZWN0LmtleXMocHJvcHNfZGVmaW5pdGlvbikuZm9yRWFjaCgocHJvcCkgPT4ge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDbGFzcy5wcm90b3R5cGUsIHByb3AsIHtcblx0XHRcdGdldCgpIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuJCRjICYmIHByb3AgaW4gdGhpcy4kJGMgPyB0aGlzLiQkY1twcm9wXSA6IHRoaXMuJCRkW3Byb3BdO1xuXHRcdFx0fSxcblx0XHRcdHNldCh2YWx1ZSkge1xuXHRcdFx0XHR2YWx1ZSA9IGdldF9jdXN0b21fZWxlbWVudF92YWx1ZShwcm9wLCB2YWx1ZSwgcHJvcHNfZGVmaW5pdGlvbik7XG5cdFx0XHRcdHRoaXMuJCRkW3Byb3BdID0gdmFsdWU7XG5cdFx0XHRcdHRoaXMuJCRjPy4kc2V0KHsgW3Byb3BdOiB2YWx1ZSB9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG5cdGFjY2Vzc29ycy5mb3JFYWNoKChhY2Nlc3NvcikgPT4ge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShDbGFzcy5wcm90b3R5cGUsIGFjY2Vzc29yLCB7XG5cdFx0XHRnZXQoKSB7XG5cdFx0XHRcdHJldHVybi
41B0aGlzLiQkYz8uW2FjY2Vzc29yXTtcblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG5cdGlmIChleHRlbmQpIHtcblx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gYXNzaWduaW5nIGhlcmUgaXMgZmluZVxuXHRcdENsYXNzID0gZXh0ZW5kKENsYXNzKTtcblx0fVxuXHRDb21wb25lbnQuZWxlbWVudCA9IC8qKiBAdHlwZSB7YW55fSAqLyAoQ2xhc3MpO1xuXHRyZXR1cm4gQ2xhc3M7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgU3ZlbHRlIGNvbXBvbmVudHMuIFVzZWQgd2hlbiBkZXY9ZmFsc2UuXG4gKlxuICogQHRlbXBsYXRlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbUHJvcHM9YW55XVxuICogQHRlbXBsYXRlIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbRXZlbnRzPWFueV1cbiAqL1xuZXhwb3J0IGNsYXNzIFN2ZWx0ZUNvbXBvbmVudCB7XG5cdC8qKlxuXHQgKiAjIyMgUFJJVkFURSBBUElcblx0ICpcblx0ICogRG8gbm90IHVzZSwgbWF5IGNoYW5nZSBhdCBhbnkgdGltZVxuXHQgKlxuXHQgKiBAdHlwZSB7YW55fVxuXHQgKi9cblx0JCQgPSB1bmRlZmluZWQ7XG5cdC8qKlxuXHQgKiAjIyMgUFJJVkFURSBBUElcblx0ICpcblx0ICogRG8gbm90IHVzZSwgbWF5IGNoYW5nZSBhdCBhbnkgdGltZVxuXHQgKlxuXHQgKiBAdHlwZSB7YW55fVxuXHQgKi9cblx0JCRzZXQgPSB1bmRlZmluZWQ7XG5cblx0LyoqIEByZXR1cm5zIHt2b2lkfSAqL1xuXHQkZGVzdHJveSgpIHtcblx0XHRkZXN0cm95X2NvbXBvbmVudCh0aGlzLCAxKTtcblx0XHR0aGlzLiRkZXN0cm95ID0gbm9vcDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAdGVtcGxhdGUge0V4dHJhY3Q8a2V5b2YgRXZlbnRzLCBzdHJpbmc+fSBLXG5cdCAqIEBwYXJhbSB7S30gdHlwZVxuXHQgKiBAcGFyYW0geygoZTogRXZlbnRzW0tdKSA9PiB2b2lkKSB8IG51bGwgfCB1bmRlZmluZWR9IGNhbGxiYWNrXG5cdCAqIEByZXR1cm5zIHsoKSA9PiB2b2lkfVxuXHQgKi9cblx0JG9uKHR5cGUsIGNhbGxiYWNrKSB7XG5cdFx0aWYgKCFpc19mdW5jdGlvbihjYWxsYmFjaykpIHtcblx0XHRcdHJldHVybiBub29wO1xuXHRcdH1cblx0XHRjb25zdCBjYWxsYmFja3MgPSB0aGlzLiQkLmNhbGxiYWNrc1t0eXBlXSB8fCAodGhpcy4kJC5jYWxsYmFja3NbdHlwZV0gPSBbXSk7XG5cdFx0Y2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRjb25zdCBpbmRleCA9IGNhbGxiYWNrcy5pbmRleE9mKGNhbGxiYWNrKTtcblx0XHRcdGlmIChpbmRleCAhPT0gLTEpIGNhbGxiYWNrcy5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtQYXJ0aWFsPFByb3BzPn0gcHJvcHNcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHQkc2V0KHByb3BzKSB7XG5cdFx0aWYgKHRoaXMuJCRzZXQgJiYgIWlzX2VtcHR5KHByb3BzKSkge1xuXHRcdFx0dGhpcy4kJC5za2lwX2JvdW5kID0gdHJ1ZTtcblx0XHRcdHRoaXMuJCRzZXQocHJvcHMpO1xuXHRcdFx0dGhpcy4kJC5za2lwX2JvdW5kID0gZmFsc2U7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3VzdG9tRWxlbWVudFByb3BEZWZpbml0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2F0dHJpYnV0ZV1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3JlZmxlY3RdXG4gKiBAcHJvcGVydHkgeydTdHJpbmcnfCdCb29sZWFuJ3wnTnVtYmVyJ3wnQXJyYXknfCdPYmplY3QnfSBbdHlwZV1cbiAqL1xuIiwiLy8gZ2VuZXJhdGVkIGR1cmluZyByZWxlYXNlLCBkbyBub3QgbW9kaWZ5XG5cbi8qKlxuICogVGhlIGN1cnJlbnQgdmVyc2lvbiwgYXMgc2V0IGluIHBhY2thZ2UuanNvbi5cbiAqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtY29tcGlsZXIjc3ZlbHRlLXZlcnNpb25cbiAqIEB0eXBlIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMi4xOSc7XG5leHBvcnQgY29uc3QgUFVCTElDX1ZFUlNJT04gPSAnNCc7XG4iLCJpbXBvcnQge1xuXHRydW5fYWxsLFxuXHRzdWJzY3JpYmUsXG5cdG5vb3AsXG5cdHNhZmVfbm90X2VxdWFsLFxuXHRpc19mdW5jdGlvbixcblx0Z2V0X3N0b3JlX3ZhbHVlXG59IGZyb20gJy4uL2ludGVybmFsL2luZGV4LmpzJztcblxuY29uc3Qgc3Vic2NyaWJlcl9xdWV1ZSA9IFtdO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBgUmVhZGFibGVgIHN0b3JlIHRoYXQgYWxsb3dzIHJlYWRpbmcgYnkgc3Vic2NyaXB0aW9uLlxuICpcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1zdG9yZSNyZWFkYWJsZVxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7VH0gW3ZhbHVlXSBpbml0aWFsIHZhbHVlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9wdWJsaWMuanMnKS5TdGFydFN0b3BOb3RpZmllcjxUPn0gW3N0YXJ0XVxuICogQHJldHVybnMge2ltcG9ydCgnLi9wdWJsaWMuanMnKS5SZWFkYWJsZTxUPn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRhYmxlKHZhbHVlLCBzdGFydCkge1xuXHRyZXR1cm4ge1xuXHRcdHN1YnNjcmliZTogd3JpdGFibGUodmFsdWUsIHN0YXJ0KS5zdWJzY3JpYmVcblx0fTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBgV3JpdGFibGVgIHN0b3JlIHRoYXQgYWxsb3dzIGJvdGggdXBkYXRpbmcgYW5kIHJlYWRpbmcgYnkgc3Vic2NyaXB0aW9uLlxuICpcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1zdG9yZSN3cml0YWJsZVxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7VH0gW3ZhbHVlXSBpbml0aWFsIHZhbHVlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9wdWJsaWMuanMnKS5TdGFydFN0b3BOb3RpZmllcjxUPn0gW3N0YXJ0XVxuICogQHJldHVybnMge2ltcG9ydCgnLi9wdWJsaWMuanMnKS5Xcml0YWJsZTxUPn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRhYmxlKHZhbHVlLCBzdGFydCA9IG5vb3ApIHtcblx0LyoqIEB0eXBlIHtpbXBvcnQoJy4vcHVibGljLmpzJykuVW5zdWJzY3JpYmVyfSAqL1xuXHRsZXQgc3RvcDtcblx0LyoqIEB0eXBlIHtTZXQ8aW1wb3J0KCcuL3ByaXZhdGUuanMnKS5TdWJzY3JpYmVJbnZhbGlkYXRlVHVwbGU8VD4+fSAqL1xuXHRjb25zdCBzdWJzY3JpYmVycyA9IG5ldyBTZXQoKTtcblx0LyoqIEBwYXJhbSB7VH0gbmV3X3ZhbHVlXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0ZnVuY3Rpb24gc2V0KG5ld192YWx1ZSkge1xuXHRcdGlmIChzYWZlX25vdF9lcXVhbCh2YWx1ZSwgbmV3X3ZhbHVlKSkge1xuXHRcdFx0dmFsdWUgPSBuZXdfdmFsdWU7XG5cdFx0XHRpZiAoc3RvcCkge1xuXHRcdFx0XHQvLyBzdG9yZSBpcyByZWFkeVxuXHRcdFx0XHRjb25zdCBydW5fcXVldWUgPSAhc3Vic2NyaWJlcl9xdWV1ZS5sZW5ndGg7XG5cdFx0XHRcdGZvciAoY29uc3Qgc3Vic2NyaWJlciBvZiBzdWJzY3JpYmVycykge1xuXHRcdFx0XHRcdHN1YnNjcmliZXJbMV0oKTtcblx0XHRcdFx0XHRzdWJzY3JpYmVyX3F1ZXVlLnB1c2goc3Vic2NyaWJlciwgdmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChydW5fcXVldWUpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHN1YnNjcmliZXJfcXVldWUubGVuZ3RoOyBpICs9IDIpIHtcblx0XHRcdFx0XHRcdHN1YnNjcmliZXJfcXVldWVbaV1bMF0oc3Vic2NyaWJlcl9xdWV1ZVtpICsgMV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzdWJzY3JpYmVyX3F1ZXVlLmxlbmd0aCA9IDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtpbXBvcnQoJy4vcHVibGljLmpzJykuVXBkYXRlcjxUPn0gZm5cblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRmdW5jdGlvbiB1cGRhdGUoZm4pIHtcblx0XHRzZXQoZm4odmFsdWUpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge2ltcG9ydCgnLi9wdWJsaWMuanMnKS5TdWJzY3JpYmVyPFQ+fSBydW5cblx0ICogQHBhcmFtIHtpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLkludmFsaWRhdG9yPFQ+fSBbaW52YWxpZGF0ZV1cblx0ICogQHJldHVybnMge2ltcG9ydCgnLi9wdWJsaWMuanMnKS5VbnN1YnNjcmliZXJ9XG5cdCAqL1xuXHRmdW5jdGlvbiBzdWJzY3JpYmUocnVuLCBpbnZhbGlkYXRlID0gbm9vcCkge1xuXHRcdC8qKiBAdHlwZSB7aW1wb3J0KCcuL3ByaXZhdGUuanMnKS5TdWJzY3JpYmVJbnZhbGlkYXRlVHVwbGU8VD59ICovXG5cdFx0Y29uc3Qgc3Vic2NyaWJlciA9IFtydW4sIGludmFsaWRhdGVdO1xuXHRcdHN1YnNjcmliZXJzLmFkZChzdWJzY3JpYmVyKTtcblx0XHRpZiAoc3Vic2NyaWJlcnMuc2l6ZSA9PT0gMSkge1xuXHRcdFx0c3RvcCA9IHN0YXJ0KHNldCwgdXBkYXRlKSB8fCBub29wO1xuXHRcdH1cblx0XHRydW4odmFsdWUpO1xuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRzdWJzY3JpYmVycy5kZWxldGUoc3Vic2NyaWJlcik7XG5cdFx0XHRpZiAoc3Vic2NyaWJlcnMuc2l6ZSA9PT0gMCAmJiBzdG9wKSB7XG5cdFx0XHRcdHN0b3AoKTtcblx0XHRcdFx0c3RvcCA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxuXHRyZXR1cm4geyBzZXQsIHVwZGF0ZSwgc3Vic2NyaWJlIH07XG59XG5cbi8qKlxuICogRGVyaXZlZCB2YWx1ZSBzdG9yZSBieSBzeW5jaHJvbml6aW5nIG9uZSBvciBtb3JlIHJlYWRhYmxlIHN0b3JlcyBhbmRcbiAqIGFwcGx5aW5nIGFuIGFnZ3JlZ2F0aW9uIGZ1bmN0aW9uIG92ZXIgaXRzIGlucHV0IHZhbHVlcy5cbiAqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtc3RvcmUjZGVyaXZlZFxuICogQHRlbXBsYXRlIHtpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLlN0b3Jlc30gU1xuICogQHRlbXBsYXRlIFRcbiAqIEBvdmVybG9hZFxuICogQHBhcmFtIHtTfSBzdG9yZXMgLSBpbnB1dCBzdG9yZXNcbiAqIEBwYXJhbSB7KHZhbHVlczogaW1wb3J0KCcuL3ByaXZhdGUuanMnKS5TdG9yZXNWYWx1ZXM8Uz4sIHNldDogKHZhbHVlOiBUKSA9PiB2b2lkLCB1cGRhdGU6IChmbjogaW1wb3J0KCcuL3B1YmxpYy5qcycpLlVwZGF0ZXI8VD4pID0+IHZvaWQpID0+IGltcG9ydCgnLi9wdWJsaWMuanMnKS5VbnN1YnNjcmliZXIgfCB2b2lkfSBmbiAtIGZ1bmN0aW9uIGNhbGxiYWNrIHRoYXQgYWdncmVnYXRlcyB0aGUgdmFsdWVzXG4gKiBAcGFyYW0ge1R9IFtpbml0aWFsX3ZhbHVlXSAtIGluaXRpYWwgdmFsdWVcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vcHVibGljLmpzJykuUmVhZGFibGU8VD59XG4gKi9cblxuLyoqXG4gKiBEZXJpdmVkIHZhbHVlIHN0b3JlIGJ5IHN5bmNocm9uaXppbmcgb25lIG9y
41IG1vcmUgcmVhZGFibGUgc3RvcmVzIGFuZFxuICogYXBwbHlpbmcgYW4gYWdncmVnYXRpb24gZnVuY3Rpb24gb3ZlciBpdHMgaW5wdXQgdmFsdWVzLlxuICpcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1zdG9yZSNkZXJpdmVkXG4gKiBAdGVtcGxhdGUge2ltcG9ydCgnLi9wcml2YXRlLmpzJykuU3RvcmVzfSBTXG4gKiBAdGVtcGxhdGUgVFxuICogQG92ZXJsb2FkXG4gKiBAcGFyYW0ge1N9IHN0b3JlcyAtIGlucHV0IHN0b3Jlc1xuICogQHBhcmFtIHsodmFsdWVzOiBpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLlN0b3Jlc1ZhbHVlczxTPikgPT4gVH0gZm4gLSBmdW5jdGlvbiBjYWxsYmFjayB0aGF0IGFnZ3JlZ2F0ZXMgdGhlIHZhbHVlc1xuICogQHBhcmFtIHtUfSBbaW5pdGlhbF92YWx1ZV0gLSBpbml0aWFsIHZhbHVlXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL3B1YmxpYy5qcycpLlJlYWRhYmxlPFQ+fVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtpbXBvcnQoJy4vcHJpdmF0ZS5qcycpLlN0b3Jlc30gU1xuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7U30gc3RvcmVzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHBhcmFtIHtUfSBbaW5pdGlhbF92YWx1ZV1cbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vcHVibGljLmpzJykuUmVhZGFibGU8VD59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVkKHN0b3JlcywgZm4sIGluaXRpYWxfdmFsdWUpIHtcblx0Y29uc3Qgc2luZ2xlID0gIUFycmF5LmlzQXJyYXkoc3RvcmVzKTtcblx0LyoqIEB0eXBlIHtBcnJheTxpbXBvcnQoJy4vcHVibGljLmpzJykuUmVhZGFibGU8YW55Pj59ICovXG5cdGNvbnN0IHN0b3Jlc19hcnJheSA9IHNpbmdsZSA/IFtzdG9yZXNdIDogc3RvcmVzO1xuXHRpZiAoIXN0b3Jlc19hcnJheS5ldmVyeShCb29sZWFuKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignZGVyaXZlZCgpIGV4cGVjdHMgc3RvcmVzIGFzIGlucHV0LCBnb3QgYSBmYWxzeSB2YWx1ZScpO1xuXHR9XG5cdGNvbnN0IGF1dG8gPSBmbi5sZW5ndGggPCAyO1xuXHRyZXR1cm4gcmVhZGFibGUoaW5pdGlhbF92YWx1ZSwgKHNldCwgdXBkYXRlKSA9PiB7XG5cdFx0bGV0IHN0YXJ0ZWQgPSBmYWxzZTtcblx0XHRjb25zdCB2YWx1ZXMgPSBbXTtcblx0XHRsZXQgcGVuZGluZyA9IDA7XG5cdFx0bGV0IGNsZWFudXAgPSBub29wO1xuXHRcdGNvbnN0IHN5bmMgPSAoKSA9PiB7XG5cdFx0XHRpZiAocGVuZGluZykge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRjbGVhbnVwKCk7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBmbihzaW5nbGUgPyB2YWx1ZXNbMF0gOiB2YWx1ZXMsIHNldCwgdXBkYXRlKTtcblx0XHRcdGlmIChhdXRvKSB7XG5cdFx0XHRcdHNldChyZXN1bHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2xlYW51cCA9IGlzX2Z1bmN0aW9uKHJlc3VsdCkgPyByZXN1bHQgOiBub29wO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Y29uc3QgdW5zdWJzY3JpYmVycyA9IHN0b3Jlc19hcnJheS5tYXAoKHN0b3JlLCBpKSA9PlxuXHRcdFx0c3Vic2NyaWJlKFxuXHRcdFx0XHRzdG9yZSxcblx0XHRcdFx0KHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dmFsdWVzW2ldID0gdmFsdWU7XG5cdFx0XHRcdFx0cGVuZGluZyAmPSB+KDEgPDwgaSk7XG5cdFx0XHRcdFx0aWYgKHN0YXJ0ZWQpIHtcblx0XHRcdFx0XHRcdHN5bmMoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRwZW5kaW5nIHw9IDEgPDwgaTtcblx0XHRcdFx0fVxuXHRcdFx0KVxuXHRcdCk7XG5cdFx0c3RhcnRlZCA9IHRydWU7XG5cdFx0c3luYygpO1xuXHRcdHJldHVybiBmdW5jdGlvbiBzdG9wKCkge1xuXHRcdFx0cnVuX2FsbCh1bnN1YnNjcmliZXJzKTtcblx0XHRcdGNsZWFudXAoKTtcblx0XHRcdC8vIFdlIG5lZWQgdG8gc2V0IHRoaXMgdG8gZmFsc2UgYmVjYXVzZSBjYWxsYmFja3MgY2FuIHN0aWxsIGhhcHBlbiBkZXNwaXRlIGhhdmluZyB1bnN1YnNjcmliZWQ6XG5cdFx0XHQvLyBDYWxsYmFja3MgbWlnaHQgYWxyZWFkeSBiZSBwbGFjZWQgaW4gdGhlIHF1ZXVlIHdoaWNoIGRvZXNuJ3Qga25vdyBpdCBzaG91bGQgbm8gbG9uZ2VyXG5cdFx0XHQvLyBpbnZva2UgdGhpcyBkZXJpdmVkIHN0b3JlLlxuXHRcdFx0c3RhcnRlZCA9IGZhbHNlO1xuXHRcdH07XG5cdH0pO1xufVxuXG4vKipcbiAqIFRha2VzIGEgc3RvcmUgYW5kIHJldHVybnMgYSBuZXcgb25lIGRlcml2ZWQgZnJvbSB0aGUgb2xkIG9uZSB0aGF0IGlzIHJlYWRhYmxlLlxuICpcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1zdG9yZSNyZWFkb25seVxuICogQHRlbXBsYXRlIFRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3B1YmxpYy5qcycpLlJlYWRhYmxlPFQ+fSBzdG9yZSAgLSBzdG9yZSB0byBtYWtlIHJlYWRvbmx5XG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL3B1YmxpYy5qcycpLlJlYWRhYmxlPFQ+fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZG9ubHkoc3RvcmUpIHtcblx0cmV0dXJuIHtcblx0XHRzdWJzY3JpYmU6IHN0b3JlLnN1YnNjcmliZS5iaW5kKHN0b3JlKVxuXHR9O1xufVxuXG5leHBvcnQgeyBnZXRfc3RvcmVfdmFsdWUgYXMgZ2V0IH07XG4iLCJpbXBvcnQge3dyaXRhYmxlfSBmcm9tICdzdmVsdGUvc3RvcmUnO1xuXG5jb25zdCBhbGxvd0Z1bmN0aW9uYWxDb29raWVzU3RvcmUgPSB3cml0YWJsZShmYWxzZSlcbmNvbnN0IGFsbG93VHJhY2tpbmdDb29raWVzU3RvcmUgPSB3cml0YWJsZShmYWxzZSlcbmNvbnN0IGFsbG93VHdpdHRlckNvb2tpZXNTdG9yZSA9IHdyaXRhYmxlKGZhbHNlKVxuY29uc3QgYWxsb3dZb3V0dWJlQ29va2llc1N0b3JlID0gd3JpdGFibGUoZmFsc2UpXG5jb25zdCBzaG93QmFubmVyU3RvcmUgPSB3cml0YWJsZShmYWxzZSlcbmNvbnN0IGRhcmtNb2RlU3RvcmUgPSB3cml0YWJsZShmYWxzZSlcbmNvbnN0IGZvbnRNb2RlU3RvcmUgPSB3cml0YWJsZSgwKVxuY29uc3QgbWVudU1haW5TdG9yZSA9IHdyaXRhYmxlKGZhbHNlKVxuY29uc3QgbWVudVNlYXJjaFN0b3JlID0gd3JpdGFibGUoZmFsc2UpXG5cbmV4cG9ydCB7XG4gIGFsbG93RnVuY3Rpb25hbENvb2tpZXNTdG9yZSxcbiAgYWxsb3dUcmFja2luZ0Nvb2tpZXNTdG9yZSxcbiAgYWxsb3dUd2l0dGVyQ29va2llc1N0b3JlLFxuICBhbGxvd1lvdXR1YmVDb29raWVzU3RvcmUsXG4gIHNob3dCYW5uZXJTdG9yZSxcbiAgZGFya01vZGVTdG9yZSxcbiAgZm9udE1vZGVTdG9yZSxcbiAgbWVudU1haW5TdG9yZSxcbiAgbWVudVNlYXJjaFN0b3JlXG59IiwiaW1wb3J0IHtcbiAgYWxsb3dGdW5jdGlvbmFsQ29va2llc1N0b3JlLFxuICBhbGxvd1RyYWNraW5nQ29va2llc1N0b3JlLFxuICBhbGxvd1R3aXR0ZXJDb29raWVzU3RvcmUsXG4gIGFsbG93WW91dHViZUNvb2tpZXNTdG9yZSxcbiAgc2hvd0Jhbm5lclN0b3JlLFxuICBkYXJrTW9kZVN0b3JlLFxuICBmb250TW9kZVN0b3JlXG59IGZyb20gJ0BsYXlvdXQvc3RvcmVzL21haW5zdG9yZS5qcydcbmltcG9ydCB7YnBjb25maWd9IGZyb20gJ0BsYXlvdXQvanMvc3lzdGVtLmNvbmZpZy5qcydcblxuLyoqXG4gKiBMaWVzdCBkaWUgQ29va2llcywgd2VubiB2b3JoYW5kZW4sIHVuZCBzcGVpY2hlcnQgZGllIGltIFN0b3JlLlxuICovXG5mdW5jdGlvbiBpbml0U29yZXNGcm9tQ29va2llcygpIHtcblxuICAvLyBhbGxvd0Z1bmN0aW9uYWxDb29raWVzIHNldHplblxuICBsZXQgYWxsb3dGdW5jdGlvbmFsQ29va2llcyA9IGZhbHNlXG4gIGlmIChnZXRDb29raWUoJ2FsbG93RnVuY3Rpb25hbENvb2tpZXMnKSkge1xuICAgIGFsbG93RnVuY3Rpb25hbENvb2tpZXMgPSAoZ2V0Q29va2llKCdhbGxvd0Z1bmN0aW9uYWxDb29raWVzJykgPT09ICd0cnVlJylcbiAgfSBlbHNlIHtcbiAgICBzZXRDb29raWUoJ2FsbG93RnVuY3Rpb25hbENvb2tpZXMnLCBhbGxvd0Z1bmN0aW9uYWxDb29raWVzKVxuICB9XG4gIGFsbG93RnVuY3Rpb25hbENvb2tpZXNTdG9yZS5zZXQoYWxsb3dGdW5jdGlvbmFsQ29va2llcylcblxuICAvLyBhbGxvd1RyYWNraW5nQ29va2llcyBzZXR6ZW5cbiAgbGV0IGFsbG93VHJhY2tpbmdDb29raWVzID0gZmFsc2VcbiAgaWYgKGdldENvb2tpZSgnYWxsb3dUcmFja2luZ0Nvb2tpZXMnKSkge1xuICAgIGFsbG93VHJhY2tpbmdDb29raWVzID0gKGdldENvb2tpZSgnYWxsb3dUcmFja2luZ0Nvb2tpZXMnKSA9PT0gJ3RydWUnKVxuICB9IGVsc2Uge1xuICAgIHNldENvb2tpZSgnYWxsb3dUcmFja2luZ0Nvb2tpZXMnLCBhbGxvd1RyYWNraW5nQ29va2llcylcbiAgfVxuICBhbGxvd1RyYWNraW5nQ29va2llc1N0b3JlLnNldChhbGxvd1RyYWNraW5nQ29va2llcylcblxuICBpZiAoYnBjb25maWcudXNlX3R3aXR0ZXIpIHtcbiAgICAvLyBhbGxvd1R3aXR0ZXJDb29raWVzIHNldHplblxuICAgIGxldCBhbGxvd1R3aXR0ZXJDb29raWVzID0gZmFsc2VcbiAgICBpZiAoZ2V0Q29va2llKCdhbGxvd1R3aXR0ZXJDb29raWVzJykpIHtcbiAgICAgIGFsbG93VHdpdHRlckNvb2tpZXMgPSAoZ2V0Q29va2llKCdhbGxvd1R3aXR0ZXJDb29raWVzJykgPT09ICd0cnVlJylcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q29va2llKCdhbGxvd1R3aXR0ZXJDb29raWVzJywgYWxsb3dUd2l0dGVyQ29va2llcylcbiAgICB9XG4gICAgYWxsb3dUd2l0dGVyQ29va2llc1N0b3JlLnNldChhbGxvd1R3aXR0ZXJDb29raWVzKVxuICB9XG5cbiAgaWYgKGJwY29uZmlnLnVzZV95b3V0dWJlKSB7XG4gICAgLy8gYWxsb3dZb3V0dWJlQ29va2llcyBzZXR6ZW5cbiAgICBsZXQgYWxsb3dZb3V0dWJlQ29va2llcyA9IGZhbHNlXG4gICAgaWYgKGdldENvb2tpZSgnYWxsb3dZb3V0dWJlQ29va2llcycpKSB7XG4gICAgICBhbGxvd1lvdXR1YmVDb29raWVzID0gKGdldENvb2tpZSgnYWxsb3dZb3V0dWJlQ29va2llcycpID09PSAndHJ1ZScpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENvb2tpZSgnYWxsb3dZb3V0dWJlQ29va2llcycsIGFsbG93WW91dHViZUNvb2tpZXMpXG4gICAgfVxuICAgIGFsbG93WW91dHViZUNvb2tpZXNTdG9yZS5zZXQoYWxsb3dZb3V0dWJlQ29va2llcylcbiAgfVxuXG4gIC8vIHNob3dCYW5uZXIgc2V0emVuXG4gIGxldCBzaG93QmFubmVyID0gdHJ1ZVxuICBpZiAoZ2V0Q29va2llKCdzaG93QmFubmVyJykpIHtcbiAgICBzaG93QmFubmVyID0gKGdldENvb2tpZSgnc2hvd0Jhbm5lcicpID09PSAndHJ1ZScpXG4gIH0gZWxzZSB7XG4gICAgc2V0Q29va2llKCdzaG93QmFubmVyJywgc2hvd0Jhbm5lcilcbiAgfVxuICBzaG93QmFubmVyU3RvcmUuc2V0KHNob3dCYW5uZXIpXG5cbiAgLy8gZGFya01vZGUgc2V0emVuXG4gIGxldCBkYXJrTW9kZSA9IGZhbHNlXG4gIGlmIChnZXRDb29raWUoJ2RhcmtNb2RlJykpIHtcbiAgICBkYXJrTW9kZSA9IChnZXRDb29raWUoJ2RhcmtNb2RlJykgPT09ICd0cnVlJylcbiAgfSBlbHNlIHtcbiAgICBpZiAoYWxsb3dGdW5jdGlvbmFsQ29va2llcykge1xuICAgICAgc2V0Q29va2llKCdkYXJrTW9kZScsIGRhcmtNb2RlKVxuICAgIH1cbiAgfVxuICBkYXJrTW9kZVN0b3JlLnNldChkYXJrTW9kZSlcblxuICAvLyBTdGFuZGFyZCBmb250TW9kZSBzZXR6ZW5cbiAgbGV0IGZvbnRNb2RlID0gMFxuICBpZiAoZ2V0Q29va2llKCdmb250TW9kZScpKSB7XG4gICAgZm9udE1vZGUgPSBnZXRDb29raWUoJ2ZvbnRNb2RlJylcbiAgfSBlbHNlIHtcbiAgICBpZiAoYWxsb3dGdW5jdGlvbmFsQ29va2llcykge1xuICAgICAgc2V0Q29va2llKCdmb250TW9kZScsIGZvbnRNb2RlKVxuICAgIH1cbiAgfVxuICBmb250TW9kZVN0b3JlLnNldChmb250TW9kZSlcbn1cblxuLyoqXG4gKiBTcGVpY2hlcnQgZWluZW4gQ29va2llXG4gKlxuICogQHBhcmFtIGNuYW1lIE5hbWUgZGVzIENvb2tpZXNcbiAqIEBwYXJhbSBjdmFsdWUgV2VydCBkZXMgQ29va2llc1xuICogQHBhcmFtIGV4ZGF5cyBleHBpcmVzIGluIFRhZ2VuXG4gKi9cbmZ1bmN0aW9uIHNldENvb2tpZShjbmFtZSwgY3ZhbHVlLCBleGRheXMgPSAzMCkge1xuICBjb25zdCBkID0gbmV3IERhdGUoKVxuICBkLnNldFRpbWUoZC5nZXRUaW1lKCkgKyAoZXhkYXlzICogMjQgKiA2MCAqIDYwICogMTAwMCkpXG4gIGNvbnN0IGV4cGlyZXMgPSAnZXhwaXJlcz0nICsgZC50b1VUQ1N0cmluZygpXG5cbiAgY29uc3Qgc2VjdXJlID0gKHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCA9PT0gJ2h0dHBzOicpXG4gIGlmIChzZWN1cmUpIHtcbiAgICBkb2
41N1bWVudC5jb29raWUgPSBjbmFtZSArICc9JyArIGN2YWx1ZSArICc7JyArIGV4cGlyZXMgKyAnO3BhdGg9LzsgU2VjdXJlOyBTYW1lU2l0ZT1MYXgnXG4gIH0gZWxzZSB7XG4gICAgZG9jdW1lbnQuY29va2llID0gY25hbWUgKyAnPScgKyBjdmFsdWUgKyAnOycgKyBleHBpcmVzICsgJztwYXRoPS8nXG4gIH1cbn1cblxuLyoqXG4gKiBMaWVzdCBlaW5lbiBDb29raWVcbiAqXG4gKiBAcGFyYW0gY25hbWUgTmFtZSBkZXMgQ29va2llc1xuICogQHJldHVybnMgeyp8c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRDb29raWUoY25hbWUpIHtcbiAgY29uc3QgbmFtZSA9IGNuYW1lICsgJz0nXG4gIGNvbnN0IGNhID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JylcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGMgPSBjYVtpXS50cmltKClcbiAgICBpZiAoYy5pbmRleE9mKG5hbWUpID09PSAwKSB7XG4gICAgICByZXR1cm4gYy5zdWJzdHJpbmcobmFtZS5sZW5ndGgsIGMubGVuZ3RoKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJ1xufVxuXG4vKipcbiAqIEzDtnNjaGVuIGVpbmVuIENvb2tpZVxuICpcbiAqIEBwYXJhbSBjbmFtZSBOYW1lIGRlcyBDb29raWVzXG4gKi9cbmZ1bmN0aW9uIGRlbENvb2tpZShjbmFtZSkge1xuICBkb2N1bWVudC5jb29raWUgPSBgJHtjbmFtZX09OyBwYXRoPS87IGV4cGlyZXM9JHtuZXcgRGF0ZSgwKS50b1VUQ1N0cmluZygpfWBcbn1cblxuLyoqXG4gKiBMw7ZzY2hlbiBtZWhyZXJlciBDb29raWVzIHZpYSByZWdleHBcbiAqXG4gKiBAcGFyYW0gY3JlZyBSZWdFeHAgZGVyIENvb2tpZXNcbiAqL1xuZnVuY3Rpb24gZGVsQ29va2llcyhjcmVnKSB7XG4gIGNvbnN0IGNhID0gZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JylcbiAgY29uc3QgY3IgPSBuZXcgUmVnRXhwKGNyZWcpXG4gIGNhLm1hcChjID0+IHtcbiAgICBjb25zdCBjbmFtZSA9IGMudHJpbSgpXG4gICAgaWYgKGNyLnRlc3QoY25hbWUpKSB7XG4gICAgICBkZWxDb29raWUoY25hbWUpXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQge1xuICBpbml0U29yZXNGcm9tQ29va2llcyxcbiAgZ2V0Q29va2llLFxuICBzZXRDb29raWUsXG4gIGRlbENvb2tpZSxcbiAgZGVsQ29va2llc1xufSIsImltcG9ydCB7IFBVQkxJQ19WRVJTSU9OIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3ZlcnNpb24uanMnO1xuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpXG5cdC8vIEB0cy1pZ25vcmVcblx0KHdpbmRvdy5fX3N2ZWx0ZSB8fCAod2luZG93Ll9fc3ZlbHRlID0geyB2OiBuZXcgU2V0KCkgfSkpLnYuYWRkKFBVQkxJQ19WRVJTSU9OKTtcbiIsIjxzY3JpcHQ+XG4gIGV4cG9ydCBsZXQgaWQgPSBudWxsXG4gIGV4cG9ydCBsZXQgdGl0bGUgPSBudWxsXG4gIGV4cG9ydCBsZXQgY2xvc2VfdGl0bGUgPSBudWxsXG4gIGV4cG9ydCBsZXQgaWNvbiA9ICdib21iJ1xuICBleHBvcnQgbGV0IGNsb3NlX2ljb24gPSBudWxsXG4gIGV4cG9ydCBsZXQgdGV4dCA9IG51bGxcbiAgZXhwb3J0IGxldCBkaXNhYmxlZCA9IGZhbHNlXG4gIGV4cG9ydCBsZXQgc3RvcmUgPSBudWxsXG4gIGV4cG9ydCBsZXQgY3NzID0gJ3AtMyBiZy1pbmhlcml0IGZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtMiBob3Zlcjp0ZXh0LWJwLWJsdWUgZGlzYWJsZWQ6dGV4dC1icC1ncmF5LWRhcmsgZHVyYXRpb24tNTAwJ1xuICBleHBvcnQgbGV0IGFjdGlvbiA9ICgpID0+IHtcbiAgfVxuXG4gIGxldCBpc19vcGVuID0gZmFsc2VcbiAgaWYgKHN0b3JlKSB7XG4gICAgc3RvcmUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlzX29wZW4gPSB2YWx1ZVxuICAgIH0pXG4gIH1cbjwvc2NyaXB0PlxuXG57I2lmIGlzX29wZW4gJiYgY2xvc2VfaWNvbn1cbiAgPGJ1dHRvblxuICAgIGlkPVwie2lkfVwiXG4gICAgdGl0bGU9XCJ7Y2xvc2VfdGl0bGV9XCJcbiAgICBvbjpjbGljaz17KCkgPT4gYWN0aW9uKCl9XG4gICAgZGlzYWJsZWQ9XCJ7ZGlzYWJsZWR9XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cIntjc3N9XCJcbiAgPlxuICAgIDxpIGNsYXNzPVwie2Nsb3NlX2ljb259IHRleHQteGwgdy1bMjBweF0gZm9jdXM6b3V0bGluZS1ub25lXCIgcm9sZT1cInByZXNlbnRhdGlvblwiIHRhYmluZGV4PVwiLTFcIj48L2k+XG4gICAgeyNpZiB0ZXh0fTxzcGFuIGNsYXNzPVwiaGlkZGVuIHNtOmJsb2NrXCI+e3RleHR9PC9zcGFuPnsvaWZ9XG4gIDwvYnV0dG9uPlxuezplbHNlfVxuICA8YnV0dG9uXG4gICAgaWQ9XCJ7aWR9XCJcbiAgICB0aXRsZT1cInt0aXRsZX1cIlxuICAgIG9uOmNsaWNrPXsoKSA9PiBhY3Rpb24oKX1cbiAgICBkaXNhYmxlZD1cIntkaXNhYmxlZH1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwie2Nzc31cIlxuICA+XG4gICAgPGkgY2xhc3M9XCJ7aWNvbn0gdGV4dC14bCB3LVsyMHB4XSBmb2N1czpvdXRsaW5lLW5vbmVcIiByb2xlPVwicHJlc2VudGF0aW9uXCIgdGFiaW5kZXg9XCItMVwiPjwvaT5cbiAgICB7I2lmIHRleHR9PHNwYW4gY2xhc3M9XCJoaWRkZW4gc206YmxvY2tcIj57dGV4dH08L3NwYW4+ey9pZn1cbiAgPC9idXR0b24+XG57L2lmfVxuIiwiLypcbkFkYXB0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWF0dGRlc2xcbkRpc3RyaWJ1dGVkIHVuZGVyIE1JVCBMaWNlbnNlIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXR0ZGVzbC9lYXNlcy9ibG9iL21hc3Rlci9MSUNFTlNFLm1kXG4qL1xuZXhwb3J0IHsgaWRlbnRpdHkgYXMgbGluZWFyIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW5kZXguanMnO1xuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFja0luT3V0KHQpIHtcblx0Y29uc3QgcyA9IDEuNzAxNTggKiAxLjUyNTtcblx0aWYgKCh0ICo9IDIpIDwgMSkgcmV0dXJuIDAuNSAqICh0ICogdCAqICgocyArIDEpICogdCAtIHMpKTtcblx0cmV0dXJuIDAuNSAqICgodCAtPSAyKSAqIHQgKiAoKHMgKyAxKSAqIHQgKyBzKSArIDIpO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFja0luKHQpIHtcblx0Y29uc3QgcyA9IDEuNzAxNTg7XG5cdHJldHVybi
41B0ICogdCAqICgocyArIDEpICogdCAtIHMpO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFja091dCh0KSB7XG5cdGNvbnN0IHMgPSAxLjcwMTU4O1xuXHRyZXR1cm4gLS10ICogdCAqICgocyArIDEpICogdCArIHMpICsgMTtcbn1cblxuLyoqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtZWFzaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gdFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJvdW5jZU91dCh0KSB7XG5cdGNvbnN0IGEgPSA0LjAgLyAxMS4wO1xuXHRjb25zdCBiID0gOC4wIC8gMTEuMDtcblx0Y29uc3QgYyA9IDkuMCAvIDEwLjA7XG5cdGNvbnN0IGNhID0gNDM1Ni4wIC8gMzYxLjA7XG5cdGNvbnN0IGNiID0gMzU0NDIuMCAvIDE4MDUuMDtcblx0Y29uc3QgY2MgPSAxNjA2MS4wIC8gMTgwNS4wO1xuXHRjb25zdCB0MiA9IHQgKiB0O1xuXHRyZXR1cm4gdCA8IGFcblx0XHQ/IDcuNTYyNSAqIHQyXG5cdFx0OiB0IDwgYlxuXHRcdD8gOS4wNzUgKiB0MiAtIDkuOSAqIHQgKyAzLjRcblx0XHQ6IHQgPCBjXG5cdFx0PyBjYSAqIHQyIC0gY2IgKiB0ICsgY2Ncblx0XHQ6IDEwLjggKiB0ICogdCAtIDIwLjUyICogdCArIDEwLjcyO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYm91bmNlSW5PdXQodCkge1xuXHRyZXR1cm4gdCA8IDAuNSA/IDAuNSAqICgxLjAgLSBib3VuY2VPdXQoMS4wIC0gdCAqIDIuMCkpIDogMC41ICogYm91bmNlT3V0KHQgKiAyLjAgLSAxLjApICsgMC41O1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYm91bmNlSW4odCkge1xuXHRyZXR1cm4gMS4wIC0gYm91bmNlT3V0KDEuMCAtIHQpO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2lyY0luT3V0KHQpIHtcblx0aWYgKCh0ICo9IDIpIDwgMSkgcmV0dXJuIC0wLjUgKiAoTWF0aC5zcXJ0KDEgLSB0ICogdCkgLSAxKTtcblx0cmV0dXJuIDAuNSAqIChNYXRoLnNxcnQoMSAtICh0IC09IDIpICogdCkgKyAxKTtcbn1cblxuLyoqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtZWFzaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gdFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNpcmNJbih0KSB7XG5cdHJldHVybiAxLjAgLSBNYXRoLnNxcnQoMS4wIC0gdCAqIHQpO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2lyY091dCh0KSB7XG5cdHJldHVybiBNYXRoLnNxcnQoMSAtIC0tdCAqIHQpO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3ViaWNJbk91dCh0KSB7XG5cdHJldHVybiB0IDwgMC41ID8gNC4wICogdCAqIHQgKiB0IDogMC41ICogTWF0aC5wb3coMi4wICogdCAtIDIuMCwgMy4wKSArIDEuMDtcbn1cblxuLyoqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtZWFzaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gdFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1YmljSW4odCkge1xuXHRyZXR1cm4gdCAqIHQgKiB0O1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3ViaWNPdXQodCkge1xuXHRjb25zdCBmID0gdCAtIDEuMDtcblx0cmV0dXJuIGYgKiBmICogZiArIDEuMDtcbn1cblxuLyoqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtZWFzaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gdFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVsYXN0aWNJbk91dCh0KSB7XG5cdHJldHVybiB0IDwgMC41XG5cdFx0PyAwLjUgKiBNYXRoLnNpbigoKCsxMy4wICogTWF0aC5QSSkgLyAyKSAqIDIuMCAqIHQpICogTWF0aC5wb3coMi4wLCAxMC4wICogKDIuMCAqIHQgLSAxLjApKVxuXHRcdDogMC41ICpcblx0XHRcdFx0TWF0aC5zaW4oKCgtMTMuMCAqIE1hdGguUEkpIC8gMikgKiAoMi4wICogdCAtIDEuMCArIDEuMCkpICpcblx0XHRcdFx0TWF0aC5wb3coMi4wLCAtMTAuMCAqICgyLjAgKiB0IC0gMS4wKSkgK1xuXHRcdFx0XHQxLjA7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlLWVhc2luZ1xuICogQHBhcmFtIHtudW1iZXJ9IHRcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbGFzdGljSW4odCkge1xuXHRyZXR1cm4gTWF0aC5zaW4oKDEzLjAgKiB0ICogTWF0aC5QSSkgLyAyKSAqIE1hdGgucG93KDIuMCwgMTAuMCAqICh0IC0gMS4wKSk7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlLWVhc2luZ1xuICogQHBhcmFtIHtudW1iZXJ9IHRcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbGFzdGljT3V0KHQpIHtcblx0cmV0dXJuIE1hdGguc2luKCgtMTMuMCAqICh0ICsgMS4wKSAqIE1hdGguUEkpIC8gMikgKiBNYXRoLnBvdygyLjAsIC0xMC4wICogdCkgKyAxLjA7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlLWVhc2luZ1xuICogQHBhcmFtIHtudW1iZXJ9IHRcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvSW5PdXQodCkge1xuXHRyZXR1cm4gdCA9PT0gMC4wIHx8IHQgPT09IDEuMFxuXHRcdD8gdFxuXHRcdDogdCA8IDAuNVxuXHRcdD8gKzAuNSAqIE1hdGgucG93KDIuMCwgMjAuMCAqIHQgLSAxMC4wKVxuXHRcdDogLTAuNSAqIE1hdGgucG93KDIuMCwgMTAuMCAtIHQgKiAyMC4wKSArIDEuMDtcbn1cblxuLyoqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtZWFzaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gdFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cG9Jbih0KSB7XG5cdHJldHVybi
41B0ID09PSAwLjAgPyB0IDogTWF0aC5wb3coMi4wLCAxMC4wICogKHQgLSAxLjApKTtcbn1cblxuLyoqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtZWFzaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gdFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4cG9PdXQodCkge1xuXHRyZXR1cm4gdCA9PT0gMS4wID8gdCA6IDEuMCAtIE1hdGgucG93KDIuMCwgLTEwLjAgKiB0KTtcbn1cblxuLyoqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtZWFzaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gdFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHF1YWRJbk91dCh0KSB7XG5cdHQgLz0gMC41O1xuXHRpZiAodCA8IDEpIHJldHVybiAwLjUgKiB0ICogdDtcblx0dC0tO1xuXHRyZXR1cm4gLTAuNSAqICh0ICogKHQgLSAyKSAtIDEpO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcXVhZEluKHQpIHtcblx0cmV0dXJuIHQgKiB0O1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcXVhZE91dCh0KSB7XG5cdHJldHVybiAtdCAqICh0IC0gMi4wKTtcbn1cblxuLyoqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtZWFzaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gdFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHF1YXJ0SW5PdXQodCkge1xuXHRyZXR1cm4gdCA8IDAuNSA/ICs4LjAgKiBNYXRoLnBvdyh0LCA0LjApIDogLTguMCAqIE1hdGgucG93KHQgLSAxLjAsIDQuMCkgKyAxLjA7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlLWVhc2luZ1xuICogQHBhcmFtIHtudW1iZXJ9IHRcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBxdWFydEluKHQpIHtcblx0cmV0dXJuIE1hdGgucG93KHQsIDQuMCk7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlLWVhc2luZ1xuICogQHBhcmFtIHtudW1iZXJ9IHRcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBxdWFydE91dCh0KSB7XG5cdHJldHVybiBNYXRoLnBvdyh0IC0gMS4wLCAzLjApICogKDEuMCAtIHQpICsgMS4wO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcXVpbnRJbk91dCh0KSB7XG5cdGlmICgodCAqPSAyKSA8IDEpIHJldHVybiAwLjUgKiB0ICogdCAqIHQgKiB0ICogdDtcblx0cmV0dXJuIDAuNSAqICgodCAtPSAyKSAqIHQgKiB0ICogdCAqIHQgKyAyKTtcbn1cblxuLyoqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtZWFzaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gdFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHF1aW50SW4odCkge1xuXHRyZXR1cm4gdCAqIHQgKiB0ICogdCAqIHQ7XG59XG5cbi8qKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlLWVhc2luZ1xuICogQHBhcmFtIHtudW1iZXJ9IHRcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBxdWludE91dCh0KSB7XG5cdHJldHVybiAtLXQgKiB0ICogdCAqIHQgKiB0ICsgMTtcbn1cblxuLyoqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtZWFzaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gdFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpbmVJbk91dCh0KSB7XG5cdHJldHVybiAtMC41ICogKE1hdGguY29zKE1hdGguUEkgKiB0KSAtIDEpO1xufVxuXG4vKipcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS1lYXNpbmdcbiAqIEBwYXJhbSB7bnVtYmVyfSB0XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2luZUluKHQpIHtcblx0Y29uc3QgdiA9IE1hdGguY29zKHQgKiBNYXRoLlBJICogMC41KTtcblx0aWYgKE1hdGguYWJzKHYpIDwgMWUtMTQpIHJldHVybiAxO1xuXHRlbHNlIHJldHVybiAxIC0gdjtcbn1cblxuLyoqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtZWFzaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gdFxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpbmVPdXQodCkge1xuXHRyZXR1cm4gTWF0aC5zaW4oKHQgKiBNYXRoLlBJKSAvIDIpO1xufVxuIiwiaW1wb3J0IHsgY3ViaWNPdXQsIGN1YmljSW5PdXQsIGxpbmVhciB9IGZyb20gJy4uL2Vhc2luZy9pbmRleC5qcyc7XG5pbXBvcnQgeyBhc3NpZ24sIHNwbGl0X2Nzc191bml0LCBpc19mdW5jdGlvbiB9IGZyb20gJy4uL2ludGVybmFsL2luZGV4LmpzJztcblxuLyoqXG4gKiBBbmltYXRlcyBhIGBibHVyYCBmaWx0ZXIgYWxvbmdzaWRlIGFuIGVsZW1lbnQncyBvcGFjaXR5LlxuICpcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS10cmFuc2l0aW9uI2JsdXJcbiAqIEBwYXJhbSB7RWxlbWVudH0gbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4vcHVibGljJykuQmx1clBhcmFtc30gW3BhcmFtc11cbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vcHVibGljJykuVHJhbnNpdGlvbkNvbmZpZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJsdXIoXG5cdG5vZGUsXG5cdHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDQwMCwgZWFzaW5nID0gY3ViaWNJbk91dCwgYW1vdW50ID0gNSwgb3BhY2l0eSA9IDAgfSA9IHt9XG4pIHtcblx0Y29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuXHRjb25zdCB0YXJnZXRfb3BhY2l0eSA9ICtzdHlsZS5vcGFjaXR5O1xuXHRjb25zdCBmID0gc3R5bGUuZmlsdGVyID09PSAnbm9uZScgPyAnJyA6IHN0eWxlLmZpbHRlcjtcblx0Y29uc3Qgb2QgPSB0YXJnZXRfb3BhY2l0eSAqICgxIC0gb3BhY2l0eSk7XG5cdGNvbnN0IFt2YWx1ZSwgdW5pdF0gPSBzcGxpdF9jc3NfdW5pdChhbW91bnQpO1xuXHRyZXR1cm4ge1xuXHRcdGRlbGF5LFxuXHRcdGR1cmF0aW9uLFxuXHRcdGVhc2luZyxcblx0XHRjc3M6IChfdCwgdSkgPT4gYG9wYWNpdHk6ICR7dGFyZ2V0X29wYWNpdHkgLSBvZCAqIHV9OyBmaWx0ZXI6ICR7Zn0gYmx1cigke3UgKiB2YWx1ZX0ke3VuaXR9KTtgXG5cdH07XG59XG5cbi8qKlxuICogQW5pbWF0ZXMgdGhlIG9wYWNpdHkgb2YgYW4gZWxlbWVudCBmcm9tIDAgdG8gdGhlIGN1cnJlbnQgb3BhY2l0eSBmb3IgYGluYCB0cmFuc2l0aW9ucyBhbmQgZnJvbSB0aGUgY3VycmVudCBvcGFjaXR5IHRvIDAgZm9yIGBvdXRgIHRyYW5zaXRpb25zLlxuICpcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS10cmFuc2l0aW9uI2ZhZGVcbiAqIEBwYXJhbSB7RWxlbWVudH0gbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4vcHVibGljJykuRmFkZVBhcmFtc30gW3BhcmFtc11cbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vcHVibGljJykuVHJhbnNpdGlvbkNvbmZpZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZ
41hZGUobm9kZSwgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gNDAwLCBlYXNpbmcgPSBsaW5lYXIgfSA9IHt9KSB7XG5cdGNvbnN0IG8gPSArZ2V0Q29tcHV0ZWRTdHlsZShub2RlKS5vcGFjaXR5O1xuXHRyZXR1cm4ge1xuXHRcdGRlbGF5LFxuXHRcdGR1cmF0aW9uLFxuXHRcdGVhc2luZyxcblx0XHRjc3M6ICh0KSA9PiBgb3BhY2l0eTogJHt0ICogb31gXG5cdH07XG59XG5cbi8qKlxuICogQW5pbWF0ZXMgdGhlIHggYW5kIHkgcG9zaXRpb25zIGFuZCB0aGUgb3BhY2l0eSBvZiBhbiBlbGVtZW50LiBgaW5gIHRyYW5zaXRpb25zIGFuaW1hdGUgZnJvbSB0aGUgcHJvdmlkZWQgdmFsdWVzLCBwYXNzZWQgYXMgcGFyYW1ldGVycyB0byB0aGUgZWxlbWVudCdzIGRlZmF1bHQgdmFsdWVzLiBgb3V0YCB0cmFuc2l0aW9ucyBhbmltYXRlIGZyb20gdGhlIGVsZW1lbnQncyBkZWZhdWx0IHZhbHVlcyB0byB0aGUgcHJvdmlkZWQgdmFsdWVzLlxuICpcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS10cmFuc2l0aW9uI2ZseVxuICogQHBhcmFtIHtFbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9wdWJsaWMnKS5GbHlQYXJhbXN9IFtwYXJhbXNdXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuL3B1YmxpYycpLlRyYW5zaXRpb25Db25maWd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbHkoXG5cdG5vZGUsXG5cdHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDQwMCwgZWFzaW5nID0gY3ViaWNPdXQsIHggPSAwLCB5ID0gMCwgb3BhY2l0eSA9IDAgfSA9IHt9XG4pIHtcblx0Y29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuXHRjb25zdCB0YXJnZXRfb3BhY2l0eSA9ICtzdHlsZS5vcGFjaXR5O1xuXHRjb25zdCB0cmFuc2Zvcm0gPSBzdHlsZS50cmFuc2Zvcm0gPT09ICdub25lJyA/ICcnIDogc3R5bGUudHJhbnNmb3JtO1xuXHRjb25zdCBvZCA9IHRhcmdldF9vcGFjaXR5ICogKDEgLSBvcGFjaXR5KTtcblx0Y29uc3QgW3hWYWx1ZSwgeFVuaXRdID0gc3BsaXRfY3NzX3VuaXQoeCk7XG5cdGNvbnN0IFt5VmFsdWUsIHlVbml0XSA9IHNwbGl0X2Nzc191bml0KHkpO1xuXHRyZXR1cm4ge1xuXHRcdGRlbGF5LFxuXHRcdGR1cmF0aW9uLFxuXHRcdGVhc2luZyxcblx0XHRjc3M6ICh0LCB1KSA9PiBgXG5cdFx0XHR0cmFuc2Zvcm06ICR7dHJhbnNmb3JtfSB0cmFuc2xhdGUoJHsoMSAtIHQpICogeFZhbHVlfSR7eFVuaXR9LCAkeygxIC0gdCkgKiB5VmFsdWV9JHt5VW5pdH0pO1xuXHRcdFx0b3BhY2l0eTogJHt0YXJnZXRfb3BhY2l0eSAtIG9kICogdX1gXG5cdH07XG59XG5cbi8qKlxuICogU2xpZGVzIGFuIGVsZW1lbnQgaW4gYW5kIG91dC5cbiAqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtdHJhbnNpdGlvbiNzbGlkZVxuICogQHBhcmFtIHtFbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9wdWJsaWMnKS5TbGlkZVBhcmFtc30gW3BhcmFtc11cbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vcHVibGljJykuVHJhbnNpdGlvbkNvbmZpZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWRlKG5vZGUsIHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDQwMCwgZWFzaW5nID0gY3ViaWNPdXQsIGF4aXMgPSAneScgfSA9IHt9KSB7XG5cdGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcblx0Y29uc3Qgb3BhY2l0eSA9ICtzdHlsZS5vcGFjaXR5O1xuXHRjb25zdCBwcmltYXJ5X3Byb3BlcnR5ID0gYXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXHRjb25zdCBwcmltYXJ5X3Byb3BlcnR5X3ZhbHVlID0gcGFyc2VGbG9hdChzdHlsZVtwcmltYXJ5X3Byb3BlcnR5XSk7XG5cdGNvbnN0IHNlY29uZGFyeV9wcm9wZXJ0aWVzID0gYXhpcyA9PT0gJ3knID8gWyd0b3AnLCAnYm90dG9tJ10gOiBbJ2xlZnQnLCAncmlnaHQnXTtcblx0Y29uc3QgY2FwaXRhbGl6ZWRfc2Vjb25kYXJ5X3Byb3BlcnRpZXMgPSBzZWNvbmRhcnlfcHJvcGVydGllcy5tYXAoXG5cdFx0KGUpID0+IGAke2VbMF0udG9VcHBlckNhc2UoKX0ke2Uuc2xpY2UoMSl9YFxuXHQpO1xuXHRjb25zdCBwYWRkaW5nX3N0YXJ0X3ZhbHVlID0gcGFyc2VGbG9hdChzdHlsZVtgcGFkZGluZyR7Y2FwaXRhbGl6ZWRfc2Vjb25kYXJ5X3Byb3BlcnRpZXNbMF19YF0pO1xuXHRjb25zdCBwYWRkaW5nX2VuZF92YWx1ZSA9IHBhcnNlRmxvYXQoc3R5bGVbYHBhZGRpbmcke2NhcGl0YWxpemVkX3NlY29uZGFyeV9wcm9wZXJ0aWVzWzFdfWBdKTtcblx0Y29uc3QgbWFyZ2luX3N0YXJ0X3ZhbHVlID0gcGFyc2VGbG9hdChzdHlsZVtgbWFyZ2luJHtjYXBpdGFsaXplZF9zZWNvbmRhcnlfcHJvcGVydGllc1swXX1gXSk7XG5cdGNvbnN0IG1hcmdpbl9lbmRfdmFsdWUgPSBwYXJzZUZsb2F0KHN0eWxlW2BtYXJnaW4ke2NhcGl0YWxpemVkX3NlY29uZGFyeV9wcm9wZXJ0aWVzWzFdfWBdKTtcblx0Y29uc3QgYm9yZGVyX3dpZHRoX3N0YXJ0X3ZhbHVlID0gcGFyc2VGbG9hdChcblx0XHRzdHlsZVtgYm9yZGVyJHtjYXBpdGFsaXplZF9zZWNvbmRhcnlfcHJvcGVydGllc1swXX1XaWR0aGBdXG5cdCk7XG5cdGNvbnN0IGJvcmRlcl93aWR0aF9lbmRfdmFsdWUgPSBwYXJzZUZsb2F0KFxuXHRcdHN0eWxlW2Bib3JkZXIke2NhcGl0YWxpemVkX3NlY29uZGFyeV9wcm9wZXJ0aWVzWzFdfVdpZHRoYF1cblx0KTtcblx0cmV0dXJuIHtcblx0XHRkZWxheSxcblx0XHRkdXJhdGlvbixcblx0XHRlYXNpbmcsXG5cdFx0Y3NzOiAodCkgPT5cblx0XHRcdCdvdmVyZmxvdzogaGlkZGVuOycgK1xuXHRcdFx0YG9wYWNpdHk6ICR7TWF0aC5taW4odCAqIDIwLCAxKSAqIG9wYWNpdHl9O2AgK1xuXHRcdFx0YCR7cHJpbWFyeV9wcm9wZXJ0eX06ICR7dCAqIHByaW1hcnlfcHJvcGVydHlfdmFsdWV9cHg7YCArXG5cdFx0XHRgcGFkZGluZy0ke3NlY29uZGFyeV9wcm9wZXJ0aWVzWzBdfTogJHt0ICogcGFkZGluZ19zdGFydF92YWx1ZX1weDtgICtcblx0XHRcdGBwYWRkaW5nLSR7c2Vjb25kYXJ5X3Byb3BlcnRpZXNbMV19OiAke3QgKiBwYWRkaW5nX2VuZF92YWx1ZX1weDtgICtcblx0XHRcdGBtYXJnaW4tJHtzZWNvbmRhcnlfcHJvcGVydGllc1swXX06ICR7dCAqIG1hcmdpbl9zdGFydF92YWx1ZX1weDtgICtcblx0XHRcdGBtYXJnaW4tJHtzZWNvbmRhcnlfcHJvcGVydGllc1sxXX06ICR7dCAqIG1hcmdpbl9lbmRfdmFsdWV9cHg7YCArXG5cdFx0XHRgYm9yZGVyLSR7c2Vjb25kYXJ5X3Byb3BlcnRpZXNbMF19LXdpZHR
41oOiAke3QgKiBib3JkZXJfd2lkdGhfc3RhcnRfdmFsdWV9cHg7YCArXG5cdFx0XHRgYm9yZGVyLSR7c2Vjb25kYXJ5X3Byb3BlcnRpZXNbMV19LXdpZHRoOiAke3QgKiBib3JkZXJfd2lkdGhfZW5kX3ZhbHVlfXB4O2Bcblx0fTtcbn1cblxuLyoqXG4gKiBBbmltYXRlcyB0aGUgb3BhY2l0eSBhbmQgc2NhbGUgb2YgYW4gZWxlbWVudC4gYGluYCB0cmFuc2l0aW9ucyBhbmltYXRlIGZyb20gYW4gZWxlbWVudCdzIGN1cnJlbnQgKGRlZmF1bHQpIHZhbHVlcyB0byB0aGUgcHJvdmlkZWQgdmFsdWVzLCBwYXNzZWQgYXMgcGFyYW1ldGVycy4gYG91dGAgdHJhbnNpdGlvbnMgYW5pbWF0ZSBmcm9tIHRoZSBwcm92aWRlZCB2YWx1ZXMgdG8gYW4gZWxlbWVudCdzIGRlZmF1bHQgdmFsdWVzLlxuICpcbiAqIGh0dHBzOi8vc3ZlbHRlLmRldi9kb2NzL3N2ZWx0ZS10cmFuc2l0aW9uI3NjYWxlXG4gKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3B1YmxpYycpLlNjYWxlUGFyYW1zfSBbcGFyYW1zXVxuICogQHJldHVybnMge2ltcG9ydCgnLi9wdWJsaWMnKS5UcmFuc2l0aW9uQ29uZmlnfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NhbGUoXG5cdG5vZGUsXG5cdHsgZGVsYXkgPSAwLCBkdXJhdGlvbiA9IDQwMCwgZWFzaW5nID0gY3ViaWNPdXQsIHN0YXJ0ID0gMCwgb3BhY2l0eSA9IDAgfSA9IHt9XG4pIHtcblx0Y29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuXHRjb25zdCB0YXJnZXRfb3BhY2l0eSA9ICtzdHlsZS5vcGFjaXR5O1xuXHRjb25zdCB0cmFuc2Zvcm0gPSBzdHlsZS50cmFuc2Zvcm0gPT09ICdub25lJyA/ICcnIDogc3R5bGUudHJhbnNmb3JtO1xuXHRjb25zdCBzZCA9IDEgLSBzdGFydDtcblx0Y29uc3Qgb2QgPSB0YXJnZXRfb3BhY2l0eSAqICgxIC0gb3BhY2l0eSk7XG5cdHJldHVybiB7XG5cdFx0ZGVsYXksXG5cdFx0ZHVyYXRpb24sXG5cdFx0ZWFzaW5nLFxuXHRcdGNzczogKF90LCB1KSA9PiBgXG5cdFx0XHR0cmFuc2Zvcm06ICR7dHJhbnNmb3JtfSBzY2FsZSgkezEgLSBzZCAqIHV9KTtcblx0XHRcdG9wYWNpdHk6ICR7dGFyZ2V0X29wYWNpdHkgLSBvZCAqIHV9XG5cdFx0YFxuXHR9O1xufVxuXG4vKipcbiAqIEFuaW1hdGVzIHRoZSBzdHJva2Ugb2YgYW4gU1ZHIGVsZW1lbnQsIGxpa2UgYSBzbmFrZSBpbiBhIHR1YmUuIGBpbmAgdHJhbnNpdGlvbnMgYmVnaW4gd2l0aCB0aGUgcGF0aCBpbnZpc2libGUgYW5kIGRyYXcgdGhlIHBhdGggdG8gdGhlIHNjcmVlbiBvdmVyIHRpbWUuIGBvdXRgIHRyYW5zaXRpb25zIHN0YXJ0IGluIGEgdmlzaWJsZSBzdGF0ZSBhbmQgZ3JhZHVhbGx5IGVyYXNlIHRoZSBwYXRoLiBgZHJhd2Agb25seSB3b3JrcyB3aXRoIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIGBnZXRUb3RhbExlbmd0aGAgbWV0aG9kLCBsaWtlIGA8cGF0aD5gIGFuZCBgPHBvbHlsaW5lPmAuXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlLXRyYW5zaXRpb24jZHJhd1xuICogQHBhcmFtIHtTVkdFbGVtZW50ICYgeyBnZXRUb3RhbExlbmd0aCgpOiBudW1iZXIgfX0gbm9kZVxuICogQHBhcmFtIHtpbXBvcnQoJy4vcHVibGljJykuRHJhd1BhcmFtc30gW3BhcmFtc11cbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vcHVibGljJykuVHJhbnNpdGlvbkNvbmZpZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYXcobm9kZSwgeyBkZWxheSA9IDAsIHNwZWVkLCBkdXJhdGlvbiwgZWFzaW5nID0gY3ViaWNJbk91dCB9ID0ge30pIHtcblx0bGV0IGxlbiA9IG5vZGUuZ2V0VG90YWxMZW5ndGgoKTtcblx0Y29uc3Qgc3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuXHRpZiAoc3R5bGUuc3Ryb2tlTGluZWNhcCAhPT0gJ2J1dHQnKSB7XG5cdFx0bGVuICs9IHBhcnNlSW50KHN0eWxlLnN0cm9rZVdpZHRoKTtcblx0fVxuXHRpZiAoZHVyYXRpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdGlmIChzcGVlZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRkdXJhdGlvbiA9IDgwMDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZHVyYXRpb24gPSBsZW4gLyBzcGVlZDtcblx0XHR9XG5cdH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0ZHVyYXRpb24gPSBkdXJhdGlvbihsZW4pO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0ZGVsYXksXG5cdFx0ZHVyYXRpb24sXG5cdFx0ZWFzaW5nLFxuXHRcdGNzczogKF8sIHUpID0+IGBcblx0XHRcdHN0cm9rZS1kYXNoYXJyYXk6ICR7bGVufTtcblx0XHRcdHN0cm9rZS1kYXNob2Zmc2V0OiAke3UgKiBsZW59O1xuXHRcdGBcblx0fTtcbn1cblxuLyoqXG4gKiBUaGUgYGNyb3NzZmFkZWAgZnVuY3Rpb24gY3JlYXRlcyBhIHBhaXIgb2YgW3RyYW5zaXRpb25zXShodHRwczovL3N2ZWx0ZS5kZXYvZG9jcyN0ZW1wbGF0ZS1zeW50YXgtZWxlbWVudC1kaXJlY3RpdmVzLXRyYW5zaXRpb24tZm4pIGNhbGxlZCBgc2VuZGAgYW5kIGByZWNlaXZlYC4gV2hlbiBhbiBlbGVtZW50IGlzICdzZW50JywgaXQgbG9va3MgZm9yIGEgY29ycmVzcG9uZGluZyBlbGVtZW50IGJlaW5nICdyZWNlaXZlZCcsIGFuZCBnZW5lcmF0ZXMgYSB0cmFuc2l0aW9uIHRoYXQgdHJhbnNmb3JtcyB0aGUgZWxlbWVudCB0byBpdHMgY291bnRlcnBhcnQncyBwb3NpdGlvbiBhbmQgZmFkZXMgaXQgb3V0LiBXaGVuIGFuIGVsZW1lbnQgaXMgJ3JlY2VpdmVkJywgdGhlIHJldmVyc2UgaGFwcGVucy4gSWYgdGhlcmUgaXMgbm8gY291bnRlcnBhcnQsIHRoZSBgZmFsbGJhY2tgIHRyYW5zaXRpb24gaXMgdXNlZC5cbiAqXG4gKiBodHRwczovL3N2ZWx0ZS5kZXYvZG9jcy9zdmVsdGUtdHJhbnNpdGlvbiNjcm9zc2ZhZGVcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3B1YmxpYycpLkNyb3NzZmFkZVBhcmFtcyAmIHtcbiAqIFx0ZmFsbGJhY2s/OiAobm9kZTogRWxlbWVudCwgcGFyYW1zOiBpbXBvcnQoJy4vcHVibGljJykuQ3Jvc3NmYWRlUGFyYW1zLCBpbnRybzogYm9vbGVhbikgPT4gaW1wb3J0KCcuL3B1YmxpYycpLlRyYW5zaXRpb25Db25maWc7XG4gKiB9fSBwYXJhbXNcbiAqIEByZXR1cm5zIHtbKG5vZGU6IGFueSwgcGFyYW1zOiBpbXBvcnQoJy4vcHVibGljJykuQ3Jvc3NmYWRlUGFyYW1zICYgeyBrZXk6IGFueTsgfSkgPT4gKCkgPT4gaW1wb3J0KCcuL3B1YmxpYycpLlRyYW5zaXRpb25Db25maWcsIChub2RlOiBhbnksIHBhcmFtczogaW1wb3J0KCcuL3B1YmxpYycpLkNyb3NzZmFkZVBhcmFtcyAmIHsga2V5OiBhbnk7IH0pID0+ICgpID0+IGltcG9ydCgnLi9wdWJsaWMnKS5UcmFuc2l0aW9uQ29uZmlnXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyb3NzZmFkZSh7IGZhbGxiYWNrLCAuLi5kZWZhdWx0cyB9KSB7XG5cdC8qKiBAdHlwZSB7TWFwPGFueSwgRWxlbWVudD59ICovXG5cdGNvbnN0IHRvX3JlY2VpdmUgP
41SBuZXcgTWFwKCk7XG5cdC8qKiBAdHlwZSB7TWFwPGFueSwgRWxlbWVudD59ICovXG5cdGNvbnN0IHRvX3NlbmQgPSBuZXcgTWFwKCk7XG5cdC8qKlxuXHQgKiBAcGFyYW0ge0VsZW1lbnR9IGZyb21fbm9kZVxuXHQgKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGVcblx0ICogQHBhcmFtIHtpbXBvcnQoJy4vcHVibGljJykuQ3Jvc3NmYWRlUGFyYW1zfSBwYXJhbXNcblx0ICogQHJldHVybnMge2ltcG9ydCgnLi9wdWJsaWMnKS5UcmFuc2l0aW9uQ29uZmlnfVxuXHQgKi9cblx0ZnVuY3Rpb24gY3Jvc3NmYWRlKGZyb21fbm9kZSwgbm9kZSwgcGFyYW1zKSB7XG5cdFx0Y29uc3Qge1xuXHRcdFx0ZGVsYXkgPSAwLFxuXHRcdFx0ZHVyYXRpb24gPSAoZCkgPT4gTWF0aC5zcXJ0KGQpICogMzAsXG5cdFx0XHRlYXNpbmcgPSBjdWJpY091dFxuXHRcdH0gPSBhc3NpZ24oYXNzaWduKHt9LCBkZWZhdWx0cyksIHBhcmFtcyk7XG5cdFx0Y29uc3QgZnJvbSA9IGZyb21fbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHRjb25zdCB0byA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0Y29uc3QgZHggPSBmcm9tLmxlZnQgLSB0by5sZWZ0O1xuXHRcdGNvbnN0IGR5ID0gZnJvbS50b3AgLSB0by50b3A7XG5cdFx0Y29uc3QgZHcgPSBmcm9tLndpZHRoIC8gdG8ud2lkdGg7XG5cdFx0Y29uc3QgZGggPSBmcm9tLmhlaWdodCAvIHRvLmhlaWdodDtcblx0XHRjb25zdCBkID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcblx0XHRjb25zdCBzdHlsZSA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG5cdFx0Y29uc3QgdHJhbnNmb3JtID0gc3R5bGUudHJhbnNmb3JtID09PSAnbm9uZScgPyAnJyA6IHN0eWxlLnRyYW5zZm9ybTtcblx0XHRjb25zdCBvcGFjaXR5ID0gK3N0eWxlLm9wYWNpdHk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGRlbGF5LFxuXHRcdFx0ZHVyYXRpb246IGlzX2Z1bmN0aW9uKGR1cmF0aW9uKSA/IGR1cmF0aW9uKGQpIDogZHVyYXRpb24sXG5cdFx0XHRlYXNpbmcsXG5cdFx0XHRjc3M6ICh0LCB1KSA9PiBgXG5cdFx0XHRcdG9wYWNpdHk6ICR7dCAqIG9wYWNpdHl9O1xuXHRcdFx0XHR0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgbGVmdDtcblx0XHRcdFx0dHJhbnNmb3JtOiAke3RyYW5zZm9ybX0gdHJhbnNsYXRlKCR7dSAqIGR4fXB4LCR7dSAqIGR5fXB4KSBzY2FsZSgke3QgKyAoMSAtIHQpICogZHd9LCAke1xuXHRcdFx0XHR0ICsgKDEgLSB0KSAqIGRoXG5cdFx0XHR9KTtcblx0XHRcdGBcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7TWFwPGFueSwgRWxlbWVudD59IGl0ZW1zXG5cdCAqIEBwYXJhbSB7TWFwPGFueSwgRWxlbWVudD59IGNvdW50ZXJwYXJ0c1xuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGludHJvXG5cdCAqIEByZXR1cm5zIHsobm9kZTogYW55LCBwYXJhbXM6IGltcG9ydCgnLi9wdWJsaWMnKS5Dcm9zc2ZhZGVQYXJhbXMgJiB7IGtleTogYW55OyB9KSA9PiAoKSA9PiBpbXBvcnQoJy4vcHVibGljJykuVHJhbnNpdGlvbkNvbmZpZ31cblx0ICovXG5cdGZ1bmN0aW9uIHRyYW5zaXRpb24oaXRlbXMsIGNvdW50ZXJwYXJ0cywgaW50cm8pIHtcblx0XHRyZXR1cm4gKG5vZGUsIHBhcmFtcykgPT4ge1xuXHRcdFx0aXRlbXMuc2V0KHBhcmFtcy5rZXksIG5vZGUpO1xuXHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0aWYgKGNvdW50ZXJwYXJ0cy5oYXMocGFyYW1zLmtleSkpIHtcblx0XHRcdFx0XHRjb25zdCBvdGhlcl9ub2RlID0gY291bnRlcnBhcnRzLmdldChwYXJhbXMua2V5KTtcblx0XHRcdFx0XHRjb3VudGVycGFydHMuZGVsZXRlKHBhcmFtcy5rZXkpO1xuXHRcdFx0XHRcdHJldHVybiBjcm9zc2ZhZGUob3RoZXJfbm9kZSwgbm9kZSwgcGFyYW1zKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBpZiB0aGUgbm9kZSBpcyBkaXNhcHBlYXJpbmcgYWx0b2dldGhlclxuXHRcdFx0XHQvLyAoaS5lLiB3YXNuJ3QgY2xhaW1lZCBieSB0aGUgb3RoZXIgbGlzdClcblx0XHRcdFx0Ly8gdGhlbiB3ZSBuZWVkIHRvIHN1cHBseSBhbiBvdXRyb1xuXHRcdFx0XHRpdGVtcy5kZWxldGUocGFyYW1zLmtleSk7XG5cdFx0XHRcdHJldHVybiBmYWxsYmFjayAmJiBmYWxsYmFjayhub2RlLCBwYXJhbXMsIGludHJvKTtcblx0XHRcdH07XG5cdFx0fTtcblx0fVxuXHRyZXR1cm4gW3RyYW5zaXRpb24odG9fc2VuZCwgdG9fcmVjZWl2ZSwgZmFsc2UpLCB0cmFuc2l0aW9uKHRvX3JlY2VpdmUsIHRvX3NlbmQsIHRydWUpXTtcbn1cbiIsIjxzY3JpcHQ+XG4gIGV4cG9ydCBsZXQgaXNfY2hlY2tlZCA9IGZhbHNlXG4gIGV4cG9ydCBsZXQgaXNfZml4ZWQgPSBmYWxzZVxuICBleHBvcnQgbGV0IHRleHQgPSBudWxsXG4gIGV4cG9ydCBsZXQgZGVzYyA9IG51bGxcbiAgZXhwb3J0IGxldCBjb29raWVzID0gW11cbiAgZXhwb3J0IGxldCB0b2dnbGUgPSAoKSA9PiB7fVxuXG4gIGNvbnN0IG9wZW4gPSBmYWxzZVxuXG4gICQ6IGJ0bkNzcyA9ICgpID0+IHtcbiAgICBpZiAoaXNfZml4ZWQpIHJldHVybiAnYmctYnAtZ3JheS1kYXJrJ1xuICAgIHJldHVybiAoaXNfY2hlY2tlZCkgPyAnYmctZ3JlZW4tNTAwJyA6ICdiZy1yZWQtNTAwJ1xuICB9XG5cbiAgJDogc3BhbjEgPSAoaXNfY2hlY2tlZCkgPyAndHJhbnNsYXRlLXgtNScgOiAndHJhbnNsYXRlLXgtMCdcbiAgJDogc3BhbjIgPSAoaXNfY2hlY2tlZCkgPyAnb3BhY2l0eS0wIGVhc2Utb3V0IGR1cmF0aW9uLTEwMCcgOiAnb3BhY2l0eS0xMDAgZWFzZS1pbiBkdXJhdGlvbi0yMDAnXG4gICQ6IHNwYW4zID0gKGlzX2NoZWNrZWQpID8gJ29wYWNpdHktMTAwIGVhc2UtaW4gZHVyYXRpb24tMjAwJyA6ICdvcGFjaXR5LTAgZWFzZS1vdXQgZHVyYXRpb24tMTAwJ1xuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJyZWxhdGl2ZVwiPlxuICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgcmlnaHQtMiB0b3AtMlwiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJ7YnRuQ3NzKCl9IHJlbGF0aXZlIGlubGluZS1mbGV4IGgtNiB3LTExIGZsZXgtc2hyaW5rLTAgY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlci0yIGJvcmRlci10cmFuc3B
41hcmVudCB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0yMDAgZWFzZS1pbi1vdXQgZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluZGlnby01MDAgZm9jdXM6cmluZy1vZmZzZXQtMlwiXG4gICAgICByb2xlPVwic3dpdGNoXCJcbiAgICAgIGFyaWEtY2hlY2tlZD1cImZhbHNlXCJcbiAgICAgIG9uOmNsaWNrPXt0b2dnbGV9XG4gICAgPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+RWluc3RlbGx1bmcgc2V0emVuPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ7c3BhbjF9IHBvaW50ZXItZXZlbnRzLW5vbmUgcmVsYXRpdmUgaW5saW5lLWJsb2NrIGgtNSB3LTUgdHJhbnNmb3JtIHJvdW5kZWQtZnVsbCBiZy13aGl0ZSB0ZXh0LWJsYWNrIHNoYWRvdyByaW5nLTAgdHJhbnNpdGlvbiBkdXJhdGlvbi0yMDAgZWFzZS1pbi1vdXRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ7c3BhbjJ9IGFic29sdXRlIGluc2V0LTAgZmxleCBoLWZ1bGwgdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLW9wYWNpdHlcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC0zIHctMyB0ZXh0LWdyYXktNDAwXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgcm9sZT1cInByZXNlbnRhdGlvblwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNNCA4bDItMm0wIDBsMi0yTTYgNkw0IDRtMiAybDIgMlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ7c3BhbjN9IGFic29sdXRlIGluc2V0LTAgZmxleCBoLWZ1bGwgdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLW9wYWNpdHlcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC0zIHctMyB0ZXh0LWluZGlnby02MDBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIHJvbGU9XCJwcmVzZW50YXRpb25cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTTMuNzA3IDUuMjkzYTEgMSAwIDAwLTEuNDE0IDEuNDE0bDEuNDE0LTEuNDE0ek01IDhsLS43MDcuNzA3YTEgMSAwIDAwMS40MTQgMEw1IDh6bTQuNzA3LTMuMjkzYTEgMSAwIDAwLTEuNDE0LTEuNDE0bDEuNDE0IDEuNDE0em0tNy40MTQgMmwyIDIgMS40MTQtMS40MTQtMi0yLTEuNDE0IDEuNDE0em0zLjQxNCAybDQtNC0xLjQxNC0xLjQxNC00IDQgMS40MTQgMS40MTR6XCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkZXRhaWxzXG4gICAgY2xhc3M9XCJib3JkZXIgYm9yZGVyLWJwLWdyYXktbWlkZGxlIHRleHQtYmxhY2sgZGFyazp0ZXh0LXdoaXRlIGJnLXdoaXRlIGRhcms6YmctYmxhY2tcIlxuICAgIG9wZW49XCJ7b3Blbn1cIlxuICA+XG4gICAgPHN1bW1hcnkgY2xhc3M9XCJmbGV4LTEgYmctaW5oZXJpdCBweS0yIHB4LTQgY3Vyc29yLXBvaW50ZXIgaG92ZXI6dGV4dC1icC1ibHVlIGR1cmF0aW9uLTUwMFwiPnt0ZXh0fTwvc3VtbWFyeT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBweC00IHBiLTIgYmctd2hpdGUgZGFyazpiZy1ibGFjayBibG9jayB0ZXh0LWJsYWNrIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgeyNpZiBkZXNjfVxuICAgICAgICA8cCBjbGFzcz1cImZsZXgtMSB0ZXh0LXNtXCI+e0BodG1sIGRlc2N9PC9wPlxuICAgICAgey9pZn1cbiAgICAgIHsjaWYgY29va2llcy5sZW5ndGh9XG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSBteS0yXCI+Rm9sZ2VuZGUgQ29va2llcyB3ZXJkZW4gZ2VzcGVpY2hlcnQ8L3A+XG4gICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZGlzYyB0ZXh0LXNtIG1sLThcIj5cbiAgICAgICAgICB7I2VhY2ggY29va2llcyBhcyBjb29raWV9XG4gICAgICAgICAgICA8bGk+PHN0cm9uZz57Y29va2llLm5hbWV9PC9zdHJvbmc+PGJyLz57Y29va2llLmRlc2N9PC9saT5cbiAgICAgICAgICB7L2VhY2h9XG4gICAgICAgIDwvdWw+XG4gICAgICB7L2lmfVxuICAgIDwvZGl2PlxuICA8L2RldGFpbHM+XG48L2Rpdj5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7ZmFkZX0gZnJvbSAnc3ZlbHRlL3RyYW5zaXRpb24nXG4gIGltcG9ydCB7YnBjb25maWd9IGZyb20gJ0BsYXlvdXQvanMvc3lzdGVtLmNvbmZpZy5qcydcbiAgaW1wb3J0IHtzZXRDb29raWUsIGRlbENvb2tpZSwgZGVsQ29va2llc30gZnJvbSAnQGxheW91dC9qcy9jb29raWVzLmpzJ1xuICBpbXBvcnQge1xuICAgIGFsbG93RnVuY3Rpb25hbENvb2tpZXNTdG9yZSxcbiAgICBhbGxvd1RyYWNraW5nQ29va2llc1N0b3JlLFxuICAgIGFsbG93VHdpdHRlckNvb2tpZXNTdG9yZSxcbiAgICBhbGxvd1lvdXR1YmVDb29raWVzU3RvcmVcbiAgfSBmcm9tICdAbGF5b3V0L3N0b3Jlcy9tYWluc3RvcmUuanMnXG4gIGltcG9ydCBDb29raWVDaGVja2JveCBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZWxlbWVudHMvQ29va2llQ2hlY2tib3guc3ZlbHRlJ1xuXG4gIGV4cG9ydCBsZXQgc2hvd0Jhbm5lciA9IGZhbHNlXG5cbiAgY29uc3QgbmVlZGVkQ29va2llcyA9IHtcbiAgICBpc19jaGVja2VkOiB0cnVlLFxuICAgIGlzX2ZpeGVkOiB0cnVlLFxuICAgIHRleHQ6ICdOb3R3ZW5kaWdlIENvb2tpZXMnLFxuICAgIGRlc2M6ICdOb3R3ZW5kaWdlIENvb2tpZXMgaGVsZmVuIGRhYmVpLCBlaW5lIFdlYnNlaXRlIG51dHpiYXIgenUgbWFjaGVuLCBpbmRlbSBzaWUgR3J1bmRmdW5rdGlvbmVuIHdpZSBTZWl0ZW5uYXZpZ2F0aW9uIHVuZCBadWdyaWZmIGF1ZiBzaWNoZXJlIEJlcmVpY2hlIGRlciBXZWJzZWl0ZSBlcm3DtmdsaWNoZW4uIERpZSBXZWJzZWl0ZSBrYW5uIG9obmUgZGllc2UgQ29va2llcyBuaWNodCByaWNodGlnIGZ1bmt0aW9uaWVyZW4uJyxcbiAgICBjb29raWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdzaG93QmFubmVyJyxcbiAgICAgICAgZGVzYzogJ1NwZWljaGVydCBhYiwgZGFzcyBkYXMgQ29va2llLUJhbm5lciBiZXJlaXRzIGdlemVpZ3Qgd3VyZGUnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYWxsb3dGdW5jdGlvbmFsQ29va2llcycsXG4gICAgICAgIGRlc2M6ICdTcGVpY2hlcnQgYWIsIG9iIGZ1bmt0aW9uYWxlIENvb2tpZXMgZ2VzcGVpY2hlcnQgd2VyZGVuIGTDvHJmZW4nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYWxsb3dUcmFja2luZ0Nvb2tpZXMnLFxuICAgICAgICBkZXNjOiAnU3BlaWNoZXJ0IGFiLCBvYiBmdW5rdGlvbmFsZSBDb29raWVzIGdlc3BlaWNoZXJ0IHdlcmRlbiBkw
417xyZmVuJ1xuICAgICAgfVxuICAgIF1cbiAgfVxuICBpZiAoYnBjb25maWcudXNlX3R3aXR0ZXIpIHtcbiAgICBuZWVkZWRDb29raWVzLmNvb2tpZXMucHVzaChcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2FsbG93WW91dHViZUNvb2tpZXMnLFxuICAgICAgICBkZXNjOiAnU3BlaWNoZXJ0IGFiLCBvYiBZb3V0dWJlIENvb2tpZXMgZ2VzcGVpY2hlcnQgd2VyZGVuIGTDvHJmZW4nXG4gICAgICB9XG4gICAgKVxuICB9XG4gIGlmIChicGNvbmZpZy51c2VfeW91dHViZSkge1xuICAgIG5lZWRlZENvb2tpZXMuY29va2llcy5wdXNoKFxuICAgICAge1xuICAgICAgICBuYW1lOiAnYWxsb3dUd2l0dGVyQ29va2llcycsXG4gICAgICAgIGRlc2M6ICdTcGVpY2hlcnQgYWIsIG9iIFR3aXR0ZXIgQ29va2llcyBnZXNwZWljaGVydCB3ZXJkZW4gZMO8cmZlbidcbiAgICAgIH1cbiAgICApXG4gIH1cbiAgbGV0IGZ1Q2hlY2sgPSBmYWxzZVxuICBhbGxvd0Z1bmN0aW9uYWxDb29raWVzU3RvcmUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICBmdUNoZWNrID0gdmFsdWVcbiAgfSlcbiAgY29uc3QgZnVuY3Rpb25hbENvb2tpZXMgPSB7XG4gICAgaXNfZml4ZWQ6IGZhbHNlLFxuICAgIHRleHQ6ICdGdW5rdGlvbmFsZSBDb29raWVzJyxcbiAgICBkZXNjOiAnRnVua3Rpb25hbGUgQ29va2llcyBoZWxmZW4gZGFiZWksIGVpbmUgV2Vic2VpdGUgZsO8ciBkZW4gQmVudXR6ZXIgYmVzc2VyIG51dHpiYXIgenUgbWFjaGVuLiBFcyBrw7ZubmVuIEVpbnN0ZWxsdW5nZW4gZ2VzcGVpY2hlcnQgd2VyZGVuLCBkYW1pdCBkZXIgQmVudXR6ZXIgZGllc2UgZGFubiBuaWNodCBpbW1lciB3aWVkZXIgdm9ybmVobWVuIG11c3MuJyxcbiAgICBjb29raWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdkYXJrTW9kZScsXG4gICAgICAgIGRlc2M6ICdTcGVpY2hlcnQgZGllIGdld8OkaGx0ZSBLb250cmFzdGVpbnN0ZWxsdW5nJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ2ZvbnRNb2RlJyxcbiAgICAgICAgZGVzYzogJ1NwZWljaGVydCBkaWUgZ2V3w6RobHRlIFNjaHJpZnRncsO2w59lJ1xuICAgICAgfVxuICAgIF0sXG4gICAgdG9nZ2xlOiAoKSA9PiB7XG4gICAgICBmdUNoZWNrID0gIWZ1Q2hlY2tcbiAgICB9LFxuICAgIGRlbEFsbENvb2tpZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuY29va2llcy5tYXAoYyA9PiB7XG4gICAgICAgIGRlbENvb2tpZShjLm5hbWUpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGxldCB0ckNoZWNrID0gZmFsc2VcbiAgYWxsb3dUcmFja2luZ0Nvb2tpZXNTdG9yZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgIHRyQ2hlY2sgPSB2YWx1ZVxuICB9KVxuICBjb25zdCB0cmFja2luZ0Nvb2tpZXMgPSB7XG4gICAgaXNfZml4ZWQ6IGZhbHNlLFxuICAgIHRleHQ6ICdBbmFseXNlIENvb2tpZXMnLFxuICAgIGRlc2M6ICdJY2ggYmluIGRhbWl0IGVpbnZlcnN0YW5kZW4sIGRhc3MgZWluZSBBdXN3ZXJ0dW5nIG1laW5lciBadWdyaWZmZSBiencuIGRpZSBBbmFseXNlIG1laW5lcyBTdXJmdmVyaGFsdGVucyBkdXJjaGdlZsO8aHJ0IHdpcmQuIERpZXMgZXJmb2xndCBtaXQgZGVtIEFuYWx5c2UtVG9vbCBNYXRvbW8sIGRhcyBzbyBlaW5nZXN0ZWxsdCBpc3QsIGRhc3MgZGllIEluZm9ybWF0aW9uZW4gw7xiZXIgbWVpbiBOdXR6dW5nc3ZlcmhhbHRlbiBudXIgYW5vbnltaXNpZXJ0IGdlc3BlaWNoZXJ0IHdlcmRlbi4gRWluZSBadW9yZG51bmcgenVyIE51dHplcmluIG9kZXIgenVtIE51dHplciBpc3QgbmljaHQgbWVociBtw7ZnbGljaC4gRGllIENvb2tpZXMga8O2bm5lbiBqZWRlcnplaXQgZGVha3RpdmllcnQgd2VyZGVuLiBHZW5lcmVsbCBnaWx0LCBkYXNzIHdpciBkaWUgZHVyY2ggQ29va2llcyBlcmZhc3N0ZW4gRGF0ZW4gbmljaHQgbWl0IERhdGVuIGF1cyBhbmRlcmVuIERhdGVucXVlbGxlbiB6dXNhbW1lbmbDvGhyZW4gb2RlciBkaWVzZSBhbiBEcml0dGUgd2VpdGVyZ2ViZW4uJyxcbiAgICBjb29raWVzOiBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdMQl9waXdpaycsXG4gICAgICAgIGRlc2M6ICdQaXdpay9NYXRvbW8gKExvYWRiYWxhbmNlcikgdm9uIHd3dy5waXdpay5iYXllcm4uZGUuIEfDvGx0aWdrZWl0c2RhdWVyIGJpcyB6dW0gRW5kZSBkZXIgQnJvd3NlcnNpdHp1bmcuJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ19wa19pZC4qIHouQi4gX3BrX2lkLjI1My4xZDE1JyxcbiAgICAgICAgZGVzYzogYFBpd2lrL01hdG9tbyB2b24gei5CLiAke3dpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZX0uIEfDvGx0aWdrZWl0c2RhdWVyIHZvbiB6d2VpIFN0dW5kZW4uYFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ19wa19zZXMuKiB6LkIuIF9wa19zZXMuMjUzLjFkMTUnLFxuICAgICAgICBkZXNjOiBgUGl3aWsvTWF0b21vIHZvbiB6LkIuICR7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfS4gR8O8bHRpZ2tlaXRzZGF1ZXIgYmlzIHp1bSBFbmRlIGRlciBCcm93c2Vyc2l0enVuZy5gXG4gICAgICB9XG4gICAgXSxcbiAgICB0b2dnbGU6ICgpID0+IHtcbiAgICAgIHRyQ2hlY2sgPSAhdHJDaGVja1xuICAgIH0sXG4gICAgZGVsQWxsQ29va2llczogZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5jb29raWVzLm1hcChjID0+IHtcbiAgICAgICAgY29uc3QgcG9zID0gYy5uYW1lLmluZGV4T2YoJyAnKVxuICAgICAgICBpZiAocG9zID49IDApIHtcbiAgICAgICAgICBjb25zdCBjcmVnID0gYy5uYW1lLnN1YnN0cmluZygwLCBwb3MgLSAxKVxuICAgICAgICAgIGRlbENvb2tpZXMoY3JlZylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxDb29raWUoYy5uYW1lKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0sXG4gICAgbG9hZFNjcmlwdDogZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgc3JjID0gYnBjb25maWcubWF0b21vX2ZpbGVcblxuICAgICAgbGV0IHNob3VsZEFwcGVuZCA9IGZhbHNlXG4gICAgICBsZXQgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjPVwiJyArIHNyYyArICdcIl0nKVxuICAgICAgaWYgKCFlbCkge1xuICAgICAgICBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpXG4gICAgICAgIGVsLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0J1xuICAgICAgICBlbC5hc3luYyA9IHRydWVcbiAgICAgICAgZWwuc3JjID0gc3JjXG4gICAgICAgIGVsLmNoYXJzZXQgPSAndXRmLTgnXG4gICAgICAgI
41HNob3VsZEFwcGVuZCA9IHRydWVcbiAgICAgIH0gZWxzZSBpZiAoZWwuaGFzQXR0cmlidXRlKCdkYXRhLWxvYWRlZCcpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2RhdGEtbG9hZGVkJywgdHJ1ZSlcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoc2hvdWxkQXBwZW5kKSBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGVsKVxuICAgIH1cbiAgfVxuICBpZiAodHJDaGVjaykge1xuICAgIHRyYWNraW5nQ29va2llcy5sb2FkU2NyaXB0KClcbiAgfVxuXG4gIGxldCB0d0NoZWNrID0gZmFsc2VcbiAgYWxsb3dUd2l0dGVyQ29va2llc1N0b3JlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgdHdDaGVjayA9IHZhbHVlXG4gIH0pXG4gIGNvbnN0IHR3aXR0ZXJDb29raWVzID0ge1xuICAgIGlzX2ZpeGVkOiBmYWxzZSxcbiAgICB0ZXh0OiAnVHdpdHRlciBDb29raWVzJyxcbiAgICBkZXNjOiAnU29jaWFsIE1lZGlhIENvb2tpZXMsIGluIGRpZXNlbSBGYWxsIFR3aXR0ZXIgQ29va2llcywgc29yZ2VuIGRhZsO8ciwgZGFzcyBkaWUgSW5oYWx0ZSBhbmdlemVpZ3Qgd2VyZGVuIGTDvHJmZW4uIEVzIGvDtm5uZW4gRWluc3RlbGx1bmdlbiBnZXNwZWljaGVydCB3ZXJkZW4sIGRhbWl0IGRlciBCZW51dHplciBkaWVzZSBkYW5uIG5pY2h0IGltbWVyIHdpZWRlciB2b3JuZWhtZW4gbXVzcy4nLFxuICAgIGNvb2tpZXM6IFtdLFxuICAgIHRvZ2dsZTogKCkgPT4ge1xuICAgICAgdHdDaGVjayA9ICF0d0NoZWNrXG4gICAgfSxcbiAgICBkZWxBbGxDb29raWVzOiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmNvb2tpZXMubWFwKGMgPT4ge1xuICAgICAgICBjb25zdCBwb3MgPSBjLm5hbWUuaW5kZXhPZignICcpXG4gICAgICAgIGlmIChwb3MgPj0gMCkge1xuICAgICAgICAgIGNvbnN0IGNyZWcgPSBjLm5hbWUuc3Vic3RyaW5nKDAsIHBvcyAtIDEpXG4gICAgICAgICAgZGVsQ29va2llcyhjcmVnKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbENvb2tpZShjLm5hbWUpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSxcbiAgICBsb2FkU2NyaXB0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBzcmMgPSBicGNvbmZpZy50d2l0dGVyX3VybFxuXG4gICAgICBsZXQgc2hvdWxkQXBwZW5kID0gZmFsc2VcbiAgICAgIGxldCBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtzcmM9XCInICsgc3JjICsgJ1wiXScpXG4gICAgICBpZiAoIWVsKSB7XG4gICAgICAgIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JylcbiAgICAgICAgZWwudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnXG4gICAgICAgIGVsLmFzeW5jID0gdHJ1ZVxuICAgICAgICBlbC5zcmMgPSBzcmNcbiAgICAgICAgZWwuY2hhcnNldCA9ICd1dGYtOCdcbiAgICAgICAgc2hvdWxkQXBwZW5kID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChlbC5oYXNBdHRyaWJ1dGUoJ2RhdGEtbG9hZGVkJykpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGVsLnNldEF0dHJpYnV0ZSgnZGF0YS1sb2FkZWQnLCB0cnVlKVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChzaG91bGRBcHBlbmQpIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZWwpXG4gICAgfVxuICB9XG4gIGlmICh0d0NoZWNrKSB7XG4gICAgdHdpdHRlckNvb2tpZXMubG9hZFNjcmlwdCgpXG4gIH1cblxuICBsZXQgeXRDaGVjayA9IGZhbHNlXG4gIGFsbG93WW91dHViZUNvb2tpZXNTdG9yZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgIHl0Q2hlY2sgPSB2YWx1ZVxuICB9KVxuICBjb25zdCB5b3V0dWJlQ29va2llcyA9IHtcbiAgICBpc19maXhlZDogZmFsc2UsXG4gICAgdGV4dDogJ1lvdXR1YmUgQ29va2llcycsXG4gICAgZGVzYzogJ1NvY2lhbCBNZWRpYSBDb29raWVzLCBpbiBkaWVzZW0gRmFsbCBZb3VUdWJlIENvb2tpZXMsIHNvcmdlbiBkYWbDvHIsIGRhc3MgZGllIFZpZGVvcyBhbmdlemVpZ3QgdW5kIGFiZ2VzcGllbHQgd2VyZGVuIGTDvHJmZW4uIFRyb3R6IGRlciBWZXJ3ZW5kdW5nIHZvbiB5b3V0dWJlLW5vY29va2llLCBrw7ZubmVuIGVpbnplbG5lIEluZm9ybWF0aW9uZW4sIHdpZSBiZWlzcGllbHN3ZWlzZSBkaWUgenVyIFZlcmbDvGd1bmcgc3RlaGVuZGUgQmFuZGJyZWl0ZSwgaW4gZWluZW0gQ29va2llIGdlc3BlaWNoZXJ0IHdlcmRlbi4gRXMga8O2bm5lbiBFaW5zdGVsbHVuZ2VuIGdlc3BlaWNoZXJ0IHdlcmRlbiwgZGFtaXQgZGVyIEJlbnV0emVyIGRpZXNlIGRhbm4gbmljaHQgaW1tZXIgd2llZGVyIHZvcm5laG1lbiBtdXNzLicsXG4gICAgY29va2llczogW10sXG4gICAgdG9nZ2xlOiAoKSA9PiB7XG4gICAgICB5dENoZWNrID0gIXl0Q2hlY2tcbiAgICB9LFxuICAgIGRlbEFsbENvb2tpZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoaXMuY29va2llcy5tYXAoYyA9PiB7XG4gICAgICAgIGNvbnN0IHBvcyA9IGMubmFtZS5pbmRleE9mKCcgJylcbiAgICAgICAgaWYgKHBvcyA+PSAwKSB7XG4gICAgICAgICAgY29uc3QgY3JlZyA9IGMubmFtZS5zdWJzdHJpbmcoMCwgcG9zIC0gMSlcbiAgICAgICAgICBkZWxDb29raWVzKGNyZWcpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsQ29va2llKGMubmFtZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9LFxuICAgIGxvYWRTY3JpcHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdsb2FkaW5nIFlvdXR1YmUgU2NyaXB0cycpXG4gICAgfVxuICB9XG4gIGlmICh5dENoZWNrKSB7XG4gICAgeW91dHViZUNvb2tpZXMubG9hZFNjcmlwdCgpXG4gIH1cblxuICAvKipcbiAgICogRXJsYXVidCBhbGxlIENvb2tpZXNcbiAgICovXG4gIGNvbnN0IGNoZWNrQWxsID0gKCkgPT4ge1xuICAgIGZ1Q2hlY2sgPSB5dENoZWNrID0gdHJDaG
41VjayA9IHR3Q2hlY2sgPSB5dENoZWNrID0gdHJ1ZVxuXG4gICAgX19zZXRDb29raWVWYWx1ZXMoKVxuXG4gICAgc2V0Q29va2llKCdkYXJrTW9kZScsIGZhbHNlKVxuICAgIHNldENvb2tpZSgnZm9udE1vZGUnLCAwKVxuXG4gICAgdHJhY2tpbmdDb29raWVzLmxvYWRTY3JpcHQoKVxuICAgIGlmIChicGNvbmZpZy51c2VfdHdpdHRlcikge1xuICAgICAgdHdpdHRlckNvb2tpZXMubG9hZFNjcmlwdCgpXG4gICAgfVxuICAgIGlmIChicGNvbmZpZy51c2VfeW91dHViZSkge1xuICAgICAgeW91dHViZUNvb2tpZXMubG9hZFNjcmlwdCgpXG4gICAgfVxuXG4gICAgc2hvd0Jhbm5lciA9IGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogVmVyYmlldGV0IGFsbGUgQ29va2llc1xuICAgKi9cbiAgY29uc3QgdW5jaGVja0FsbCA9ICgpID0+IHtcbiAgICBmdUNoZWNrID0geXRDaGVjayA9IHRyQ2hlY2sgPSB0d0NoZWNrID0geXRDaGVjayA9IGZhbHNlXG5cbiAgICBfX3NldENvb2tpZVZhbHVlcygpXG5cbiAgICBmdW5jdGlvbmFsQ29va2llcy5kZWxBbGxDb29raWVzKClcbiAgICB0cmFja2luZ0Nvb2tpZXMuZGVsQWxsQ29va2llcygpXG4gICAgaWYgKGJwY29uZmlnLnVzZV90d2l0dGVyKSB7XG4gICAgICB0d2l0dGVyQ29va2llcy5kZWxBbGxDb29raWVzKClcbiAgICB9XG4gICAgaWYgKGJwY29uZmlnLnVzZV95b3V0dWJlKSB7XG4gICAgICB5b3V0dWJlQ29va2llcy5kZWxBbGxDb29raWVzKClcbiAgICB9XG5cbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmXG5cbiAgICBzaG93QmFubmVyID0gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVpY2hlcnQgZGllIGFrdHVlbGxlIEF1c3dhaGxcbiAgICovXG4gIGNvbnN0IHN0b3JlU2V0dGluZ3MgPSAoKSA9PiB7XG4gICAgbGV0IHJlbG9hZF9wYWdlID0gZmFsc2VcblxuICAgIGFsbG93VHJhY2tpbmdDb29raWVzU3RvcmUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICh0ckNoZWNrICE9PSB2YWx1ZSAmJiB0ckNoZWNrID09PSBmYWxzZSkge1xuICAgICAgICByZWxvYWRfcGFnZSA9IHRydWVcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKGJwY29uZmlnLnVzZV90d2l0dGVyKSB7XG4gICAgICBhbGxvd1R3aXR0ZXJDb29raWVzU3RvcmUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHR3Q2hlY2sgIT09IHZhbHVlICYmIHR3Q2hlY2sgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmVsb2FkX3BhZ2UgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKGJwY29uZmlnLnVzZV95b3V0dWJlKSB7XG4gICAgICBhbGxvd1lvdXR1YmVDb29raWVzU3RvcmUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKHl0Q2hlY2sgIT09IHZhbHVlICYmIHl0Q2hlY2sgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmVsb2FkX3BhZ2UgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgX19zZXRDb29raWVWYWx1ZXMoKVxuXG4gICAgLy8gRnVua3Rpb25hbGUgQ29va2llcyBsw7ZzY2hlblxuICAgIGlmICghZnVDaGVjaykge1xuICAgICAgZnVuY3Rpb25hbENvb2tpZXMuZGVsQWxsQ29va2llcygpXG4gICAgfVxuXG4gICAgLy8gVHJhY2tpbmcgQ29va2llcyBwcsO8ZmVuXG4gICAgaWYgKHRyQ2hlY2spIHtcbiAgICAgIHRyYWNraW5nQ29va2llcy5sb2FkU2NyaXB0KClcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhY2tpbmdDb29raWVzLmRlbEFsbENvb2tpZXMoKVxuICAgIH1cblxuICAgIC8vIFR3aXR0ZXIgQ29va2llcyBwcsO8ZmVuXG4gICAgaWYgKGJwY29uZmlnLnVzZV90d2l0dGVyKSB7XG4gICAgICBpZiAodHdDaGVjaykge1xuICAgICAgICB0d2l0dGVyQ29va2llcy5sb2FkU2NyaXB0KClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR3aXR0ZXJDb29raWVzLmRlbEFsbENvb2tpZXMoKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFlvdXR1YmUgQ29va2llcyBwcsO8ZmVuXG4gICAgaWYgKGJwY29uZmlnLnVzZV95b3V0dWJlKSB7XG4gICAgICBpZiAoeXRDaGVjaykge1xuICAgICAgICB5b3V0dWJlQ29va2llcy5sb2FkU2NyaXB0KClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHlvdXR1YmVDb29raWVzLmRlbEFsbENvb2tpZXMoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZWxvYWRfcGFnZSkge1xuICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgIH1cblxuICAgIHNob3dCYW5uZXIgPSBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIFNldHp0IENvb2tpZXMgdW5kIFN0b3JlIFdlcnRlXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBjb25zdCBfX3NldENvb2tpZVZhbHVlcyA9ICgpID0+IHtcbiAgICBhbGxvd0Z1bmN0aW9uYWxDb29raWVzU3RvcmUuc2V0KGZ1Q2hlY2spXG4gICAgc2V0Q29va2llKCdhbGxvd0Z1bmN0aW9uYWxDb29raWVzJywgZnVDaGVjaylcbiAgICBhbGxvd1RyYWNraW5nQ29va2llc1N0b3JlLnNldCh0ckNoZWNrKVxuICAgIHNldENvb2tpZSgnYWxsb3dUcmFja2luZ0Nvb2tpZXMnLCB0ckNoZWNrKVxuXG4gICAgaWYgKGJwY29uZmlnLnVzZV90d2l0dGVyKSB7XG4gICAgICBhbGxvd1R3aXR0ZXJDb29raWVzU3RvcmUuc2V0KHR3Q2hlY2spXG4gICAgICBzZXRDb29raWUoJ2FsbG93VHdpdHRlckNvb2tpZXMnLCB0d0NoZWNrKVxuICAgIH1cbiAgICBpZiAoYnBjb25maWcudXNlX3lvdXR1YmUpIHtcbiAgICAgIGFsbG93WW91dHViZUNvb2tpZXNTdG9yZS5zZXQoeXRDaGVjaylcbiAgICAgIHNldENvb2tpZSgnYWxsb3dZb3V0dWJlQ29va2llcycsIHl0Q2hlY2spXG4gICAgfVxuICB9XG48L3NjcmlwdD5cblxueyNpZiBzaG93QmFubmVyfVxuICA8ZGl2XG4gICAgdHJhbnNpdGlvbjpmYWRlPVwie3tkZWxheTogMjUwLCBkdXJhdGlvbjogMzAwfX1cIlxuICAgIGNsYXNzPVwicmVsYXRpdmUgei01MFwiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwibW9kYWwtdGl0bGVcIlxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmaXhlZCBpbnNldC0wIGJnLWJwLWdyYXktbWlkZGxlIGJnLW9wYWNpdHktNTAgdHJhbnNpdGlvbi1vcGFjaXR5IHRleHQtYmxhY2tcIj48L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmaXhlZCBpbnNldC0wIHotMTAgb3ZlcmZsb3cteS1hdXRvXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBtaW4taC1mdWxsIGl0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyIHAtNCB0ZXh0LWNlbnRlciBwdC00MFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIGdhcC04IHRyYW5zZm9ybSBvdmVyZmxvdy1oaWRkZW4gYmctd2hpdGUgZGFyazpiZy1ibGFjayB0ZXh0LWJsYWNrIGRhcms6dGV4dC13aGl0ZSB0ZXh0LWxlZnQgZ
41HJvcC1zaGFkb3ctMnhsIHRyYW5zaXRpb24tYWxsIHNtOnctZnVsbCBzbTptYXgtdy1zY3JlZW4tYnBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00IGJvcmRlci1iIGJvcmRlci1icC1ncmF5LW1pZGRsZVwiPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzcz1cImZsb2F0LWxlZnQgbXItMiBiZy10cmFuc3BhcmVudCBtYXgtaC1bMTAwcHhdXCJcbiAgICAgICAgICAgICAgc3JjPVwiL3N0YXRpYy9pbWcvMDkwMDAwMDAwMDAwMC5zdmdcIlxuICAgICAgICAgICAgICBhbHQ9XCJMb2dvIGRlciBCYXllcmlzY2hlbiBQb2xpemVpXCJcbiAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIG1kOnRleHQtYmFzZVwiPlxuICAgICAgICAgICAgICBEaWVzZSBLb250YWt0c2VpdGUgc3BlaWNoZXJ0IG5vdHdlbmRpZ2UgQ29va2llcyBpbiBJaHJlbSBCcm93c2VyLiBTaWUgaGFiZW4gZWJlbmZhbGxzIGRpZSBNw7ZnbGljaGtlaXRcbiAgICAgICAgICAgICAgZnVua3Rpb25hbGUgQ29va2llcyBpbiBJaHJlbSBCcm93c2VyIHp1IHNwZWljaGVybi4gSGllcmbDvHIgbcO8c3NlbiBTaWUgdW5zIElocmUgRXJsYXVibmlzIGVydGVpbGVuLiBTaWVcbiAgICAgICAgICAgICAga8O2bm5lbiBzZWxic3R2ZXJzdMOkbmRsaWNoIHVuc2VyZW4gQXVmdHJpdHQgYXVjaCBvaG5lIFp1c3RpbW11bmcgdm9sbHVtZsOkbmdsaWNoIG51dHplbi4gSW4gZGVtIEZhbGwgaXN0XG4gICAgICAgICAgICAgIGR1cmNoIFNpZSBuaWNodHMgenUgdmVyYW5sYXNzZW4uXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNCBncmlkIGdyaWQtY29scy0xIGdhcC00XCI+XG4gICAgICAgICAgICA8Q29va2llQ2hlY2tib3ggey4uLm5lZWRlZENvb2tpZXN9Lz5cbiAgICAgICAgICAgIDxDb29raWVDaGVja2JveCB7Li4uZnVuY3Rpb25hbENvb2tpZXN9IGlzX2NoZWNrZWQ9XCJ7ZnVDaGVja31cIi8+XG4gICAgICAgICAgICA8Q29va2llQ2hlY2tib3ggey4uLnRyYWNraW5nQ29va2llc30gaXNfY2hlY2tlZD1cInt0ckNoZWNrfVwiLz5cbiAgICAgICAgICAgIHsjaWYgYnBjb25maWcudXNlX3R3aXR0ZXJ9XG4gICAgICAgICAgICAgIDxDb29raWVDaGVja2JveCB7Li4udHdpdHRlckNvb2tpZXN9IGlzX2NoZWNrZWQ9XCJ7dHdDaGVja31cIi8+XG4gICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgeyNpZiBicGNvbmZpZy51c2VfeW91dHViZX1cbiAgICAgICAgICAgICAgPENvb2tpZUNoZWNrYm94IHsuLi55b3V0dWJlQ29va2llc30gaXNfY2hlY2tlZD1cInt5dENoZWNrfVwiLz5cbiAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLXQgYm9yZGVyLWJwLWdyYXktbWlkZGxlIHAtNCBmbGV4IGp1c3RpZnktZW5kIGdhcC0yXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cInAtMiBiZy1icC1ibHVlLWRhcmsgZGFyazpiZy13aGl0ZSB0ZXh0LXdoaXRlIGRhcms6dGV4dC1ibGFjayB0ZXh0LXNtIG1kOnRleHQtYmFzZVwiXG4gICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiB7c2hvd0Jhbm5lciA9IGZhbHNlfX1cbiAgICAgICAgICAgID5BYmJyZWNoZW5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLTIgYmctcmVkLTUwMCBkYXJrOmJnLXdoaXRlIHRleHQtd2hpdGUgZGFyazp0ZXh0LWJsYWNrIHRleHQtc20gbWQ6dGV4dC1iYXNlXCJcbiAgICAgICAgICAgICAgb246Y2xpY2s9eygpID0+IHt1bmNoZWNrQWxsKCl9fVxuICAgICAgICAgICAgPkFsbGUgYWJsZWhuZW5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLTIgYmctZ3JlZW4tNTAwIGRhcms6Ymctd2hpdGUgdGV4dC13aGl0ZSBkYXJrOnRleHQtYmxhY2sgdGV4dC1zbSBtZDp0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgICBvbjpjbGljaz17KCkgPT4ge2NoZWNrQWxsKCl9fVxuICAgICAgICAgICAgPkFsbGUgYW5uZWhtZW5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLTIgYmctYnAtYmx1ZS1kYXJrIGRhcms6Ymctd2hpdGUgdGV4dC13aGl0ZSBkYXJrOnRleHQtYmxhY2sgdGV4dC1zbSBtZDp0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgICBvbjpjbGljaz17KCkgPT4ge3N0b3JlU2V0dGluZ3MoKX19XG4gICAgICAgICAgICA+QXVzd2FobCBzcGVpY2hlcm5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbnsvaWZ9XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQge29uTW91bnR9IGZyb20gJ3N2ZWx0ZSdcbiAgaW1wb3J0IHtzZXRDb29raWV9IGZyb20gJ0BsYXlvdXQvanMvY29va2llcy5qcydcbiAgaW1wb3J0IHtcbiAgICBhbGxvd0Z1bmN0aW9uYWxDb29raWVzU3RvcmUsXG4gICAgZGFya01vZGVTdG9yZSxcbiAgICBmb250TW9kZVN0b3JlLFxuICAgIHNob3dCYW5uZXJTdG9yZVxuICB9IGZyb20gJ0BsYXlvdXQvc3RvcmVzL21haW5zdG9yZS5qcydcbiAgaW1wb3J0IHtwYWdlZGF0YSwgY2F0ZGF0YX0gZnJvbSAnQGxheW91dC9icC1saWIuanMnXG5cbiAgaW1wb3J0IFRvb2xiYXJCdG4gZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2VsZW1lbnRzL1Rvb2xiYXJCdG4uc3ZlbHRlJ1xuICBpbXBvcnQgSGVhZGVyQ29va2llIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9oZWFkZXIvSGVhZG
41VyQ29va2llLnN2ZWx0ZSdcblxuICBjb25zdCBzbUxua3MgPSAoY2F0ZGF0YSAmJiBjYXRkYXRhLmxpbmtzKSA/IGNhdGRhdGEubGlua3MgOiBudWxsXG5cbiAgbGV0IGFsbG93RnVuY3Rpb25hbENvb2tpZXNcbiAgYWxsb3dGdW5jdGlvbmFsQ29va2llc1N0b3JlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgYWxsb3dGdW5jdGlvbmFsQ29va2llcyA9IHZhbHVlO1xuICB9KTtcblxuICBsZXQgc2hvd0Jhbm5lclxuICBzaG93QmFubmVyU3RvcmUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICBzaG93QmFubmVyID0gdmFsdWU7XG4gIH0pO1xuXG4gIGxldCBkYXJrTW9kZVxuICBkYXJrTW9kZVN0b3JlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgZGFya01vZGUgPSB2YWx1ZTtcbiAgfSk7XG5cbiAgbGV0IGZvbnRNb2RlID0gMFxuICBmb250TW9kZVN0b3JlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgZm9udE1vZGUgPSB2YWx1ZTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIFRvb2xiYXIgQnV0dG9uIE9iamVrdFxuICAgKi9cbiAgY29uc3QgYnV0dG9ucyA9IFtcbiAgICB7XG4gICAgICBncm91cDogJ2xlZnQnLFxuICAgICAgdHlwZTogVG9vbGJhckJ0bixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaWQ6ICdidG5Ib21lJyxcbiAgICAgICAgdGl0bGU6ICd6dXIgU3RhcnRzZWl0ZSB3ZWNoc2VsbicsXG4gICAgICAgIGljb246ICdmYS1zb2xpZCBmYS1ob21lJyxcbiAgICAgICAgaHJlZjogKCFwYWdlZGF0YS5pc19wcmV2aWV3KSA/ICcvaW5kZXguaHRtbCcgOiBudWxsLFxuICAgICAgICBkaXNhYmxlZDogKHBhZ2VkYXRhLmlzX3ByZXZpZXcpLFxuICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICBpZiAocGFnZWRhdGEuaXNfcHJldmlldykge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICcvaW5kZXguaHRtbCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ3JvdXA6ICdsZWZ0JyxcbiAgICAgIHR5cGU6IFRvb2xiYXJCdG4sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGlkOiAnYnRuQ29va2llJyxcbiAgICAgICAgdGl0bGU6ICdDb29raWUgRWluc3RlbGx1bmdlbiBhbnBhc3NlbicsXG4gICAgICAgIGljb246ICdmYS1zb2xpZCBmYS1jb29raWUtYml0ZScsXG4gICAgICAgIGRpc2FibGVkOiAocGFnZWRhdGEuaXNfcHJldmlldyksXG4gICAgICAgIGFjdGlvbjogKCkgPT4ge1xuICAgICAgICAgIHNob3dCYW5uZXIgPSAhc2hvd0Jhbm5lclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBncm91cDogJ2xlZnQnLFxuICAgICAgdHlwZTogVG9vbGJhckJ0bixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaWQ6ICdidG5EYXJrTW9kZScsXG4gICAgICAgIHRpdGxlOiAnS29udHJhc3QgYW5wYXNzZW4nLFxuICAgICAgICBpY29uOiAnZmEtc29saWQgZmEtY2lyY2xlLWhhbGYtc3Ryb2tlJyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgc2V0RGFya01vZGUoIWRhcmtNb2RlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBncm91cDogJ2xlZnQnLFxuICAgICAgdHlwZTogVG9vbGJhckJ0bixcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgaWQ6ICdidG5Gb250TW9kZScsXG4gICAgICAgIHRpdGxlOiAnU2NocmlmdGdyw7bDn2UgYW5wYXNzZW4nLFxuICAgICAgICBpY29uOiAnZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzcy1wbHVzJyxcbiAgICAgICAgYWN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgZm9udE1vZGUrK1xuICAgICAgICAgIHNldEZvbnRNb2RlKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgZ3JvdXA6ICdsZWZ0JyxcbiAgICAgIHR5cGU6IFRvb2xiYXJCdG4sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGlkOiAnYnRuUmVhZFBhZ2UnLFxuICAgICAgICB0aXRsZTogJ1NlaXRlIHZvcmxlc2VuIGxhc3NlbicsXG4gICAgICAgIGljb246ICdmYS1zb2xpZCBmYS12b2x1bWUtaGlnaCcsXG4gICAgICAgIGRpc2FibGVkOiBwYWdlZGF0YS5pc19wcmV2aWV3LFxuICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICBjb25zdCB1cmkgPSBlbmNvZGVVUklDb21wb25lbnQod2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSlcbiAgICAgICAgICBjb25zdCBuZXdVcmkgPSBcIi8vYXBwLWV1LnJlYWRzcGVha2VyLmNvbS9jZ2ktYmluL3JzZW50P2N1c3RvbWVyaWQ9MTExNjAmbGFuZz1kZV9kZSZyZWFkaWQ9cmVhZHNwZWFrZXJfbGVzZW4mdXJsPVwiICsgdXJpXG4gICAgICAgICAgcmVhZHBhZ2UobmV3VXJpLCAncnNwbGF5ZXInKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICAvLyB7XG4gICAgLy8gICBncm91cDogJ2xlZnQnLFxuICAgIC8vICAgdHlwZTogVG9vbGJhckxuayxcbiAgICAvLyAgIGRhdGE6IHtcbiAgICAvLyAgICAgaWQ6ICdidG5FYXN5TGFuZycsXG4gICAgLy8gICAgIHRpdGxlOiAnenVyIExlaWNodGUgU3ByYWNoZSBTZWl0ZSB3ZWNoc2VsbicsXG4gICAgLy8gICAgIGljb246ICdmYS1zb2xpZCBmYS1ib29rLW9wZW4tcmVhZGVyJyxcbiAgICAvLyAgICAgaHJlZjogKHNtTG5rcyAmJiBzbUxua3MuZWFzeWxhbmcgJiYgc21MbmtzLmVhc3lsYW5nLmxlbmd0aCAmJiAhcGFnZWRhdGEuaXNfcHJldmlldykgPyBzbUxua3MuZWFzeWxhbmcgOiBudWxsLFxuICAgIC8vICAgICBkaXNhYmxlZDogKHNtTG5rcyAmJiBzbUxua3MuZWFzeWxhbmcgJiYgc21MbmtzLmVhc3lsYW5nLmxlbmd0aCAmJiAhcGFnZWRhdGEuaXNfcHJldmlldylcbiAgICAvLyAgIH1cbiAgICAvLyB9LFxuICAgIC8vIHtcbiAgICAvLyAgIGdyb3VwOiAnbGVmdCcsXG4gICAgLy8gICB0eXBlOiBUb29sYmFyTG5rLFxuICAgIC8vICAgZGF0YToge1xuICAgIC8vICAgICBpZDogJ2J0bkdiVmlkZW8nLFxuICAgIC8vICAgICB0aXRsZTogJ3p1ciBHZWLDpHJkZW52aWRlbyBTZWl0ZSB3ZWNoc2VsbicsXG4gICAgLy8gICAgIGljb246ICdmYS1zb2xpZCBmYS1oYW5kcycsXG4gICAgLy8gICAgIGhyZWY6IChzbUxua3MgJiYgc21MbmtzLmdidmlkZW8gJiYgc21MbmtzLmdidmlkZW8ubGVuZ3RoICYmICFwYWdlZGF0YS5pc19wcmV2aWV3KSA/IHNtTG5rcy5nYnZpZGVvIDogbnVsbCxcbiAgICAvLyAgICAgZGlzYWJsZWQ6IChzbUxua3MgJiYgc21MbmtzLmdidmlkZW8gJiYgc21MbmtzLmdidmlkZW8ubGVuZ3RoICYmICFwYWdlZGF0YS5pc19wcmV2aWV3KVxuICAgIC8vICAgfVxuICAgIC8vIH0sXG4gICAgLy8ge1xuICAgIC8vICAgZ3JvdXA6ICdyaWdodCcsXG4gICAgLy8gICB0eX
41BlOiBUb29sYmFyTG5rLFxuICAgIC8vICAgZGF0YToge1xuICAgIC8vICAgICBpZDogJ2J0bkZhcScsXG4gICAgLy8gICAgIHRpdGxlOiAnenVyIEZBUSBTZWl0ZSB3ZWNoc2VsbicsXG4gICAgLy8gICAgIHRleHQ6ICdGQVEnLFxuICAgIC8vICAgICBocmVmOiAoc21MbmtzICYmIHNtTG5rcy5mYXEgJiYgc21MbmtzLmZhcS5sZW5ndGggJiYgIXBhZ2VkYXRhLmlzX3ByZXZpZXcpID8gc21MbmtzLmZhcSA6IG51bGwsXG4gICAgLy8gICAgIGRpc2FibGVkOiAoc21MbmtzICYmIHNtTG5rcy5mYXEgJiYgc21MbmtzLmZhcS5sZW5ndGggJiYgIXBhZ2VkYXRhLmlzX3ByZXZpZXcpXG4gICAgLy8gICB9XG4gICAgLy8gfVxuICBdXG5cbiAgLyoqXG4gICAqIFRvb2xiYXIgQnV0dG9ucyBnZWZpbHRlcnQgZsO8ciBMaW5rc1xuICAgKi9cbiAgY29uc3QgYnRuc0wgPSBidXR0b25zLmZpbHRlcihidG4gPT4ge1xuICAgIHJldHVybiBidG4uZ3JvdXAgPT09ICdsZWZ0J1xuICB9KVxuXG4gIC8qKlxuICAgKiBUb29sYmFyIEJ1dHRvbnMgZ2VmaWx0ZXJ0IGbDvHIgUmVjaHRzXG4gICAqL1xuICBjb25zdCBidG5zUiA9IGJ1dHRvbnMuZmlsdGVyKGJ0biA9PiB7XG4gICAgcmV0dXJuIGJ0bi5ncm91cCA9PT0gJ3JpZ2h0J1xuICB9KVxuXG4gIC8qKlxuICAgKiBDb29raWUtTW9kYWwgYW56ZWlnZW5cbiAgICovXG4gIGZ1bmN0aW9uIHNldFNob3dCYW5uZXIoKSB7XG4gICAgaWYgKHNob3dCYW5uZXIpIHtcbiAgICAgIHNldENvb2tpZSgnc2hvd0Jhbm5lcicsIGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTY2hyaWZ0Z3LDtsOfZSBzZXR6ZW5cbiAgICpcbiAgICogQHBhcmFtIG5ld01vZGVcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGZ1bmN0aW9uIHNldEZvbnRNb2RlKG5ld01vZGUgPSBmb250TW9kZSkge1xuICAgIGNvbnN0IG1vZGVzID0gW1xuICAgICAgJ3RleHQtYmFzZScsXG4gICAgICAndGV4dC14bCcsXG4gICAgICAndGV4dC0yeGwnXG4gICAgXVxuXG4gICAgaWYgKG5ld01vZGUgPj0gbW9kZXMubGVuZ3RoKSB7XG4gICAgICBuZXdNb2RlID0gMFxuICAgIH1cblxuICAgIGZvbnRNb2RlU3RvcmUuc2V0KG5ld01vZGUpXG4gICAgaWYgKGFsbG93RnVuY3Rpb25hbENvb2tpZXMpIHtcbiAgICAgIHNldENvb2tpZSgnZm9udE1vZGUnLCBuZXdNb2RlKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKC4uLm1vZGVzKVxuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKG1vZGVzW25ld01vZGVdKVxuICB9XG5cbiAgLyoqXG4gICAqIHNldHp0IGRlbiBha3R1ZWxsZW4gZGFya01vZGVcbiAgICpcbiAgICogQHBhcmFtIG5ld01vZGVcbiAgICovXG4gIGZ1bmN0aW9uIHNldERhcmtNb2RlKG5ld01vZGUgPSBkYXJrTW9kZSkge1xuICAgIGNvbnN0IGJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdidG5EYXJrTW9kZScpXG5cbiAgICBpZiAobmV3TW9kZSkge1xuICAgICAgYnRuLmNsYXNzTGlzdC5hZGQoJ2ZhLWZsaXAtaG9yaXpvbnRhbCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ0bi5jbGFzc0xpc3QucmVtb3ZlKCdmYS1mbGlwLWhvcml6b250YWwnKVxuICAgIH1cblxuICAgIGlmIChuZXdNb2RlICE9PSBkYXJrTW9kZSkge1xuICAgICAgZGFya01vZGVTdG9yZS5zZXQobmV3TW9kZSlcbiAgICAgIGlmIChhbGxvd0Z1bmN0aW9uYWxDb29raWVzKSB7XG4gICAgICAgIHNldENvb2tpZSgnZGFya01vZGUnLCBuZXdNb2RlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXdNb2RlKSB7XG4gICAgICBkb2
41N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZGFyaycpXG4gICAgICBidG4uY2xhc3NMaXN0LmFkZCgnZmEtZmxpcC1ob3Jpem9udGFsJylcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2RhcmsnKVxuICAgICAgYnRuLmNsYXNzTGlzdC5yZW1vdmUoJ2ZhLWZsaXAtaG9yaXpvbnRhbCcpXG4gICAgfVxuICB9XG5cbiAgb25Nb3VudCgoKSA9PiB7XG4gICAgc2V0RGFya01vZGUoKVxuICAgIHNldEZvbnRNb2RlKClcbiAgICBzZXRTaG93QmFubmVyKClcbiAgfSlcbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwic2tpcC1saW5rcyBmbGV4IGp1c3RpZnktY2VudGVyIHRleHQtd2hpdGUgZGFyazp0ZXh0LWJsYWNrXCI+XG4gIDxhXG4gICAgaHJlZj1cIiNidG5Ib21lXCJcbiAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICBjbGFzcz1cInNraXAtbGluayBweS0xIHB4LTIgcm91bmRlZC1iLWxnIGJnLWJwLWJsdWUgZGFyazpiZy13aGl0ZSBmb2N1czpuby11bmRlcmxpbmUgZm9jdXM6b3V0bGluZS1ub25lXCJcbiAgPlNwcnVuZyB6dXIgTmF2aWdhdGlvbjwvYT5cbiAgPGFcbiAgICBocmVmPVwiI2J0bkJ1cmdlclwiXG4gICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgY2xhc3M9XCJza2lwLWxpbmsgcHktMSBweC0yIHJvdW5kZWQtYi1sZyBiZy1icC1ibHVlIGRhcms6Ymctd2hpdGUgZm9jdXM6bm8tdW5kZXJsaW5lIGZvY3VzOm91dGxpbmUtbm9uZVwiXG4gID5TcHJ1bmcgenVyIEJ1cmdlciBNZW7DvDwvYT5cbiAgPGFcbiAgICBocmVmPVwiI2J0bkZhcVwiXG4gICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgY2xhc3M9XCJza2lwLWxpbmsgcHktMSBweC0yIHJvdW5kZWQtYi1sZyBiZy1icC1ibHVlIGRhcms6Ymctd2hpdGUgZm9jdXM6bm8tdW5kZXJsaW5lIGZvY3VzOm91dGxpbmUtbm9uZVwiXG4gID5TcHJ1bmcgenVyIEZBUSBTZWl0ZTwvYT5cbiAgPGFcbiAgICBocmVmPVwiI3JlYWRzcGVha2VyX2xlc2VuXCJcbiAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICBjbGFzcz1cInNraXAtbGluayBweS0xIHB4LTIgcm91bmRlZC1iLWxnIGJnLWJwLWJsdWUgZGFyazpiZy13aGl0ZSBmb2N1czpuby11bmRlcmxpbmUgZm9jdXM6b3V0bGluZS1ub25lXCJcbiAgPlNwcnVuZyB6dW0gSW5oYWx0PC9hPlxuICA8YVxuICAgIGhyZWY9XCIjYXBwLWZvb3RlclwiXG4gICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgY2xhc3M9XCJza2lwLWxpbmsgcHktMSBweC0yIHJvdW5kZWQtYi1sZyBiZy1icC1ibHVlIGRhcms6Ymctd2hpdGUgZm9jdXM6bm8tdW5kZXJsaW5lIGZvY3VzOm91dGxpbmUtbm9uZVwiXG4gID5TcHJ1bmcgenVyIEZ1w596ZWlsZTwvYT5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibWF4LXctc2NyZWVuLWJwIG14LWF1dG8gaC1bNTBweF1cIj5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIG1kOmdhcC04IGl0ZW1zLWNlbnRlclwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib3JkZXItMCBpbmxpbmUtZmxleCBmbGV4LW5vbmUgaXRlbXMtY2VudGVyIGJnLXdoaXRlIGRhcms6YmctYmxhY2sgdGV4dC1ibGFjayBkYXJrOnRleHQtd2hpdGVcIlxuICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICA+XG4gICAgICB7I2VhY2ggYnRuc0wgYXMgYnRufVxuICAgICAgICA8c3ZlbHRlOmNvbXBvbmVudCB0aGlzPXtidG4udHlwZX0gey4uLmJ0bi5kYXRhfS8+XG4gICAgICB7L2VhY2h9XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICBpZD1cInJzcGxheWVyXCJcbiAgICAgIGNsYXNzPVwib3JkZXItbGFzdCBtYi0yIHNtOm9yZGVyLTEgc206bWItMCByc19wcmVzZXJ2ZSByc19za2lwIHJzX2FkZHRvb2xzIHJzX3NwbGl0YnV0dG9uIHJzX2V4cFwiXG4gICAgPjwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG57I2lmICFwYWdlZGF0YS5pc19wcmV2aWV3fVxuICA8SGVhZGVyQ29va2llIHNob3dCYW5uZXI9XCJ7c2hvd0Jhbm5lcn1cIi8+XG57L2lmfVxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cbiAgOmdsb2JhbCguc2tpcC1saW5rKSB7XG4gICAgY2xpcDogcmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpO1xuICAgIHdpZHRoOiAxcHg7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogOTk5O1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICBjbGlwOiBhdXRvO1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICB9XG4gIH1cblxuICA6Z2xvYmFsKCNyc3BsYXllcikge1xuICAgICYucnNfYWRkdG9vbHMge1xuICAgICAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQge3BhZ2VkYXRhfSBmcm9tICdAbGF5b3V0L2JwLWxpYi5qcydcblxuICBleHBvcnQgbGV0IHRpdGxlID0gJ8OcYmVyc2NocmlmdCBmZWhsdCdcbiAgZXhwb3J0IGxldCBiYWRnZSA9IG51bGxcbiAgZXhwb3J0IGxldCBzaXplID0gJ2gyJ1xuICBleHBvcnQgbGV0IGhyZWYgPSBudWxsXG4gIGV4cG9ydCBsZXQgdGFyZ2V0ID0gJ19zZWxmJ1xuICBleHBvcnQgbGV0IG9yaWVudGF0aW9uID0gJ3RleHQtbGVmdCdcbiAgZXhwb3J0IGxldCBhbmNob3IgPSBudWxsXG4gIGV4cG9ydCBsZXQgYnBibHVlID0gZmFsc2VcbiAgZXhwb3J0IGxldCBicGJvcmRlciA9IGZhbHNlXG4gIGV4cG9ydCBsZXQgaXNfdG9jID0gZmFsc2VcbiAgZXhwb3J0IGxldCBpY29uID0gJydcbiAgZXhwb3J0IGxldCBjc3MgPSAnJ1xuXG4gICQ6IGlzQm9yZGVyZWQgPSBicGJvcmRlciB8fCBzaXplID09PSAnaDEnXG4gICQ6IGlzQmx1ZSA9IGJwYmx1ZSB8fCBzaXplID09PSAnaDEnXG4gICQ6IHBvcyA9IG9yaWVudGF0aW9uXG5cbiAgJDogY2hhbmdlQ1NTID0gKCkgPT4ge1xuICAgIGxldCBjc3NBcnIgPSBbJ20tMCcsICd3LWZ1bGwnLCAnZGFyazp0ZXh0LXdoaXRlJywgJ3NwYWNlLXgtMiddXG4gICAgY3NzQXJyLnB1c2gocG9zKVxuXG4gICAgaWYgKGlzQmx1ZSkge1xuICAgICAgY3NzQXJyLnB1c2goJ3RleHQtYnAtYmx1ZScpXG4gICAgfVxuXG4gICAgaWYgKGNzcykge1xuICAgICAgY3NzQXJyLnB1c2goY3NzKVxuICAgIH1cblxuICAgI
41HJldHVybiBjc3NBcnIuam9pbignICcpXG4gIH1cblxuICBjb25zdCByZW5kZXJIVE1MID0gKCkgPT4ge1xuICAgIGxldCBodG1sID0gYDwke3NpemV9IGNsYXNzPVwiJHtjaGFuZ2VDU1MoKX1cIj5gXG4gICAgaWYgKGljb24gJiYgaWNvbi5sZW5ndGgpIHtcbiAgICAgIGh0bWwgKz0gYDxpIGNsYXNzPVwiJHtpY29ufVwiPjwvaT5gXG4gICAgfVxuICAgIGlmIChocmVmICYmIGhyZWYubGVuZ3RoKSB7XG4gICAgICBodG1sICs9IGA8YSBocmVmPVwiJHtocmVmfVwiIHRhcmdldD1cIiR7dGFyZ2V0fVwiIGNsYXNzPVwiaG92ZXI6dW5kZXJsaW5lXCI+JHt0aXRsZX08L2E+YFxuICAgIH0gZWxzZSB7XG4gICAgICBodG1sICs9IGA8c3Bhbj4ke3RpdGxlfTwvc3Bhbj5gXG4gICAgfVxuICAgIGlmIChiYWRnZSAmJiBiYWRnZS5sZW5ndGgpIHtcbiAgICAgIGh0bWwgKz0gYDxzcGFuIGNsYXNzPVwibWwtMiB0ZXh0LXdoaXRlIHRleHQteHMgYWxpZ24tdG9wIGJnLWJwLWJsdWUgZGFyazpiZy1ibGFjayBwLTIgcm91bmRlZC1mdWxsXCI+JHtiYWRnZX08L3NwYW4+YFxuICAgIH1cbiAgICBodG1sICs9IGA8LyR7c2l6ZX0+YFxuXG4gICAgcmV0dXJuIGh0bWxcbiAgfVxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICB7I2lmIChhbmNob3IgJiYgcGFnZWRhdGEuaGFzX2F1dG90b2MpfVxuICAgIDxhIGlkPVwie2FuY2hvcn1cIiB0YWJpbmRleD1cIi0xXCI+Jm5ic3A7PC9hPlxuICB7L2lmfVxuXG4gIDxkaXYgY2xhc3M9XCJmbGV4LTEge2lzQm9yZGVyZWQgPyAnYm9yZGVyLWIgYm9yZGVyLWJwLWdyYXktbWlkZGxlJyA6ICcnfVwiPlxuICAgIHtAaHRtbCByZW5kZXJIVE1MKCl9XG4gIDwvZGl2PlxuXG4gIHsjaWYgKGFuY2hvciAmJiBwYWdlZGF0YS5oYXNfYXV0b3RvYyAmJiAhaXNfdG9jKX1cbiAgICA8c3BhbiBjbGFzcz1cInAtMlwiPlxuICAgICAgPGEgaHJlZj1cIiNhdXRvLXRvYy1hbmtlclwiIGNsYXNzPVwiaG92ZXI6dGV4dC1icC1ibHVlXCIgdGl0bGU9XCJ6dW0gSW5oYWx0c3ZlcnplaWNobmlzXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi11cFwiPjwvaT5cbiAgICAgIDwvYT5cbiAgICA8L3NwYW4+XG4gIHsvaWZ9XG48L2Rpdj5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7cGFnZWRhdGEsIG5hdmlkYXRhLCBjYXRkYXRhfSBmcm9tICdAbGF5b3V0L2JwLWxpYi5qcydcbiAgaW1wb3J0IEhlYWRsaW5lIGZyb20gJ0BzcmMva29wby9jb21wb25lbnRzL2ZsZXgvSGVhZGxpbmUuc3ZlbHRlJ1xuXG4gIGNvbnN0IHNtQnRucyA9IChjYXRkYXRhICYmIGNhdGRhdGEuc29jaWFsKSA/IGNhdGRhdGEuc29jaWFsIDogbnVsbFxuICBjb25zdCBzbUxua3MgPSAoY2F0ZGF0YSAmJiBjYXRkYXRhLmxpbmtzKSA/IGNhdGRhdGEubGlua3MgOiBudWxsXG5cbiAgY29uc3QgbGlua3MgPSBbXG4gICAge3RpdGxlOiAnSW1wcmVzc3VtJywgaHJlZjogKHNtTG5rcyAmJiBzbUxua3MuaW1wcmludCkgPyBzbUxua3MuaW1wcmludCA6IG51bGx9LFxuICAgIHt0aXRsZTogJ0RhdGVuc2NodXR6JywgaHJlZjogKHNtTG5rcyAmJiBzbUxua3MuZHNndm8pID8gc21MbmtzLmRzZ3ZvIDogbnVsbH1cbiAgXVxuXG4gIGNvbnN0IGdldExpbmsgPSAobGluaykgPT4ge1xuICAgIHJldHVybiAocGFnZWRhdGEuaXNfcHJldmlldylcbiAgICAgID8gbnVsbFxuICAgICAgOiBsaW5rLmhyZWZcbiAgfVxuPC9zY3JpcHQ+XG5cbnsjaWYgbmF2aWRhdGEgJiYgbmF2aWRhdGEuY2hpbGRyZW59XG4gIDx1bCBjbGFzcz1cImxpc3QtaW5zaWRlXCI+XG4gICAgeyNlYWNoIG5hdmlkYXRhLmNoaWxkcmVuIGFzIGJsb2NrfVxuICAgICAgeyNpZiBibG9jay5jaGlsZHJlbiAmJiBibG9jay5jaGlsZHJlbi5sZW5ndGh9XG4gICAgICAgIDxsaSBjbGFzcz1cIm15LTRcIj5cbiAgICAgICAgICA8SGVhZGxpbmUgdGl0bGU9XCJ7YmxvY2sudGl0bGV9XCIgc2l6ZT1cImg0XCIvPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtZGlzYyBsaXN0LWluc2lkZVwiPlxuICAgICAgICAgICAgeyNlYWNoIGJsb2NrLmNoaWxkcmVuIGFzIGZsZXh9XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm15LTJcIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJob3Zlcjp0ZXh0LWJwLWJsdWUgZHVyYXRpb24tNTAwIGlubGluZVwiXG4gICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgIGhyZWY9XCJ7ZmxleC5ocmVmfVwiXG4gICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJ7ZmxleC50YXJnZXR9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIlwiPntmbGV4LnRpdGxlfSZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGlkZGVuIG1kOmlubGluZSB0ZXh0LXhzIHRleHQtYnAtZ3JheS1kYXJrXCI+Jm5ic3A7e2ZsZXguZG9jdW1lbnRfc291cmNlfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB7L2VhY2h9XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9saT5cbiAgICAgIHsvaWZ9XG4gICAgey9lYWNofVxuXG4gICAgeyNlYWNoIGxpbmtzIGFzIGxpbmt9XG4gICAgICB7I2lmIGxpbmsuaHJlZn1cbiAgICAgICAgPGxpIGNsYXNzPVwibXktNFwiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwie2dldExpbmsobGluayl9XCJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC14bCBob3Zlcjp0ZXh0LWJwLWJsdWUgZHVyYXRpb24tNTAwIGlubGluZVwiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgIHRhcmdldD17KGxpbmsuaHJlZi5zdGFydHNXaXRoKCdodHRwJykpID8gJ19ibGFuaycgOiAnX3NlbGYnfVxuICAgICAgICAgID57bGluay50aXRsZX08L2E+XG4gICAgICAgIDwvbGk+XG4gICAgICB7L2lmfVxuICAgIHsvZWFjaH1cbiAgPC91bD5cbnsvaWZ9XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQge3RpY2t9IGZyb20gJ3N2ZWx0ZSdcbiAgaW1wb3J0IHtmbHl9IGZyb20gJ3N2ZWx0ZS90cmFuc2l0aW9uJ1xuICBpbXBvcnQge3BhZ2VkYXRhfSBmcm9tICdAbGF5b3V0L2JwLWxpYi5qcydcblxuICBpbXBvcnQge21lbnVNYWluU3RvcmUsIG1lbnVTZWFyY2hTdG9yZX0gZnJvbSAnQGxheW91dC9zdG9yZXMvbWFpbnN0b3JlLmpzJ1xuXG4gIGltcG9ydCBUb29sYmFyQnRuIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9lbGVtZW50cy9Ub29sYmFyQnRuLnN2ZWx0ZSdcbiAgaW1wb3J0IEhlYWRlck1lbnUgZnJvbSAnQHNyYy9ieXNrL2NvbXBvbmVudHMvaGVhZGVyL0hlYWRlck1lbnUuc3ZlbHRlJ1xuXG4gIGxldCBpc192aXNpYmxlX21lbnUgPSBmYWxzZVxuICBsZXQgaXNfdmlzaWJsZV9zZWFyY2ggPSBmYWxzZVxuXG4gIC8qKlxuICAgKiBUb29sYmFyIEJ1dHRvbiBPYmpla3RcbiAgICovXG4gIGNvbnN0IGJ1dHRvbnMgPSBbXG4gICAge1xuICAgICAgZ3JvdXA6ICdsZWZ0JyxcbiAgICAgIHR5cGU6IFRvb2xiYXJCdG4sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGl
41kOiAnYnRuTWVudScsXG4gICAgICAgIHRpdGxlOiAnTWVuw7wgYXVma2xhcHBlbicsXG4gICAgICAgIGNsb3NlX3RpdGxlOiAnTWVuw7wgenVrbGFwcGVuJyxcbiAgICAgICAgdGV4dDogJ01lbnUnLFxuICAgICAgICBpY29uOiAnZmEtc29saWQgZmEtYmFycycsXG4gICAgICAgIGNsb3NlX2ljb246ICdmYS1zb2xpZCBmYS14bWFyaycsXG4gICAgICAgIGRpc2FibGVkOiAocGFnZWRhdGEuaXNfcHJldmlldyksXG4gICAgICAgIHN0b3JlOiBtZW51TWFpblN0b3JlLFxuICAgICAgICBhY3Rpb246ICgpID0+IHtcbiAgICAgICAgICBpc192aXNpYmxlX21lbnUgPSAhaXNfdmlzaWJsZV9tZW51XG4gICAgICAgICAgaXNfdmlzaWJsZV9zZWFyY2ggPSBmYWxzZVxuXG4gICAgICAgICAgbWVudU1haW5TdG9yZS5zZXQoaXNfdmlzaWJsZV9tZW51KVxuICAgICAgICAgIG1lbnVTZWFyY2hTdG9yZS5zZXQoaXNfdmlzaWJsZV9zZWFyY2gpXG5cbiAgICAgICAgICBnZXRNZW51VG9wKClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIC8vIH0sXG4gICAgLy8ge1xuICAgIC8vICAgZ3JvdXA6ICdsZWZ0JyxcbiAgICAvLyAgIHR5cGU6IFRvb2xiYXJCdG4sXG4gICAgLy8gICBkYXRhOiB7XG4gICAgLy8gICAgIGlkOiAnYnRuU2VhcmNoJyxcbiAgICAvLyAgICAgdGl0bGU6ICdTdWNoZSBhdWZrbGFwcGVuJyxcbiAgICAvLyAgICAgY2xvc2VfdGl0bGU6ICdTdWNoZSB6dWtsYXBwZW4nLFxuICAgIC8vICAgICB0ZXh0OiAnU3VjaGUnLFxuICAgIC8vICAgICBpY29uOiAnZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzcycsXG4gICAgLy8gICAgIGNsb3NlX2ljb246ICdmYS1yZWd1bGFyIGZhLWNpcmNsZS14bWFyaycsXG4gICAgLy8gICAgIGRpc2FibGVkOiAocGFnZWRhdGEuaXNfcHJldmlldyksXG4gICAgLy8gICAgIHN0b3JlOiBtZW51U2VhcmNoU3RvcmUsXG4gICAgLy8gICAgIGFjdGlvbjogKCkgPT4ge1xuICAgIC8vICAgICAgIGlzX3Zpc2libGVfc2VhcmNoID0gIWlzX3Zpc2libGVfc2VhcmNoXG4gICAgLy8gICAgICAgaXNfdmlzaWJsZV9tZW51ID0gZmFsc2VcbiAgICAvL1xuICAgIC8vICAgICAgIG1lbnVNYWluU3RvcmUuc2V0KGlzX3Zpc2libGVfbWVudSlcbiAgICAvLyAgICAgICBtZW51U2VhcmNoU3RvcmUuc2V0KGlzX3Zpc2libGVfc2VhcmNoKVxuICAgIC8vXG4gICAgLy8gICAgICAgZ2V0TWVudVRvcCgpXG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH1cbiAgICB9XG4gIF1cblxuICAvKipcbiAgICogVG9vbGJhciBCdXR0b25zIGdlZmlsdGVydCBmw7xyIExpbmtzXG4gICAqL1xuICBjb25zdCBidG5zTCA9IGJ1dHRvbnMuZmlsdGVyKGJ0biA9PiB7XG4gICAgcmV0dXJuIGJ0bi5ncm91cCA9PT0gJ2xlZnQnXG4gIH0pXG5cbiAgLyoqXG4gICAqIFRvb2xiYXIgQnV0dG9ucyBnZWZpbHRlcnQgZsO8ciBSZWNodHNcbiAgICovXG4gIGNvbnN0IGJ0bnNSID0gYnV0dG9ucy5maWx0ZXIoYnRuID0+IHtcbiAgICByZXR1cm4gYnRuLmdyb3VwID09PSAncmlnaHQnXG4gIH0pXG5cbiAgLyoqXG4gICAqIEVybWl0dGVsZSBEYXRlbiBmw7xyIGRpZSBQb3NpdGlvbmllcnVuZyBkZXIgTWVuw7xzLCBIYXVwdG1lbsO8IHVuZCBTdWNoZVxuICAgKi9cbiAgbGV0IG1lbnUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwLW1lbnUnKVxuICBsZXQgbVRvcCwgbUxlZnQsIG1XaWR0aFxuICBsZXQgbUhlaWdodCA9IDgwLCB5ID0gMFxuXG4gICQ6IHtcbiAgICBpZiAoeSA+IDApIHtcbiAgICAgIG1lbnUuY2xhc3NMaXN0LmFkZCgnc2hhZG93LXhsJylcbiAgICAgIGlmICh5ID4gMTEwKSB7XG4gICAgICAgIG1IZWlnaHQgPSA1MFxuICAgICAgfVxuICAgICAgaWYgKHkgPCA3MCkge1xuICAgICAgICBtSGVpZ2h0ID0gODBcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWVudS5jbGFzc0xpc3QucmVtb3ZlKCdzaGFkb3cteGwnKVxuICAgICAgbUhlaWdodCA9IDgwXG4gICAgfVxuICAgIHNldE1lbnVUb3AoKVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2V0TWVudVRvcCgpIHtcbiAgICBhd2FpdCB0aWNrKClcbiAgICBnZXRNZW51VG9wKClcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE1lbnVUb3AoKSB7XG4gICAgbWVudSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHAtbWVudScpXG4gICAgbGV0IG1SZWN0ID0gbWVudS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIG1Ub3AgPSBtUmVjdC5oZWlnaHRcblxuICAgIGNvbnN0IG1lbnVDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWVudUNvbnRhaW5lcicpXG4gICAgbGV0IG1SZWN0MSA9IG1lbnVDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBtTGVmdCA9IG1SZWN0MS5sZWZ0XG4gICAgbVdpZHRoID0gKG1SZWN0MS53aWR0aCA+IDk2MCkgPyAnOTYwcHgnIDogJzEwMCUnXG4gIH1cbjwvc2NyaXB0PlxuXG48c3ZlbHRlOndpbmRvdyBiaW5kOnNjcm9sbFk9e3l9Lz5cblxuPGRpdlxuICBpZD1cIm1lbnVDb250YWluZXJcIlxuICBzdHlsZT1cImhlaWdodDp7bUhlaWdodH1weDtcIlxuICBjbGFzcz1cIm1heC1oLVs1MHB4XSBsZzptYXgtaC1bODBweF0gbWF4LXctc2NyZWVuLWJwIG14LWF1dG8gdHJhbnNpdGlvbi1hbGxcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBzdHJldGNoIG1kOmdhcC04IGl0ZW1zLXN0cmV0Y2ggaC1mdWxsXCI+XG4gICAgPGRpdiBjbGFzcz1cIm9yZGVyLTAgaW5saW5lLWZsZXggZmxleC1ub25lIGl0ZW1zLWNlbnRlciB0ZXh0LWJhc2UgbWQ6dGV4dC14bFwiIHJvbGU9XCJncm91cFwiPlxuICAgICAgeyNlYWNoIGJ0bnNMIGFzIGJ0bn1cbiAgICAgICAgPHN2ZWx0ZTpjb21wb25lbnQgdGhpcz17YnRuLnR5cGV9IHsuLi5idG4uZGF0YX0vPlxuICAgICAgey9lYWNofVxuICAgIDwvZGl2PlxuXG4gICAgeyNpZiBpc192aXNpYmxlX21lbnUgJiYgIWlzX3Zpc2libGVfc2VhcmNofVxuICAgICAgPGRpdlxuICAgICAgICB0cmFuc2l0aW9uOmZseT1cInt7eToge21Ub3B9LCBkdXJhdGlvbjogNTAwfX1cIlxuICAgICAgICBjbGFzcz1cImJnLWJwLWdyYXktbWlkZGxlIGRhcms6YmctYmxhY2sgc2Nyb2xsLXNtb290aCBtY
41Xgtdy1zY3JlZW4tYnAgbWF4LWgtWzQwMHB4XSBtZDptYXgtaC1bNDAwcHhdIGxnOm1heC1oLVs2MDBweF0gb3ZlcmZsb3ctYXV0byBteC1hdXRvIHNoYWRvdy0yeGwgc2hhZG93LWJwLWdyYXktZGFyayBwLTRcIlxuICAgICAgICBzdHlsZT1cInBvc2l0aW9uOmFic29sdXRlO3RvcDp7bVRvcH1weDtsZWZ0OnttTGVmdH1weDt3aWR0aDp7bVdpZHRofTtcIlxuICAgICAgPjxIZWFkZXJNZW51Lz5cbiAgICAgIDwvZGl2PlxuICAgIHsvaWZ9XG5cbiAgICA8ZGl2IGNsYXNzPVwib3JkZXItMiBpbmxpbmUtZmxleCBmbGV4LTFcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmbGV4LWF1dG8gYmctbm8tcmVwZWF0IGJnLXJpZ2h0IGJnLWNvbnRhaW4gYmctW3VybCgnL3N0YXRpYy9pbWcvbnVyX3dhcHBlbi5wbmcnKV0geHM6YmctW3VybCgnL3N0YXRpYy9pbWcvd2FwcGVuLnBuZycpXSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIHJvbGU9XCJsaW5rXCJcbiAgICAgICAgdGl0bGU9XCJ6dXIgU3RhcnRzZWl0ZSB3ZWNoc2VsblwiXG4gICAgICAgIG9uOmNsaWNrPXsoKSA9PiB3aW5kb3cubG9jYXRpb24gPSAnL2luZGV4Lmh0bWwnfVxuICAgICAgICBvbjprZXlwcmVzcz17KCkgPT4gd2luZG93LmxvY2F0aW9uID0gJy9pbmRleC5odG1sJ31cbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7cGFnZWRhdGF9IGZyb20gJ0BsYXlvdXQvYnAtbGliLmpzJ1xuXG4gIGV4cG9ydCBsZXQgdGl0bGUgPSAnw5xiZXJzY2hyaWZ0IGZlaGx0J1xuICBleHBvcnQgbGV0IGJhZGdlID0gbnVsbFxuICBleHBvcnQgbGV0IHNpemUgPSAnaDInXG4gIGV4cG9ydCBsZXQgaHJlZiA9IG51bGxcbiAgZXhwb3J0IGxldCB0YXJnZXQgPSAnX3NlbGYnXG4gIGV4cG9ydCBsZXQgb3JpZW50YXRpb24gPSAndGV4dC1sZWZ0J1xuICBleHBvcnQgbGV0IGFuY2hvciA9IG51bGxcbiAgZXhwb3J0IGxldCBicGJsdWUgPSBmYWxzZVxuICBleHBvcnQgbGV0IGJwYm9yZGVyID0gZmFsc2VcbiAgZXhwb3J0IGxldCBpc190b2MgPSBmYWxzZVxuICBleHBvcnQgbGV0IGljb24gPSAnJ1xuICBleHBvcnQgbGV0IGNzcyA9ICcnXG5cbiAgJDogaXNCb3JkZXJlZCA9IGJwYm9yZGVyXG4gICQ6IGlzQmx1ZSA9IGJwYmx1ZVxuICAkOiBwb3MgPSBvcmllbnRhdGlvblxuXG4gICQ6IGNoYW5nZUNTUyA9ICgpID0+IHtcbiAgICBsZXQgY3NzQXJyID0gWydtLTAnLCAndy1mdWxsJywgJ2Rhcms6dGV4dC13aGl0ZScsICdzcGFjZS14LTInXVxuICAgIGNzc0Fyci5wdXNoKHBvcylcblxuICAgIGlmIChpc0JsdWUpIHtcbiAgICAgIGNzc0Fyci5wdXNoKCd0ZXh0LWJwLWJsdWUnKVxuICAgIH1cblxuICAgIGlmIChjc3MpIHtcbiAgICAgIGNzc0Fyci5wdXNoKGNzcylcbiAgICB9XG5cbiAgICByZXR1cm4gY3NzQXJyLmpvaW4oJyAnKVxuICB9XG5cbiAgY29uc3QgcmVuZGVySFRNTCA9ICgpID0+IHtcbiAgICBsZXQgaHRtbCA9IGA8JHtzaXplfSBjbGFzcz1cIiR7Y2hhbmdlQ1NTKCl9XCI+YFxuICAgIGlmIChpY29uICYmIGljb24ubGVuZ3RoKSB7XG4gICAgICBodG1sICs9IGA8aSBjbGFzcz1cIiR7aWNvbn1cIiByb2xlPVwicHJlc2VudGF0aW9uXCIgdGFiaW5kZXg9XCItMVwiPjwvaT5gXG4gICAgfVxuICAgIGlmIChocmVmICYmIGhyZWYubGVuZ3RoKSB7XG4gICAgICBodG1sICs9IGA8YSBocmVmPVwiJHtocmVmfVwiIHRhcmdldD1cIiR7dGFyZ2V0fVwiIGNsYXNzPVwiaG92ZXI6dW5kZXJsaW5lXCI+JHt0aXRsZX08L2E+YFxuICAgIH0gZWxzZSB7XG4gICAgICBodG1sICs9IGA8c3Bhbj4ke3RpdGxlfTwvc3Bhbj5gXG4gICAgfVxuICAgIGlmIChiYWRnZSAmJiBiYWRnZS5sZW5ndGgpIHtcbiAgICAgIGh0bWwgKz0gYDxzcGFuIGNsYXNzPVwibWwtMiB0ZXh0LXdoaXRlIHRleHQteHMgYWxpZ24tdG9wIGJnLWJwLWJsdWUgZGFyazpiZy1ibGFjayBwLTIgcm91bmRlZC1mdWxsXCI+JHtiYWRnZX08L3NwYW4+YFxuICAgIH1cbiAgICBodG1sICs9IGA8LyR7c2l6ZX0+YFxuXG4gICAgcmV0dXJuIGh0bWxcbiAgfVxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICB7I2lmIChhbmNob3IgJiYgcGFnZWRhdGEuaGFzX2F1dG90b2MpfVxuICAgIDxhIGlkPVwie2FuY2hvcn1cIiB0YWJpbmRleD1cIi0xXCI+Jm5ic3A7PC9hPlxuICB7L2lmfVxuXG4gIDxkaXYgY2xhc3M9XCJmbGV4LTEge2lzQm9yZGVyZWQgPyAnYm9yZGVyLWIgYm9yZGVyLWJwLWdyYXktbWlkZGxlJyA6ICcnfVwiPlxuICAgIHtAaHRtbCByZW5kZXJIVE1MKCl9XG4gIDwvZGl2PlxuXG4gIHsjaWYgKGFuY2hvciAmJiBwYWdlZGF0YS5oYXNfYXV0b3RvYyAmJiAhaXNfdG9jKX1cbiAgICA8c3BhbiBjbGFzcz1cInAtMlwiPlxuICAgICAgPGEgaHJlZj1cIiNhdXRvLXRvYy1hbmtlclwiIGNsYXNzPVwiaG92ZXI6dGV4dC1icC1ibHVlXCIgdGl0bGU9XCJ6dW0gSW5oYWx0c3ZlcnplaWNobmlzXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2hldnJvbi11cFwiIHJvbGU9XCJwcmVzZW50YXRpb25cIiB0YWJpbmRleD1cIi0xXCI+PC9pPlxuICAgICAgPC9hPlxuICAgIDwvc3Bhbj5cbiAgey9pZn1cbjwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IHtzbGlkZXJkYXRhfSBmcm9tICdAbGF5b3V0L2JwLWxpYi5qcydcbiAgaW1wb3J0IEhlYWRsaW5lIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L0hlYWRsaW5lLnN2ZWx0ZSdcblxuICBsZXQgZGF0YSA9IChzbGlkZXJkYXRhICYmIHNsaWRlcmRhdGEuZW50cmllcykgPyBzbGlkZXJkYXRhIDogZmFsc2VcbiAgbGV0IGhlYWRsaW5lLCBpbWFnZSwgaXdlMlxuXG4gIGlmIChkYXRhKSB7XG4gICAgZGF0YS5lbnRyaWVzWzBdLmltZy5hbHQgPSBkYXRhLmVudHJpZXNbMF0uYWx0XG4gICAgZGF0YS5lbnRyaWVzWzBdLmltZy50aXRsZSA9IGRhdGEuZW50cmllc1swXS50aXRsZVxuXG4gICAgaGVhZGxpbmUgPSBkYXRhLmhlYWRsaW5lXG4gICAgaW1hZ2UgPSBkYXRhLmVudHJpZXNbMF0uaW1nXG4gICAgaXdlMiA9IGRhdGEuZW50cmllc1swXS50ZXh0LnJlcGxhY2VBbGwoJ1xcblxcbicsICc8Yn
41IvPicpXG4gIH1cbjwvc2NyaXB0PlxuXG57I2lmIChkYXRhKX1cbiAgPGRpdiBjbGFzcz1cImJnLW5vbmUgYmctcmVwZWF0LXggbGc6YmctW3VybCgnL3N0YXRpYy9pbWcvYmdSYXV0ZS5qcGcnKV1cIj5cbiAgICA8ZGl2IGNsYXNzPVwibWF4LXctc2NyZWVuLWJwIG14LWF1dG8gYmctd2hpdGUgZGFyazpiZy1ibGFjayBmbGV4IGZsZXgtY29sIGdhcC04XCI+XG4gICAgICB7I2lmIGhlYWRsaW5lICYmIGhlYWRsaW5lLnRpdGxlLmxlbmd0aH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtbm9uZSBoZXJvLXRpdGxlIG10LTRcIj5cbiAgICAgICAgICA8SGVhZGxpbmUgey4uLmhlYWRsaW5lfS8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgey9pZn1cbiAgICAgIDxkaXYgY2xhc3M9XCJtYXgtdy1zY3JlZW4tYnAgZmxleCBmbGV4LXJvdyBnYXAtOCBweC00IG1heC1oLVszMDBweF0gb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LVszMCVdIGgtZnVsbFwiPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIHNyYz1cIntpbWFnZS54c2x9XCJcbiAgICAgICAgICAgIGFsdD1cIntpbWFnZS5hbHR9XCJcbiAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1heC1oLVszMDBweF0gbS1hdXRvXCJcbiAgICAgICAgICAgIGxvYWRpbmc9XCJlYWdlclwiXG4gICAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQteHMgc206dGV4dC1zbSBtZDp0ZXh0LWJhc2UgYmxvY2sgdy1bNzAlXVwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e0BodG1sIGl3ZTJ9PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbnsvaWZ9XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQgSGVhZGxpbmUgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvSGVhZGxpbmUuc3ZlbHRlJ1xuXG4gIGV4cG9ydCBsZXQgY29kZSA9IDBcblxuICBjb25zdCBsaW5rcyA9IFtcbiAgICB7dGl0bGU6ICdTdGFydHNlaXRlJywgaHJlZjogJy9pbmRleC5odG1sJywgdmlzaWJsZTogdHJ1ZX1cbiAgXVxuXG4gIGNvbnN0IGNvZGVzID0gW1xuICAgIHtcbiAgICAgIGNvZGU6IDAsXG4gICAgICBkZXNjOiAnV2FydHVuZ3NhcmJlaXRlbicsXG4gICAgICB0ZXh0OiAnU2VociBnZWVocnRlIERhbWVuIHVuZCBIZXJyZW4sPGJyLz48YnIvPmRhcyBJbnRlcm5ldGFuZ2Vib3QgZGVzIEtvbnRha3Rwb3J0YWxzIGRlciBCYXllcmlzY2hlbiBQb2xpemVpIGlzdCB3ZWdlbiBXYXJ0dW5nc2FyYmVpdGVuIHZvcsO8YmVyZ2VoZW5kIG5pY2h0IGVycmVpY2hiYXIuPGJyLz5CaXR0ZSB2ZXJzdWNoZW4gU2llIGVzIHp1IGVpbmVtIHNww6R0ZXJlbiBaZWl0cHVua3Qgbm9jaG1hbHMuPGJyLz48YnIvPlZpZWxlbiBEYW5rIGbDvHIgSWhyIFZlcnN0w6RuZG5pcy48YnIvPklocmUgQmF5ZXJpc2NoZSBQb2xpemVpJ1xuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogNDAwLFxuICAgICAgZGVzYzogJ1VuZ8O8bHRpZ2UgQW5mcmFnZScsXG4gICAgICB0ZXh0OiAnRGVyIENsaWVudCBoYXQgZWluZSBmZWhsZXJoYWZ0ZSBBbmZyYWdlIGdlc2NoaWNrdCwgZGllIGRlciBTZXJ2ZXIgYXVmZ3J1bmQgZmVobGVyaGFmdGVyIFN5bnRheCBuaWNodCBiZWFyYmVpdGVuIGthbm4uJ1xuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogNDAxLFxuICAgICAgZGVzYzogJ1VuYXV0b3Jpc2llcnQnLFxuICAgICAgdGV4dDogJ0RpZSBBbmZyYWdlIGthbm4gb2huZSBBdXRvcmlzaWVydW5nIG5pY2h0IHZlcmFyYmVpdGV0IHdlcmRlbi4gWnUgZGllc2VtIFp3ZWNrIG11c3MgZGVyIFNlcnZlciBlaW5lbiBXV1dfQXV0aGVudGljYXRlLUFudHdvcnRoZWFkZXIgbWl0c2NoaWNrZW4sIGRlciBlcmzDpHV0ZXJ0LCB3aWUgZGllIEF1dGhlbnRpZml6aWVydW5nIHZvcnp1bmVobWVuIGlzdC4gSFRUUCBkZWZpbmllcnQgZGllIHp3ZWkgTWV0aG9kZW4g4oCeQmFzaWPigJwgdW5kIOKAnkRpZ2VzdOKAnCB2b3IuJ1xuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogNDAzLFxuICAgICAgZGVzYzogJ1ZlcmJvdGVuJyxcbiAgICAgIHRleHQ6ICdEZXIgWnVncmlmZiBpc3QgZGF1ZXJoYWZ0IHZlcmJvdGVuLiBFaW5lIEF1dGhvcmlzYXRpb24gd2lyZCBuaWNodCBhbmVya2FubnQsIHVuZCBkZXIgQ2xpZW50IHNvbGwgZGllIEFuZnJhZ2UgbmljaHQgbm9jaCBlaW5tYWwgc3RlbGxlbi4nXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiA0MDQsXG4gICAgICBkZXNjOiAnU2VpdGUgbmljaHQgZ2VmdW5kZW4nLFxuICAgICAgdGV4dDogJ0RlciBTZXJ2ZXIga29ubnRlIGRpZSB2b20gQ2xpZW50IGFuZ2Vmb3JkZXJ0ZSBSZXNzb3VyY2UgbmljaHQgZmluZGVuLiBIw6R1Zmlnc3RlIFVyc2FjaGUgaXN0IGVpbiBzb2dlbmFubnRlciBUb3RlciBMaW5rLiBEZXIgNDA0LVN0YXR1cyBrYW5uIGViZW5mYWxscyB6dXLDvGNrZ2VsaWVmZXJ0IHdlcmRlbiwgd2VubiBrZWluIGFuZGVyZXIgU3RhdHVzY29kZSB6dXRyZWZmZW5kIGlzdCBvZGVyIGRlciBDbGllbnQgYmV3dXNzdCBvaG5lIEFuZ2FiZSBlaW5lcyBuw6RoZXJlbiBHcnVuZGVzIGFiZ2V3aWVzZW4gd2VyZGVuIHNvbGwuJ1xuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogNDA1LFxuICAgICAgZGVzYzogJ01ldGhvZGUgbmljaHQgZXJsYXVidCcsXG4gICAgICB0ZXh0OiAnRGllIEFuZnJhZ2UtTWV0aG9kZSAod2llIEdFVCBvZGVyIFBPU1QpIGlzdCBuaWNodCBlcmxhdWJ0LiBEaWVzZSBBbnR3b3J0IGthbm4gei4gQi4genVyw7xja2tvbW1lbiwgd2VubiBtYW4gV2ViREFWLU1ldGhvZGVuIHZlcndlbmRldCwgb2huZSBkYXNzIGRlciBTZXJ2ZXIgZGllc2UgYmVoZXJyc2NodC4gSW4gZWluZW0gQWxsb3ctQW50d29ydGhlYWRlciBtdXNzIGRlciBTZXJ2ZXIgZXJsYXVidGUgTWV0aG9kZW4gYXVmbGlzdGVuLidcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IDQwOCxcbiAgICAgIGRlc2M6ICdBbmZyYWdlLVplaXTDvGJlcnNjaHJlaXR1bmcnLFxuICAgICAgdGV4dDogJ0RpZSBBbmZyYWdlIHd1cmRlI
41HZvbSBDbGllbnQgbmljaHQgaW4gZGVyIHZvbSBTZXJ2ZXIgdm9yZ2VnZWJlbmVuIFplaXQgYmVlbmRldC4gRGVyIEZlaGxlciBrYW5uIHouIEIuIGJlaW0gSG9jaGxhZGVuIGdyb8OfZXIgRGF0ZWllbiBhdWZ0cmV0ZW4uJ1xuICAgIH0sXG4gICAge1xuICAgICAgY29kZTogNTAwLFxuICAgICAgZGVzYzogJ0ludGVybmVyIFNlcnZlci1GZWhsZXInLFxuICAgICAgdGV4dDogJ0RlciBTZXJ2ZXIgZW50ZGVja3QgZWluZW4gaW50ZXJuZW4gRmVobGVyIHVuZCBrYW5uIGRlc2hhbGIgZGllIEFuZnJhZ2UgbmljaHQgYmVhcmJlaXRlbi4gRmVobGVyIGluIFByb2dyYW1tZW4gYXVmIGRlbSBTZXJ2ZXIsIHouIEIuIGluIFBIUC1Ta3JpcHRlbiwga8O2bm5lbiBkaWVzZSBBbnR3b3J0IHByb3ZvemllcmVuLidcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IDUwMixcbiAgICAgIGRlc2M6ICdTY2hsZWNodGVzIFBvcnRhbCcsXG4gICAgICB0ZXh0OiAnRGVyIFNlcnZlciwgaW4gZGllc2VtIEZhbGwgZWluIFByb3h5LCBrYW5uIGRpZSBBbmZyYWdlIG5pY2h0IGF1c2bDvGhyZW4sIHdlaWwgaW0gd2VpdGVyZW4gVmVybGF1ZiBlaW4gRmVobGVyIGF1ZmdldHJldGVuIGlzdC4nXG4gICAgfSxcbiAgICB7XG4gICAgICBjb2RlOiA1MDMsXG4gICAgICBkZXNjOiAnRGllbnN0IG5pY2h0IHZlcmbDvGdiYXInLFxuICAgICAgdGV4dDogJ0RlciBEaWVuc3QgaXN0IGRlcnplaXQgbmljaHQgdmVyZsO8Z2Jhci4gRGllcyBrYW5uIGF1ZmdydW5kIGhvaGVuIERhdGVuYXVma29tbWVucyBvZGVyIHdlZ2VuIFdhcnR1bmdzYXJiZWl0ZW4gcGFzc2llcmVuLidcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvZGU6IDUwNCxcbiAgICAgIGRlc2M6ICdQb3J0YWwtQXVzemVpdCcsXG4gICAgICB0ZXh0OiAnRGVyIFByb3h5IGthbm4gZGllIEFuZnJhZ2Ugd2VnZW4gZWluZXIgWmVpdMO8YmVyc2NocmVpdHVuZyBuaWNodCBiZWFyYmVpdGVuLidcbiAgICB9XG4gIF1cblxuICAkOiBpdGVtID0gY29kZXMuZmluZChlID0+IHtcbiAgICBpZiAoZS5jb2RlID09PSBjb2RlKSB7XG4gICAgICByZXR1cm4gZVxuICAgIH1cbiAgfSk7XG5cbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBzbTpncmlkLWNvbHMtMiBnYXAtOFwiPlxuICA8ZGl2PlxuICAgIDxpbWcgc3JjPVwiL3N0YXRpYy9pbWcvZXJyb3JfcGFnZS5qcGdcIiBhbHQ9XCJGZWhsZXJzZWl0ZVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIiB0YWJpbmRleD1cIi0xXCI+XG4gIDwvZGl2PlxuICA8ZGl2PlxuICAgIHsjaWYgaXRlbS5jb2RlID4gMH1cbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIGdhcC04XCI+XG4gICAgICAgIDxIZWFkbGluZSB0aXRsZT1cIntpdGVtLmNvZGV9IHtpdGVtLmRlc2N9XCIgc2l6ZT1cImgzXCIvPlxuICAgICAgICA8cD57QGh0bWwgaXRlbS50ZXh0fTwvcD5cbiAgICAgICAgPHNwYW4+WnVyw7xjayB6dXJcbiAgICAgICAgICA8YSBocmVmPVwiL2luZGV4Lmh0bWxcIiBjbGFzcz1cInRleHQtYnAtYmx1ZSBob3Zlcjp1bmRlcmxpbmVcIj5TdGFydHNlaXRlPC9hPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB7OmVsc2V9XG4gICAgICA8cD57QGh0bWwgaXRlbS50ZXh0fTwvcD5cbiAgICB7L2lmfVxuICA8L2Rpdj5cbjwvZGl2PiIsIi8qIVxuICAqIFBob3RvU3dpcGUgTGlnaHRib3ggNS40LjQgLSBodHRwczovL3Bob3Rvc3dpcGUuY29tXG4gICogKGMpIDIwMjQgRG15dHJvIFNlbWVub3ZcbiAgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9waG90b3N3aXBlLmpzJykuUG9pbnR9IFBvaW50ICovXG5cbi8qKlxyXG4gKiBAdGVtcGxhdGUge2tleW9mIEhUTUxFbGVtZW50VGFnTmFtZU1hcH0gVFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lXHJcbiAqIEBwYXJhbSB7VH0gdGFnTmFtZVxyXG4gKiBAcGFyYW0ge05vZGV9IFthcHBlbmRUb0VsXVxyXG4gKiBAcmV0dXJucyB7SFRNTEVsZW1lbnRUYWdOYW1lTWFwW1RdfVxyXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQoY2xhc3NOYW1lLCB0YWdOYW1lLCBhcHBlbmRUb0VsKSB7XG4gIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWdOYW1lKTtcblxuICBpZiAoY2xhc3NOYW1lKSB7XG4gICAgZWwuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICB9XG5cbiAgaWYgKGFwcGVuZFRvRWwpIHtcbiAgICBhcHBlbmRUb0VsLmFwcGVuZENoaWxkKGVsKTtcbiAgfVxuXG4gIHJldHVybiBlbDtcbn1cbi8qKlxyXG4gKiBHZXQgdHJhbnNmb3JtIHN0cmluZ1xyXG4gKlxyXG4gKiBAcGFyYW0ge251bWJlcn0geFxyXG4gKiBAcGFyYW0ge251bWJlcn0gW3ldXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBbc2NhbGVdXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XHJcbiAqL1xuXG5mdW5jdGlvbiB0b1RyYW5zZm9ybVN0cmluZyh4LCB5LCBzY2FsZSkge1xuICBsZXQgcHJvcFZhbHVlID0gYHRyYW5zbGF0ZTNkKCR7eH1weCwke3kgfHwgMH1weCwwKWA7XG5cbiAgaWYgKHNjYWxlICE9PSB1bmRlZmluZWQpIHtcbiAgICBwcm9wVmFsdWUgKz0gYCBzY2FsZTNkKCR7c2NhbGV9LCR7c2NhbGV9LDEpYDtcbiAgfVxuXG4gIHJldHVybiBwcm9wVmFsdWU7XG59XG4vKipcclxuICogQXBwbHkgd2lkdGggYW5kIGhlaWdodCBDU1MgcHJvcGVydGllcyB0byBlbGVtZW50XHJcbiAqXHJcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGVsXHJcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSB3XHJcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBoXHJcbiAqL1xuXG5mdW5jdGlvbiBzZXRXaWR0aEhlaWdodChlbCwgdywgaCkge1xuICBlbC5zdHlsZS53aWR0aCA9IHR5cGVvZiB3ID09PSAnbnVtYmVyJyA/IGAke3d9cHhgIDogdztcbiAgZWwuc3R5bGUuaGVpZ2h0ID0gdHlwZW9mIGggPT09ICdudW1iZXInID8gYCR7aH1weGAgOiBoO1xufVxuLyoqIEB0eXBlZGVmIHtMT0FEX1NUQVRFW2tleW9mIExPQURfU1RBVEVdfSBMb2FkU3RhdGUgKi9cblxuLyoqIEB0eXBlIHt7IElETEU6ICdpZGxlJzsgTE9BRElORzogJ2xvYWRpbmcnOyBMT0FERUQ6ICdsb2FkZWQnOyBFUlJPUjogJ2Vycm9yJyB9fSAqL1xuXG5jb25zdCBMT0FEX1NUQVRFID0ge1xuICBJRExFOiAnaWRsZScsXG4gIExPQURJTkc6ICdsb2FkaW5nJyxcbiAgTE9BREVEOiAnbG9hZGVkJyxcbiAgRVJST1I6ICdlcnJvcidcbn07XG4vKipcclxuICogQ2hlY2sgaWYgY2xpY2sgb3Iga2V5ZG93biBldmVudCB3YXMgZGlzcGF0Y2hlZFxyXG4gKiB3aXRoIGEgc3BlY2lhbCBrZXkgb3IgdmlhIG1vdXNlIHdoZWVsLlxyXG4gKlxyXG4gKiBAcGFyYW0ge01vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50fSBlXHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cblxuZnVuY3Rpb24gc3BlY2lhbEtleVVzZWQoZSkge1xuICByZXR1cm4gJ2J1
41dHRvbicgaW4gZSAmJiBlLmJ1dHRvbiA9PT0gMSB8fCBlLmN0cmxLZXkgfHwgZS5tZXRhS2V5IHx8IGUuYWx0S2V5IHx8IGUuc2hpZnRLZXk7XG59XG4vKipcclxuICogUGFyc2UgYGdhbGxlcnlgIG9yIGBjaGlsZHJlbmAgb3B0aW9ucy5cclxuICpcclxuICogQHBhcmFtIHtpbXBvcnQoJy4uL3Bob3Rvc3dpcGUuanMnKS5FbGVtZW50UHJvdmlkZXJ9IFtvcHRpb25dXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbGVnYWN5U2VsZWN0b3JdXHJcbiAqIEBwYXJhbSB7SFRNTEVsZW1lbnQgfCBEb2N1bWVudH0gW3BhcmVudF1cclxuICogQHJldHVybnMgSFRNTEVsZW1lbnRbXVxyXG4gKi9cblxuZnVuY3Rpb24gZ2V0RWxlbWVudHNGcm9tT3B0aW9uKG9wdGlvbiwgbGVnYWN5U2VsZWN0b3IsIHBhcmVudCA9IGRvY3VtZW50KSB7XG4gIC8qKiBAdHlwZSB7SFRNTEVsZW1lbnRbXX0gKi9cbiAgbGV0IGVsZW1lbnRzID0gW107XG5cbiAgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICBlbGVtZW50cyA9IFtvcHRpb25dO1xuICB9IGVsc2UgaWYgKG9wdGlvbiBpbnN0YW5jZW9mIE5vZGVMaXN0IHx8IEFycmF5LmlzQXJyYXkob3B0aW9uKSkge1xuICAgIGVsZW1lbnRzID0gQXJyYXkuZnJvbShvcHRpb24pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBvcHRpb24gOiBsZWdhY3lTZWxlY3RvcjtcblxuICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgZWxlbWVudHMgPSBBcnJheS5mcm9tKHBhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnRzO1xufVxuLyoqXHJcbiAqIENoZWNrIGlmIHZhcmlhYmxlIGlzIFBob3RvU3dpcGUgY2xhc3NcclxuICpcclxuICogQHBhcmFtIHthbnl9IGZuXHJcbiAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gKi9cblxuZnVuY3Rpb24gaXNQc3dwQ2xhc3MoZm4pIHtcbiAgcmV0dXJuIHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyAmJiBmbi5wcm90b3R5cGUgJiYgZm4ucHJvdG90eXBlLmdvVG87XG59XG4vKipcclxuICogQ2hlY2sgaWYgYnJvd3NlciBpcyBTYWZhcmlcclxuICpcclxuICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAqL1xuXG5mdW5jdGlvbiBpc1NhZmFyaSgpIHtcbiAgcmV0dXJuICEhKG5hdmlnYXRvci52ZW5kb3IgJiYgbmF2aWdhdG9yLnZlbmRvci5tYXRjaCgvYXBwbGUvaSkpO1xufVxuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vbGlnaHRib3gvbGlnaHRib3guanMnKS5kZWZhdWx0fSBQaG90b1N3aXBlTGlnaHRib3ggKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3Bob3Rvc3dpcGUuanMnKS5kZWZhdWx0fSBQaG90b1N3aXBlICovXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9waG90b3N3aXBlLmpzJykuUGhvdG9Td2lwZU9wdGlvbnN9IFBob3RvU3dpcGVPcHRpb25zICovXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9waG90b3N3aXBlLmpzJykuRGF0YVNvdXJjZX0gRGF0YVNvdXJjZSAqL1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vdWkvdWktZWxlbWVudC5qcycpLlVJRWxlbWVudERhdGF9IFVJRWxlbWVudERhdGEgKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3NsaWRlL2NvbnRlbnQuanMnKS5kZWZhdWx0fSBDb250ZW50RGVmYXVsdCAqL1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vc2xpZGUvc2xpZGUuanMnKS5kZWZhdWx0fSBTbGlkZSAqL1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vc2xpZGUvc2xpZGUuanMnKS5TbGlkZURhdGF9IFNsaWRlRGF0YSAqL1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vc2xpZGUvem9vbS1sZXZlbC5qcycpLmRlZmF1bHR9IFpvb21MZXZlbCAqL1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vc2xpZGUvZ2V0LXRodW1iLWJvdW5kcy5qcycpLkJvdW5kc30gQm91bmRzICovXG5cbi8qKlxyXG4gKiBBbGxvdyBhZGRpbmcgYW4gYXJiaXRyYXJ5IHByb3BzIHRvIHRoZSBDb250ZW50XHJcbiAqIGh0dHBzOi8vcGhvdG9zd2lwZS5jb20vY3VzdG9tLWNvbnRlbnQvI3VzaW5nLXdlYnAtaW1hZ2UtZm9ybWF0XHJcbiAqIEB0eXBlZGVmIHtDb250ZW50RGVmYXVsdCAmIFJlY29yZDxzdHJpbmcsIGFueT59IENvbnRlbnRcclxuICovXG5cbi8qKiBAdHlwZWRlZiB7eyB4PzogbnVtYmVyOyB5PzogbnVtYmVyIH19IFBvaW50ICovXG5cbi8qKlxyXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBQaG90b1N3aXBlRXZlbnRzTWFwIGh0dHBzOi8vcGhvdG9zd2lwZS5jb20vZXZlbnRzL1xyXG4gKlxyXG4gKlxyXG4gKiBodHRwczovL3Bob3Rvc3dpcGUuY29tL2FkZGluZy11aS1lbGVtZW50cy9cclxuICpcclxuICogQHByb3Age3VuZGVmaW5lZH0gdWlSZWdpc3RlclxyXG4gKiBAcHJvcCB7eyBkYXRhOiBVSUVsZW1lbnREYXRhIH19IHVpRWxlbWVudENyZWF0ZVxyXG4gKlxyXG4gKlxyXG4gKiBodHRwczovL3Bob3Rvc3dpcGUuY29tL2V2ZW50cy8jaW5pdGlhbGl6YXRpb24tZXZlbnRzXHJcbiAqXHJcbiAqIEBwcm9wIHt1bmRlZmluZWR9IGJlZm9yZU9wZW5cclxuICogQHByb3Age3VuZGVmaW5lZH0gZmlyc3RVcGRhdGVcclxuICogQHByb3Age3VuZGVmaW5lZH0gaW5pdGlhbExheW91dFxyXG4gKiBAcHJvcCB7dW5kZWZpbmVkfSBjaGFuZ2VcclxuICogQHByb3Age3VuZGVmaW5lZH0gYWZ0ZXJJbml0XHJcbiAqIEBwcm9wIHt1bmRlZmluZWR9IGJpbmRFdmVudHNcclxuICpcclxuICpcclxuICogaHR0cHM6Ly9waG90b3N3aXBlLmNvbS9ldmVudHMvI29wZW5pbmctb3ItY2xvc2luZy10cmFuc2l0aW9uLWV2ZW50c1xyXG4gKlxyXG4gKiBAcHJvcCB7dW5kZWZpbmVkfSBvcGVuaW5nQW5pbWF0aW9uU3RhcnRcclxuICogQHByb3Age3VuZGVmaW5lZH0gb3BlbmluZ0FuaW1hdGlvbkVuZFxyXG4gKiBAcHJvcCB7dW5kZWZpbmVkfSBjbG9zaW5nQW5pbWF0aW9uU3RhcnRcclxuICogQHByb3Age3VuZGVmaW5lZH0gY2xvc2luZ0FuaW1hdGlvbkVuZFxyXG4gKlxyXG4gKlxyXG4gKiBodHRwczovL3Bob3Rvc3dpcGUuY29tL2V2ZW50cy8jY2xvc2luZy1ldmVud
41HNcclxuICpcclxuICogQHByb3Age3VuZGVmaW5lZH0gY2xvc2VcclxuICogQHByb3Age3VuZGVmaW5lZH0gZGVzdHJveVxyXG4gKlxyXG4gKlxyXG4gKiBodHRwczovL3Bob3Rvc3dpcGUuY29tL2V2ZW50cy8jcG9pbnRlci1hbmQtZ2VzdHVyZS1ldmVudHNcclxuICpcclxuICogQHByb3Age3sgb3JpZ2luYWxFdmVudDogUG9pbnRlckV2ZW50IH19IHBvaW50ZXJEb3duXHJcbiAqIEBwcm9wIHt7IG9yaWdpbmFsRXZlbnQ6IFBvaW50ZXJFdmVudCB9fSBwb2ludGVyTW92ZVxyXG4gKiBAcHJvcCB7eyBvcmlnaW5hbEV2ZW50OiBQb2ludGVyRXZlbnQgfX0gcG9pbnRlclVwXHJcbiAqIEBwcm9wIHt7IGJnT3BhY2l0eTogbnVtYmVyIH19IHBpbmNoQ2xvc2UgY2FuIGJlIGRlZmF1bHQgcHJldmVudGVkXHJcbiAqIEBwcm9wIHt7IHBhblk6IG51bWJlciB9fSB2ZXJ0aWNhbERyYWcgY2FuIGJlIGRlZmF1bHQgcHJldmVudGVkXHJcbiAqXHJcbiAqXHJcbiAqIGh0dHBzOi8vcGhvdG9zd2lwZS5jb20vZXZlbnRzLyNzbGlkZS1jb250ZW50LWV2ZW50c1xyXG4gKlxyXG4gKiBAcHJvcCB7eyBjb250ZW50OiBDb250ZW50IH19IGNvbnRlbnRJbml0XHJcbiAqIEBwcm9wIHt7IGNvbnRlbnQ6IENvbnRlbnQ7IGlzTGF6eTogYm9vbGVhbiB9fSBjb250ZW50TG9hZCBjYW4gYmUgZGVmYXVsdCBwcmV2ZW50ZWRcclxuICogQHByb3Age3sgY29udGVudDogQ29udGVudDsgaXNMYXp5OiBib29sZWFuIH19IGNvbnRlbnRMb2FkSW1hZ2UgY2FuIGJlIGRlZmF1bHQgcHJldmVudGVkXHJcbiAqIEBwcm9wIHt7IGNvbnRlbnQ6IENvbnRlbnQ7IHNsaWRlOiBTbGlkZTsgaXNFcnJvcj86IGJvb2xlYW4gfX0gbG9hZENvbXBsZXRlXHJcbiAqIEBwcm9wIHt7IGNvbnRlbnQ6IENvbnRlbnQ7IHNsaWRlOiBTbGlkZSB9fSBsb2FkRXJyb3JcclxuICogQHByb3Age3sgY29udGVudDogQ29udGVudDsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfX0gY29udGVudFJlc2l6ZSBjYW4gYmUgZGVmYXVsdCBwcmV2ZW50ZWRcclxuICogQHByb3Age3sgY29udGVudDogQ29udGVudDsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXI7IHNsaWRlOiBTbGlkZSB9fSBpbWFnZVNpemVDaGFuZ2VcclxuICogQHByb3Age3sgY29udGVudDogQ29udGVudCB9fSBjb250ZW50TGF6eUxvYWQgY2FuIGJlIGRlZmF1bHQgcHJldmVudGVkXHJcbiAqIEBwcm9wIHt7IGNvbnRlbnQ6IENvbnRlbnQgfX0gY29udGVudEFwcGVuZCBjYW4gYmUgZGVmYXVsdCBwcmV2ZW50ZWRcclxuICogQHByb3Age3sgY29udGVudDogQ29udGVudCB9fSBjb250ZW50QWN0aXZhdGUgY2FuIGJlIGRlZmF1bHQgcHJldmVudGVkXHJcbiAqIEBwcm9wIHt7IGNvbnRlbnQ6IENvbnRlbnQgfX0gY29udGVudERlYWN0aXZhdGUgY2FuIGJlIGRlZmF1bHQgcHJldmVudGVkXHJcbiAqIEBwcm9wIHt7IGNvbnRlbnQ6IENvbnRlbnQgfX0gY29udGVudFJlbW92ZSBjYW4gYmUgZGVmYXVsdCBwcmV2ZW50ZWRcclxuICogQHByb3Age3sgY29udGVudDogQ29udGVudCB9fSBjb250ZW50RGVzdHJveSBjYW4gYmUgZGVmYXVsdCBwcmV2ZW50ZWRcclxuICpcclxuICpcclxuICogdW5kb2N1bWVudGVkXHJcbiAqXHJcbiAqIEBwcm9wIHt7IHBvaW50OiBQb2ludDsgb3JpZ2luYWxFdmVudDogUG9pbnRlckV2ZW50IH19IGltYWdlQ2xpY2tBY3Rpb24gY2FuIGJlIGRlZmF1bHQgcHJldmVudGVkXHJcbiAqIEBwcm9wIHt7IHBvaW50OiBQb2ludDsgb3JpZ2luYWxFdmVudDogUG9pbnRlckV2ZW50IH19IGJnQ2xpY2tBY3Rpb24gY2FuIGJlIGRlZmF1bHQgcHJldmVudGVkXHJcbiAqIEBwcm9wIHt7IHBvaW50OiBQb2ludDsgb3JpZ2luYWxFdmVudDogUG9pbnRlckV2ZW50IH19IHRhcEFjdGlvbiBjYW4gYmUgZGVmYXVsdCBwcmV2ZW50ZWRcclxuICogQHByb3Age3sgcG9pbnQ6IFBvaW50OyBvcmlnaW5hbEV2ZW50OiBQb2ludGVyRXZlbnQgfX0gZG91YmxlVGFwQWN0aW9uIGNhbiBiZSBkZWZhdWx0IHByZXZlbnRlZFxyXG4gKlxyXG4gKiBAcHJvcCB7eyBvcmlnaW5hbEV2ZW50OiBLZXlib2FyZEV2ZW50IH19IGtleWRvd24gY2FuIGJlIGRlZmF1bHQgcHJldmVudGVkXHJcbiAqIEBwcm9wIHt7IHg6IG51bWJlcjsgZHJhZ2dpbmc6IGJvb2xlYW4gfX0gbW92ZU1haW5TY3JvbGxcclxuICogQHByb3Age3sgc2xpZGU6IFNsaWRlIH19IGZpcnN0Wm9vbVBhblxyXG4gKiBAcHJvcCB7eyBzbGlkZTogU2xpZGUgfCB1bmRlZmluZWQsIGRhdGE6IFNsaWRlRGF0YSwgaW5kZXg6IG51bWJlciB9fSBnZXR0aW5nRGF0YVxyXG4gKiBAcHJvcCB7dW5kZWZpbmVkfSBiZWZvcmVSZXNpemVcclxuICogQHByb3Age3VuZGVmaW5lZH0gcmVzaXplXHJcbiAqIEBwcm9wIHt1bmRlZmluZWR9IHZpZXdwb3J0U2l6ZVxyXG4gKiBAcHJvcCB7dW5kZWZpbmVkfSB1cGRhdGVTY3JvbGxPZmZzZXRcclxuICogQHByb3Age3sgc2xpZGU6IFNsaWRlIH19IHNsaWRlSW5pdFxyXG4gKiBAcHJvcCB7eyBzbGlkZTogU2xpZGUgfX0gYWZ0ZXJTZXRDb250ZW50XHJcbiAqIEBwcm9wIHt7IHNsaWRlOiBTbGlkZSB9fSBzbGlkZUxvYWRcclxuICogQHByb3Age3sgc2xpZGU6IFNsaWRlIH19IGFwcGVuZEhlYXZ5IGNhbiBiZSBkZWZhdWx0IHByZXZlbnRlZFxyXG4gKiBAcHJvcCB7eyBzbGlkZTogU2xpZGUgfX0gYXBwZW5kSGVhdnlDb250ZW50XHJcbiAqIEBwcm9wIHt7IHNsaWRlOiBTbGlkZSB9fSBzbGlkZUFjdGl2YXRlXHJcbiAqIEBwcm9wIHt7IHNsaWRlOiBTbGlkZSB9fSBzbGlkZURlYWN0aXZhdGVcclxuICogQHByb3Age3sgc2xpZGU6IFNsaWRlIH19IHNsaWRlRGVzdHJveVxyXG4gKiBAcHJvcCB7eyBkZXN0Wm9vbUxldmVsOiBudW1iZXIsIGNlbnRlclBvaW50OiBQb2ludCB8IHVuZGVmaW5lZCwgdHJhbnNpdGlvbkR1cmF0aW9uOiBudW1iZXIgfCBmYWxzZSB8IHVuZGVmaW5lZCB9fSBiZWZvcmVab29tVG9cclxuICogQHByb3Age3sgc2xpZGU6IFNsaWRlIH19IHpvb21QYW5VcGRhdGVcclxuICogQHByb3Age3sgc2xpZGU6IFNsaWRlIH19IGluaXRpYWxab29tUGFuXHJcbiAqIEBwcm9wIHt7IHNsaWRlOiBTbGlkZSB9fSBjYWxjU2xpZGVTaXplXHJcbiAqIEBwcm9wIHt1bmRlZmluZWR9IHJlc29sdXRpb25DaGFuZ2VkXHJcbiAqIEBwcm9wIHt7IG9yaWdpbmFsRXZlbnQ6IFdoZWVsRXZlbnQgfX0gd2hlZWwgY2FuIGJlIGRlZmF1bHQgcHJldmVudGVkXHJcbiAqIEBwcm9wIHt7IGNvbnRlbnQ6IENvbnRlbnQgfX0gY29udGVudEFwcGVuZEltYWdlIGNhbiBiZSBkZWZhdWx0IHByZXZlbn
41RlZFxyXG4gKiBAcHJvcCB7eyBpbmRleDogbnVtYmVyOyBpdGVtRGF0YTogU2xpZGVEYXRhIH19IGxhenlMb2FkU2xpZGUgY2FuIGJlIGRlZmF1bHQgcHJldmVudGVkXHJcbiAqIEBwcm9wIHt1bmRlZmluZWR9IGxhenlMb2FkXHJcbiAqIEBwcm9wIHt7IHNsaWRlOiBTbGlkZSB9fSBjYWxjQm91bmRzXHJcbiAqIEBwcm9wIHt7IHpvb21MZXZlbHM6IFpvb21MZXZlbCwgc2xpZGVEYXRhOiBTbGlkZURhdGEgfX0gem9vbUxldmVsc1VwZGF0ZVxyXG4gKlxyXG4gKlxyXG4gKiBsZWdhY3lcclxuICpcclxuICogQHByb3Age3VuZGVmaW5lZH0gaW5pdFxyXG4gKiBAcHJvcCB7dW5kZWZpbmVkfSBpbml0aWFsWm9vbUluXHJcbiAqIEBwcm9wIHt1bmRlZmluZWR9IGluaXRpYWxab29tT3V0XHJcbiAqIEBwcm9wIHt1bmRlZmluZWR9IGluaXRpYWxab29tSW5FbmRcclxuICogQHByb3Age3VuZGVmaW5lZH0gaW5pdGlhbFpvb21PdXRFbmRcclxuICogQHByb3Age3sgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSB8IHVuZGVmaW5lZCwgbnVtSXRlbXM6IG51bWJlciB9fSBudW1JdGVtc1xyXG4gKiBAcHJvcCB7eyBpdGVtRGF0YTogU2xpZGVEYXRhOyBpbmRleDogbnVtYmVyIH19IGl0ZW1EYXRhXHJcbiAqIEBwcm9wIHt7IGluZGV4OiBudW1iZXIsIGl0ZW1EYXRhOiBTbGlkZURhdGEsIGluc3RhbmNlOiBQaG90b1N3aXBlIH19IHRodW1iQm91bmRzXHJcbiAqL1xuXG4vKipcclxuICogQHR5cGVkZWYge09iamVjdH0gUGhvdG9Td2lwZUZpbHRlcnNNYXAgaHR0cHM6Ly9waG90b3N3aXBlLmNvbS9maWx0ZXJzL1xyXG4gKlxyXG4gKiBAcHJvcCB7KG51bUl0ZW1zOiBudW1iZXIsIGRhdGFTb3VyY2U6IERhdGFTb3VyY2UgfCB1bmRlZmluZWQpID0+IG51bWJlcn0gbnVtSXRlbXNcclxuICogTW9kaWZ5IHRoZSB0b3RhbCBhbW91bnQgb2Ygc2xpZGVzLiBFeGFtcGxlIG9uIERhdGEgc291cmNlcyBwYWdlLlxyXG4gKiBodHRwczovL3Bob3Rvc3dpcGUuY29tL2ZpbHRlcnMvI251bWl0ZW1zXHJcbiAqXHJcbiAqIEBwcm9wIHsoaXRlbURhdGE6IFNsaWRlRGF0YSwgaW5kZXg6IG51bWJlcikgPT4gU2xpZGVEYXRhfSBpdGVtRGF0YVxyXG4gKiBNb2RpZnkgc2xpZGUgaXRlbSBkYXRhLiBFeGFtcGxlIG9uIERhdGEgc291cmNlcyBwYWdlLlxyXG4gKiBodHRwczovL3Bob3Rvc3dpcGUuY29tL2ZpbHRlcnMvI2l0ZW1kYXRhXHJcbiAqXHJcbiAqIEBwcm9wIHsoaXRlbURhdGE6IFNsaWRlRGF0YSwgZWxlbWVudDogSFRNTEVsZW1lbnQsIGxpbmtFbDogSFRNTEFuY2hvckVsZW1lbnQpID0+IFNsaWRlRGF0YX0gZG9tSXRlbURhdGFcclxuICogTW9kaWZ5IGl0ZW0gZGF0YSB3aGVuIGl0J3MgcGFyc2VkIGZyb20gRE9NIGVsZW1lbnQuIEV4YW1wbGUgb24gRGF0YSBzb3VyY2VzIHBhZ2UuXHJcbiAqIGh0dHBzOi8vcGhvdG9zd2lwZS5jb20vZmlsdGVycy8jZG9taXRlbWRhdGFcclxuICpcclxuICogQHByb3AgeyhjbGlja2VkSW5kZXg6IG51bWJlciwgZTogTW91c2VFdmVudCwgaW5zdGFuY2U6IFBob3RvU3dpcGVMaWdodGJveCkgPT4gbnVtYmVyfSBjbGlja2VkSW5kZXhcclxuICogTW9kaWZ5IGNsaWNrZWQgZ2FsbGVyeSBpdGVtIGluZGV4LlxyXG4gKiBodHRwczovL3Bob3Rvc3dpcGUuY29tL2ZpbHRlcnMvI2NsaWNrZWRpbmRleFxyXG4gKlxyXG4gKiBAcHJvcCB7KHBsYWNlaG9sZGVyU3JjOiBzdHJpbmcgfCBmYWxzZSwgY29udGVudDogQ29udGVudCkgPT4gc3RyaW5nIHwgZmFsc2V9IHBsYWNlaG9sZGVyU3JjXHJcbiAqIE1vZGlmeSBwbGFjZWhvbGRlciBpbWFnZSBzb3VyY2UuXHJcbiAqIGh0dHBzOi8vcGhvdG9zd2lwZS5jb20vZmlsdGVycy8jcGxhY2Vob2xkZXJzcmNcclxuICpcclxuICogQHByb3Ageyhpc0NvbnRlbnRMb2FkaW5nOiBib29sZWFuLCBjb250ZW50OiBDb250ZW50KSA9PiBib29sZWFufSBpc0NvbnRlbnRMb2FkaW5nXHJcbiAqIE1vZGlmeSBpZiB0aGUgY29udGVudCBpcyBjdXJyZW50bHkgbG9hZGluZy5cclxuICogaHR0cHM6Ly9waG90b3N3aXBlLmNvbS9maWx0ZXJzLyNpc2NvbnRlbnRsb2FkaW5nXHJcbiAqXHJcbiAqIEBwcm9wIHsoaXNDb250ZW50Wm9vbWFibGU6IGJvb2xlYW4sIGNvbnRlbnQ6IENvbnRlbnQpID0+IGJvb2xlYW59IGlzQ29udGVudFpvb21hYmxlXHJcbiAqIE1vZGlmeSBpZiB0aGUgY29udGVudCBjYW4gYmUgem9vbWVkLlxyXG4gKiBodHRwczovL3Bob3Rvc3dpcGUuY29tL2ZpbHRlcnMvI2lzY29udGVudHpvb21hYmxlXHJcbiAqXHJcbiAqIEBwcm9wIHsodXNlQ29udGVudFBsYWNlaG9sZGVyOiBib29sZWFuLCBjb250ZW50OiBDb250ZW50KSA9PiBib29sZWFufSB1c2VDb250ZW50UGxhY2Vob2xkZXJcclxuICogTW9kaWZ5IGlmIHRoZSBwbGFjZWhvbGRlciBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIGNvbnRlbnQuXHJcbiAqIGh0dHBzOi8vcGhvdG9zd2lwZS5jb20vZmlsdGVycy8jdXNlY29udGVudHBsYWNlaG9sZGVyXHJcbiAqXHJcbiAqIEBwcm9wIHsoaXNLZWVwaW5nUGxhY2Vob2xkZXI6IGJvb2xlYW4sIGNvbnRlbnQ6IENvbnRlbnQpID0+IGJvb2xlYW59IGlzS2VlcGluZ1BsYWNlaG9sZGVyXHJcbiAqIE1vZGlmeSBpZiB0aGUgcGxhY2Vob2xkZXIgc2hvdWxkIGJlIGtlcHQgYWZ0ZXIgdGhlIGNvbnRlbnQgaXMgbG9hZGVkLlxyXG4gKiBodHRwczovL3Bob3Rvc3dpcGUuY29tL2ZpbHRlcnMvI2lza2VlcGluZ3BsYWNlaG9sZG
41VyXHJcbiAqXHJcbiAqXHJcbiAqIEBwcm9wIHsoY29udGVudEVycm9yRWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbnRlbnQ6IENvbnRlbnQpID0+IEhUTUxFbGVtZW50fSBjb250ZW50RXJyb3JFbGVtZW50XHJcbiAqIE1vZGlmeSBhbiBlbGVtZW50IHdoZW4gdGhlIGNvbnRlbnQgaGFzIGVycm9yIHN0YXRlIChmb3IgZXhhbXBsZSwgaWYgaW1hZ2UgY2Fubm90IGJlIGxvYWRlZCkuXHJcbiAqIGh0dHBzOi8vcGhvdG9zd2lwZS5jb20vZmlsdGVycy8jY29udGVudGVycm9yZWxlbWVudFxyXG4gKlxyXG4gKiBAcHJvcCB7KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBkYXRhOiBVSUVsZW1lbnREYXRhKSA9PiBIVE1MRWxlbWVudH0gdWlFbGVtZW50XHJcbiAqIE1vZGlmeSBhIFVJIGVsZW1lbnQgdGhhdCdzIGJlaW5nIGNyZWF0ZWQuXHJcbiAqIGh0dHBzOi8vcGhvdG9zd2lwZS5jb20vZmlsdGVycy8jdWllbGVtZW50XHJcbiAqXHJcbiAqIEBwcm9wIHsodGh1bWJuYWlsOiBIVE1MRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQsIGl0ZW1EYXRhOiBTbGlkZURhdGEsIGluZGV4OiBudW1iZXIpID0+IEhUTUxFbGVtZW50fSB0aHVtYkVsXHJcbiAqIE1vZGlmeSB0aGUgdGh1bWJuYWlsIGVsZW1lbnQgZnJvbSB3aGljaCBvcGVuaW5nIHpvb20gYW5pbWF0aW9uIHN0YXJ0cyBvciBlbmRzLlxyXG4gKiBodHRwczovL3Bob3Rvc3dpcGUuY29tL2ZpbHRlcnMvI3RodW1iZWxcclxuICpcclxuICogQHByb3Ageyh0aHVtYkJvdW5kczogQm91bmRzIHwgdW5kZWZpbmVkLCBpdGVtRGF0YTogU2xpZGVEYXRhLCBpbmRleDogbnVtYmVyKSA9PiBCb3VuZHN9IHRodW1iQm91bmRzXHJcbiAqIE1vZGlmeSB0aGUgdGh1bWJuYWlsIGJvdW5kcyBmcm9tIHdoaWNoIG9wZW5pbmcgem9vbSBhbmltYXRpb24gc3RhcnRzIG9yIGVuZHMuXHJcbiAqIGh0dHBzOi8vcGhvdG9zd2lwZS5jb20vZmlsdGVycy8jdGh1bWJib3VuZHNcclxuICpcclxuICogQHByb3AgeyhzcmNzZXRTaXplc1dpZHRoOiBudW1iZXIsIGNvbnRlbnQ6IENvbnRlbnQpID0+IG51bWJlcn0gc3Jjc2V0U2l6ZXNXaWR0aFxyXG4gKlxyXG4gKiBAcHJvcCB7KHByZXZlbnRQb2ludGVyRXZlbnQ6IGJvb2xlYW4sIGV2ZW50OiBQb2ludGVyRXZlbnQsIHBvaW50ZXJUeXBlOiBzdHJpbmcpID0+IGJvb2xlYW59IHByZXZlbnRQb2ludGVyRXZlbnRcclxuICpcclxuICovXG5cbi8qKlxyXG4gKiBAdGVtcGxhdGUge2tleW9mIFBob3RvU3dpcGVGaWx0ZXJzTWFwfSBUXHJcbiAqIEB0eXBlZGVmIHt7IGZuOiBQaG90b1N3aXBlRmlsdGVyc01hcFtUXSwgcHJpb3JpdHk6IG51bWJlciB9fSBGaWx0ZXJcclxuICovXG5cbi8qKlxyXG4gKiBAdGVtcGxhdGUge2tleW9mIFBob3RvU3dpcGVFdmVudHNNYXB9IFRcclxuICogQHR5cGVkZWYge1Bob3RvU3dpcGVFdmVudHNNYXBbVF0gZXh0ZW5kcyB1bmRlZmluZWQgPyBQaG90b1N3aXBlRXZlbnQ8VD4gOiBQaG90b1N3aXBlRXZlbnQ8VD4gJiBQaG90b1N3aXBlRXZlbnRzTWFwW1RdfSBBdWdtZW50ZWRFdmVudFxyXG4gKi9cblxuLyoqXHJcbiAqIEB0ZW1wbGF0ZSB7a2V5b2YgUGhvdG9Td2lwZUV2ZW50c01hcH0gVFxyXG4gKiBAdHlwZWRlZiB7KGV2ZW50OiBBdWdtZW50ZWRFdmVudDxUPikgPT4gdm9pZH0gRXZlbnRDYWxsYmFja1xyXG4gKi9cblxuLyoqXHJcbiAqIEJhc2UgUGhvdG9Td2lwZSBldmVudCBvYmplY3RcclxuICpcclxuICogQHRlbXBsYXRlIHtrZXlvZiBQaG90b1N3aXBlRXZlbnRzTWFwfSBUXHJcbiAqL1xuY2xhc3MgUGhvdG9Td2lwZUV2ZW50IHtcbiAgLyoqXHJcbiAgICogQHBhcmFtIHtUfSB0eXBlXHJcbiAgICogQHBhcmFtIHtQaG90b1N3aXBlRXZlbnRzTWFwW1RdfSBbZGV0YWlsc11cclxuICAgKi9cbiAgY29uc3RydWN0b3IodHlwZSwgZGV0YWlscykge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gZmFsc2U7XG5cbiAgICBpZiAoZGV0YWlscykge1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBkZXRhaWxzKTtcbiAgICB9XG4gIH1cblxuICBwcmV2ZW50RGVmYXVsdCgpIHtcbiAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlO1xuICB9XG5cbn1cbi8qKlxyXG4gKiBQaG90b1N3aXBlIGJhc2UgY2xhc3MgdGhhdCBjYW4gbGlzdGVuIGFuZCBkaXNwYXRjaCBmb3IgZXZlbnRzLlxyXG4gKiBTaGFyZWQgYnkgUGhvdG9Td2lwZSBDb3JlIGFuZCBQaG90b1N3aXBlIExpZ2h0Ym94LCBleHRlbmRlZCBieSBiYXNlLmpzXHJcbiAqL1xuXG5cbmNsYXNzIEV2ZW50YWJsZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8qKlxyXG4gICAgICogQHR5cGUge3sgW1QgaW4ga2V5b2YgUGhvdG9Td2lwZUV2ZW50c01hcF0/OiAoKGV2ZW50OiBBdWdtZW50ZWRFdmVudDxUPikgPT4gdm9pZClbXSB9fVxyXG4gICAgICovXG4gICAgdGhpcy5fbGlzdGVuZXJzID0ge307XG4gICAgLyoqXHJcbiAgICAgKiBAdHlwZSB7eyBbVCBpbiBrZXlvZiBQaG90b1N3aXBlRmlsdGVyc01hcF0/OiBGaWx0ZXI8VD5bXSB9fVxyXG4gICAgICovXG5cbiAgICB0aGlzLl9maWx0ZXJzID0ge307XG4gICAgLyoqIEB0eXBlIHtQaG90b1N3aXBlIHwgdW5kZWZpbmVkfSAqL1xuXG4gICAgdGhpcy5wc3dwID0gdW5kZWZpbmVkO1xuICAgIC8qKiBAdHlwZSB7UGhvdG9Td2lwZU9wdGlvbnMgfCB1bmRlZmluZWR9ICovXG5cbiAgICB0aGlzLm9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gIH1cbiAgLyoqXHJcbiAgICogQHRlbXBsYXRlIHtrZXlvZiBQaG90b1N3aXBlRmlsdGVyc01hcH0gVFxyXG4gICAqIEBwYXJhbSB7VH0gbmFtZVxyXG4gICAqIEBwYXJhbSB7UGhvdG9Td2lwZUZpbHRlcnNNYXBbVF19IGZuXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHByaW9yaXR5XHJcbiAgICovXG5cblxuICBhZGRGaWx0ZXIobmFtZSwgZm4sIHByaW9yaXR5ID0gMTAwKSB7XG4gICAgdmFyIF90aGlzJF9maWx0ZXJzJG5hbWUsIF90aGlzJF9maWx0ZXJzJG5hbWUyLCBfdGhpcyRwc3dwO1xuXG4gICAgaWYgKCF0aGlzLl9maWx0ZXJzW25hbWVdKSB7XG4gICAgICB0aGlzLl9maWx0ZXJzW25hbWVdID0gW107XG4gICAgfVxuXG4gICAgKF90aGlzJF9maWx0ZXJzJG5hbWUgPSB0aGlzLl9maWx0ZXJzW25hbWVdKSA9PT0gbnVsbCB8fCBfdGhpcyRfZmlsdGVycyRuYW1lID09PSB2b2lkIDAgfHwgX3RoaXMkX2ZpbHRlcnMkbmFtZS5wdXNoKHtcbiAgICAgIGZuLFxuICAgICAgcHJpb3JpdHlcbiAgICB9KTtcbiAgICAoX3RoaXMkX2ZpbHRlcnMkbmFtZTIgPSB0aGlzLl9maWx0ZXJzW25hbWVdKSA9PT0gbnVsbCB8fCBfdGhpcyRfZmlsdGVycyRuYW1lMiA9PT0gdm9pZCAwIHx8IF90aGlzJF9maWx0ZXJzJG5hbWUyLnNvcnQoKGYxLCBmMikgPT4gZjEucHJpb3JpdHkgLSBmMi5wcmlvcml0eSk7XG4gICAgKF90aGlzJHBzd3AgPSB0aGlzLnBzd3ApID09PSBudWxsIHx8IF90aGlzJHBzd3AgPT09IHZvaWQgMCB8fCBfdGhpcyRwc3dwLmFkZEZpbHRlcihuYW1lLCBmbiwgcHJpb3JpdHkpO1xuICB9XG4gIC8qKlxyXG4gICAqIEB0ZW1wbGF0ZSB7a2V5b2YgUGhvdG9Td2lwZUZpbHRlcnNNYXB9IFRcclxuICAgKiBAcGFyYW0ge1R9IG5hbWVcclxuICAgKiBAcGFyYW0ge1Bob3RvU3dpcGVGaWx0ZXJzTWFwW1RdfSBmblxyXG4gICAqL1xuXG5cbiAgcmVtb3ZlRmlsdGVyKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRoaXMuX2ZpbHRlcnNbbmFtZV0pIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIHRoaXMuX2ZpbHRlcnNbbmFtZV0gPSB0aGlzLl9maWx0ZXJzW25hbWVdLmZpbHRlcihmaWx0ZXIgPT4gZmlsdGVyLmZuICE9PSBmbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHN3cCkge1xuICAgICAgdGhpcy5wc3dwLnJlbW92ZUZpbHRlcihuYW1lLCBmbik7XG4gICAgfVxuICB9XG4gIC8qKlxyXG4gICAqIEB0ZW1wbGF0ZSB7a2V5b2YgUGhvdG9Td2lwZUZpbHRlcnNNYXB9IFRcclxuICAgKiBAcGFyYW0ge1R9IG5hbWVcclxuICAgKiBAcGFyYW0ge1BhcmFtZXRlcnM8UGhvdG9Td2lwZUZpbHRlcnNNYXBbVF0+fSBhcmdzXHJcbiAgICogQHJldHVybnMge1BhcmFtZXRlcnM8UGhvdG9Td2lwZUZpbHRlcnNNYXBbVF0+WzBdfVxyXG4gICAqL1xuXG5cbiAgYXBwbHlGaWx0ZXJzKG5hbWUsIC4uLmFyZ3MpIHtcbiAgICB2YXIgX3RoaXMkX2ZpbHRlcnMkbmFtZTM7XG5cbiAgICAoX3RoaXMkX2ZpbHRlcnMkbmFtZTMgPSB0aGlzLl9maWx0ZXJzW25hbWVdKSA9PT0gbnVsbCB8fCBfdGhpcyRfZmlsdGVycyRuYW1lMyA9PT0gdm9pZCAwIHx8IF90aGlzJF9maWx0ZXJzJG5hbWUzLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIGFyZ3NbMF0gPSBmaWx0ZXIuZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFyZ3NbMF07XG4gIH1cbiAgLyoqXHJcbiAgICogQHRlbXBsYXRlIHtrZXlvZiBQaG90b1N3aXBlRXZlbnRzTWFwfSBUXHJcbiAgICogQHBhcmFtIHtUfSBuYW1lXHJcbiAgICogQHBhcmFtIHtFdmVudENhbGxiYWNrPFQ+fSBmblxyXG4gICAqL1xuXG5cbiAgb24obmFtZSwgZm4pIHtcbiAgICB2YXIgX3RoaXMkX2xpc3RlbmVycyRuYW1lLCBfdGhpcyRwc3dwMjtcblxuICAgIGlmICghdGhpcy5fbGlzdGVuZXJzW25hbWVdKSB7XG4gICAgICB0aGlzLl9saXN0ZW5lcnNbbmFtZV0gPSBbXTtcbiAgICB9XG5cbiAgICAoX3RoaXMkX2xpc3RlbmVycyRuYW1lID0gdGhpcy5fbGlzdGVuZXJzW25hbWVdKSA9PT0gbnVsbCB8fCBfdGhpcyRfbGlzdGVuZXJzJG5hbWUgPT09IHZvaWQgMCB8fCBfdGhpcyRfbGlzdGVuZXJzJG5hbWUucHVzaChmb
41ik7IC8vIFdoZW4gYmluZGluZyBldmVudHMgdG8gbGlnaHRib3gsXG4gICAgLy8gYWxzbyBiaW5kIGV2ZW50cyB0byBQaG90b1N3aXBlIENvcmUsXG4gICAgLy8gaWYgaXQncyBvcGVuLlxuXG4gICAgKF90aGlzJHBzd3AyID0gdGhpcy5wc3dwKSA9PT0gbnVsbCB8fCBfdGhpcyRwc3dwMiA9PT0gdm9pZCAwIHx8IF90aGlzJHBzd3AyLm9uKG5hbWUsIGZuKTtcbiAgfVxuICAvKipcclxuICAgKiBAdGVtcGxhdGUge2tleW9mIFBob3RvU3dpcGVFdmVudHNNYXB9IFRcclxuICAgKiBAcGFyYW0ge1R9IG5hbWVcclxuICAgKiBAcGFyYW0ge0V2ZW50Q2FsbGJhY2s8VD59IGZuXHJcbiAgICovXG5cblxuICBvZmYobmFtZSwgZm4pIHtcbiAgICB2YXIgX3RoaXMkcHN3cDM7XG5cbiAgICBpZiAodGhpcy5fbGlzdGVuZXJzW25hbWVdKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICB0aGlzLl9saXN0ZW5lcnNbbmFtZV0gPSB0aGlzLl9saXN0ZW5lcnNbbmFtZV0uZmlsdGVyKGxpc3RlbmVyID0+IGZuICE9PSBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgKF90aGlzJHBzd3AzID0gdGhpcy5wc3dwKSA9PT0gbnVsbCB8fCBfdGhpcyRwc3dwMyA9PT0gdm9pZCAwIHx8IF90aGlzJHBzd3AzLm9mZihuYW1lLCBmbik7XG4gIH1cbiAgLyoqXHJcbiAgICogQHRlbXBsYXRlIHtrZXlvZiBQaG90b1N3aXBlRXZlbnRzTWFwfSBUXHJcbiAgICogQHBhcmFtIHtUfSBuYW1lXHJcbiAgICogQHBhcmFtIHtQaG90b1N3aXBlRXZlbnRzTWFwW1RdfSBbZGV0YWlsc11cclxuICAgKiBAcmV0dXJucyB7QXVnbWVudGVkRXZlbnQ8VD59XHJcbiAgICovXG5cblxuICBkaXNwYXRjaChuYW1lLCBkZXRhaWxzKSB7XG4gICAgdmFyIF90aGlzJF9saXN0ZW5lcnMkbmFtZTI7XG5cbiAgICBpZiAodGhpcy5wc3dwKSB7XG4gICAgICByZXR1cm4gdGhpcy5wc3dwLmRpc3BhdGNoKG5hbWUsIGRldGFpbHMpO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50ID1cbiAgICAvKiogQHR5cGUge0F1Z21lbnRlZEV2ZW50PFQ+fSAqL1xuICAgIG5ldyBQaG90b1N3aXBlRXZlbnQobmFtZSwgZGV0YWlscyk7XG4gICAgKF90aGlzJF9saXN0ZW5lcnMkbmFtZTIgPSB0aGlzLl9saXN0ZW5lcnNbbmFtZV0pID09PSBudWxsIHx8IF90aGlzJF9saXN0ZW5lcnMkbmFtZTIgPT09IHZvaWQgMCB8fCBfdGhpcyRfbGlzdGVuZXJzJG5hbWUyLmZvckVhY2gobGlzdGVuZXIgPT4ge1xuICAgICAgbGlzdGVuZXIuY2FsbCh0aGlzLCBldmVudCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGV2ZW50O1xuICB9XG5cbn1cblxuY2xhc3MgUGxhY2Vob2xkZXIge1xuICAvKipcclxuICAgKiBAcGFyYW0ge3N0cmluZyB8IGZhbHNlfSBpbWFnZVNyY1xyXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGNvbnRhaW5lclxyXG4gICAqL1xuICBjb25zdHJ1Y3RvcihpbWFnZVNyYywgY29udGFpbmVyKSB7XG4gICAgLy8gQ3JlYXRlIHBsYWNlaG9sZGVyXG4gICAgLy8gKHN0cmV0Y2hlZCB0aHVtYm5haWwgb3Igc2ltcGxlIGRpdiBiZWhpbmQgdGhlIG1haW4gaW1hZ2UpXG5cbiAgICAvKiogQHR5cGUge0hUTUxJbWFnZUVsZW1lbnQgfCBIVE1MRGl2RWxlbWVudCB8IG51bGx9ICovXG4gICAgdGhpcy5lbGVtZW50ID0gY3JlYXRlRWxlbWVudCgncHN3cF9faW1nIHBzd3BfX2ltZy0tcGxhY2Vob2xkZXInLCBpbWFnZVNyYyA/ICdpbWcnIDogJ2RpdicsIGNvbnRhaW5lcik7XG5cbiAgICBpZiAoaW1hZ2VTcmMpIHtcbiAgICAgIGNvbnN0IGltZ0VsID1cbiAgICAgIC8qKiBAdHlwZSB7SFRNTEltYWdlRWxlbWVudH0gKi9cbiAgICAgIHRoaXMuZWxlbWVudDtcbiAgICAgIGltZ0VsLmRlY29kaW5nID0gJ2FzeW5jJztcbiAgICAgIGltZ0VsLmFsdCA9ICcnO1xuICAgICAgaW1nRWwuc3JjID0gaW1hZ2VTcmM7XG4gICAgICBpbWdFbC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAncHJlc2VudGF0aW9uJyk7XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICB9XG4gIC8qKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aFxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHRcclxuICAgKi9cblxuXG4gIHNldERpc3BsYXllZFNpemUod2lkdGgsIGhlaWdodCkge1xuICAgIGlmICghdGhpcy5lbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWxlbWVudC50YWdOYW1lID09PSAnSU1HJykge1xuICAgICAgLy8gVXNlIHRyYW5zZm9ybSBzY2FsZSgpIHRvIG1vZGlmeSBpbWcgcGxhY2Vob2xkZXIgc2l6ZVxuICAgICAgLy8gKGluc3RlYWQgb2YgY2hhbmdpbmcgd2lkdGgvaGVpZ2h0IGRpcmVjdGx5KS5cbiAgICAgIC8vIFRoaXMgaGVscHMgd2l0aCBwZXJmb3JtYW5jZSwgc3BlY2lmaWNhbGx5IGluIGlPUzE1IFNhZmFyaS5cbiAgICAgIHNldFdpZHRoSGVpZ2h0KHRoaXMuZWxlbWVudCwgMjUwLCAnYXV0bycpO1xuICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybU9yaWdpbiA9ICcwIDAnO1xuICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IHRvVHJhbnNmb3JtU3RyaW5nKDAsIDAsIHdpZHRoIC8gMjUwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0V2lkdGhIZWlnaHQodGhpcy5lbGVtZW50LCB3aWR0aCwgaGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBkZXN0cm95KCkge1xuICAgIHZhciBfdGhpcyRlbGVtZW50O1xuXG4gICAgaWYgKChfdGhpcyRlbGVtZW50ID0gdGhpcy5lbGVtZW50KSAhPT0gbnVsbCAmJiBfdGhpcyRlbGVtZW50ICE9PSB2b2lkIDAgJiYgX3RoaXMkZWxlbWVudC5wYXJlbnROb2RlKSB7XG4gICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50ID0gbnVsbDtcbiAgfVxuXG59XG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuL3NsaWRlLmpzJykuZGVmYXVsdH0gU2xpZGUgKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4vc2xpZGUuanMnKS5TbGlkZURhdGF9IFNsaWRlRGF0YSAqL1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vY29yZS9iYXNlLmpzJykuZGVmYXVsdH0gUGhvdG9Td2lwZUJhc2UgKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3V0aWwvdXRpbC5qcycpLkxvYWRTdGF0ZX0gTG9hZFN0YXRlICovXG5cbmNsYXNzIENvbnRlbnQge1xuICAvKipcclxuICAgKiBAcGFyYW0ge1NsaWRlRGF0YX0gaXRlbURhdGEgU2xpZGUgZGF0YVxyXG4gICAqIEBwYXJhbSB7UGhvdG9Td2lwZUJhc2V9IGluc3RhbmNlIFBob3RvU3dpcGUgb3IgUGhvdG9Td2lwZUxpZ2h0Ym94IGluc3RhbmNlXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICovXG4gIGNvbnN0cnVjdG9yKGl0ZW1EYXRhLCBpbnN0YW5jZSwgaW5kZXgpIHtcbiAgICB0aGlzLmluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgdGhpcy5kYXRhID0gaXRlbURhdGE7XG4gICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgIC8qKiBAdHlwZSB7SFRNTEltYWdlRWxlbWVudCB8IEhUTUxEaXZFbGVtZW50IHwgdW5kZWZpbmVkfSAqL1xuXG4gICAgdGhpcy5lbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgIC8qKiBAdHlwZSB7UGxhY2Vob2xkZXIgfCB1bmRlZmluZWR9ICovXG5cbiAgICB0aGlzLnBsYWNlaG9sZG
41VyID0gdW5kZWZpbmVkO1xuICAgIC8qKiBAdHlwZSB7U2xpZGUgfCB1bmRlZmluZWR9ICovXG5cbiAgICB0aGlzLnNsaWRlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGlzcGxheWVkSW1hZ2VXaWR0aCA9IDA7XG4gICAgdGhpcy5kaXNwbGF5ZWRJbWFnZUhlaWdodCA9IDA7XG4gICAgdGhpcy53aWR0aCA9IE51bWJlcih0aGlzLmRhdGEudykgfHwgTnVtYmVyKHRoaXMuZGF0YS53aWR0aCkgfHwgMDtcbiAgICB0aGlzLmhlaWdodCA9IE51bWJlcih0aGlzLmRhdGEuaCkgfHwgTnVtYmVyKHRoaXMuZGF0YS5oZWlnaHQpIHx8IDA7XG4gICAgdGhpcy5pc0F0dGFjaGVkID0gZmFsc2U7XG4gICAgdGhpcy5oYXNTbGlkZSA9IGZhbHNlO1xuICAgIHRoaXMuaXNEZWNvZGluZyA9IGZhbHNlO1xuICAgIC8qKiBAdHlwZSB7TG9hZFN0YXRlfSAqL1xuXG4gICAgdGhpcy5zdGF0ZSA9IExPQURfU1RBVEUuSURMRTtcblxuICAgIGlmICh0aGlzLmRhdGEudHlwZSkge1xuICAgICAgdGhpcy50eXBlID0gdGhpcy5kYXRhLnR5cGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGEuc3JjKSB7XG4gICAgICB0aGlzLnR5cGUgPSAnaW1hZ2UnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnR5cGUgPSAnaHRtbCc7XG4gICAgfVxuXG4gICAgdGhpcy5pbnN0YW5jZS5kaXNwYXRjaCgnY29udGVudEluaXQnLCB7XG4gICAgICBjb250ZW50OiB0aGlzXG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVQbGFjZWhvbGRlcigpIHtcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciAmJiAhdGhpcy5rZWVwUGxhY2Vob2xkZXIoKSkge1xuICAgICAgLy8gV2l0aCBkZWxheSwgYXMgaW1hZ2UgbWlnaHQgYmUgbG9hZGVkLCBidXQgbm90IHJlbmRlcmVkXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9LCAxMDAwKTtcbiAgICB9XG4gIH1cbiAgLyoqXHJcbiAgICogUHJlbG9hZCBjb250ZW50XHJcbiAgICpcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzTGF6eVxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JlbG9hZF1cclxuICAgKi9cblxuXG4gIGxvYWQoaXNMYXp5LCByZWxvYWQpIHtcbiAgICBpZiAodGhpcy5zbGlkZSAmJiB0aGlzLnVzZVBsYWNlaG9sZGVyKCkpIHtcbiAgICAgIGlmICghdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICBjb25zdCBwbGFjZWhvbGRlclNyYyA9IHRoaXMuaW5zdGFuY2UuYXBwbHlGaWx0ZXJzKCdwbGFjZWhvbGRlclNyYycsIC8vIHVzZSAgaW1hZ2UtYmFzZWQgcGxhY2Vob2xkZXIgb25seSBmb3IgdGhlIGZpcnN0IHNsaWRlLFxuICAgICAgICAvLyBhcyByZW5kZXJpbmcgKGV2ZW4gc21hbGwgc3RyZXRjaGVkIHRodW1ibmFpbCkgaXMgYW4gZXhwZW5zaXZlIG9wZXJhdGlvblxuICAgICAgICB0aGlzLmRhdGEubXNyYyAmJiB0aGlzLnNsaWRlLmlzRmlyc3RTbGlkZSA/IHRoaXMuZGF0YS5tc3JjIDogZmFsc2UsIHRoaXMpO1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gbmV3IFBsYWNlaG9sZGVyKHBsYWNlaG9sZGVyU3JjLCB0aGlzLnNsaWRlLmNvbnRhaW5lcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwbGFjZWhvbGRlckVsID0gdGhpcy5wbGFjZWhvbGRlci5lbGVtZW50OyAvLyBBZGQgcGxhY2Vob2xkZXIgdG8gRE9NIGlmIGl0IHdhcyBhbHJlYWR5IGNyZWF0ZWRcblxuICAgICAgICBpZiAocGxhY2Vob2xkZXJFbCAmJiAhcGxhY2Vob2xkZXJFbC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgdGhpcy5zbGlkZS5jb250YWluZXIucHJlcGVuZChwbGFjZWhvbGRlckVsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmVsZW1lbnQgJiYgIXJlbG9hZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmluc3RhbmNlLmRpc3BhdGNoKCdjb250ZW50TG9hZCcsIHtcbiAgICAgIGNvbnRlbnQ6IHRoaXMsXG4gICAgICBpc0xhenlcbiAgICB9KS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNJbWFnZUNvbnRlbnQoKSkge1xuICAgICAgdGhpcy5lbGVtZW50ID0gY3JlYXRlRWxlbWVudCgncHN3cF9faW1nJywgJ2ltZycpOyAvLyBTdGFydCBsb2FkaW5nIG9ubHkgYWZ0ZXIgd2lkdGggaXMgZGVmaW5lZCwgYXMgc2l6ZXMgbWlnaHQgZGVwZW5kIG9uIGl0LlxuICAgICAgLy8gRHVlIHRvIFNhZmFyaSBmZWF0dXJlLCB3ZSBtdXN0IGRlZmluZSBzaXplcyBiZWZvcmUgc3Jjc2V0LlxuXG4gICAgICBpZiAodGhpcy5kaXNwbGF5ZWRJbWFnZVdpZHRoKSB7XG4gICAgICAgIHRoaXMubG9hZEltYWdlKGlzTGF6eSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoJ3Bzd3BfX2NvbnRlbnQnLCAnZGl2Jyk7XG4gICAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5kYXRhLmh0bWwgfHwgJyc7XG4gICAgfVxuXG4gICAgaWYgKHJlbG9hZCAmJiB0aGlzLnNsaWRlKSB7XG4gICAgICB0aGlzLnNsaWRlLnVwZGF0ZUNvbnRlbnRTaXplKHRydWUpO1xuICAgIH1cbiAgfVxuICAvKipcclxuICAgKiBQcmVsb2FkIGltYWdlXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzTGF6eVxyXG4gICAqL1xuXG5cbiAgbG9hZEltYWdlKGlzTGF6eSkge1xuICAgIHZhciBfdGhpcyRkYXRhJHNyYywgX3RoaXMkZGF0YSRhbHQ7XG5cbiAgICBpZiAoIXRoaXMuaXNJbWFnZUNvbnRlbnQoKSB8fCAhdGhpcy5lbGVtZW50IHx8IHRoaXMuaW5zdGFuY2UuZGlzcGF0Y2goJ2NvbnRlbn
41RMb2FkSW1hZ2UnLCB7XG4gICAgICBjb250ZW50OiB0aGlzLFxuICAgICAgaXNMYXp5XG4gICAgfSkuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlRWxlbWVudCA9XG4gICAgLyoqIEB0eXBlIEhUTUxJbWFnZUVsZW1lbnQgKi9cbiAgICB0aGlzLmVsZW1lbnQ7XG4gICAgdGhpcy51cGRhdGVTcmNzZXRTaXplcygpO1xuXG4gICAgaWYgKHRoaXMuZGF0YS5zcmNzZXQpIHtcbiAgICAgIGltYWdlRWxlbWVudC5zcmNzZXQgPSB0aGlzLmRhdGEuc3Jjc2V0O1xuICAgIH1cblxuICAgIGltYWdlRWxlbWVudC5zcmMgPSAoX3RoaXMkZGF0YSRzcmMgPSB0aGlzLmRhdGEuc3JjKSAhPT0gbnVsbCAmJiBfdGhpcyRkYXRhJHNyYyAhPT0gdm9pZCAwID8gX3RoaXMkZGF0YSRzcmMgOiAnJztcbiAgICBpbWFnZUVsZW1lbnQuYWx0ID0gKF90aGlzJGRhdGEkYWx0ID0gdGhpcy5kYXRhLmFsdCkgIT09IG51bGwgJiYgX3RoaXMkZGF0YSRhbHQgIT09IHZvaWQgMCA/IF90aGlzJGRhdGEkYWx0IDogJyc7XG4gICAgdGhpcy5zdGF0ZSA9IExPQURfU1RBVEUuTE9BRElORztcblxuICAgIGlmIChpbWFnZUVsZW1lbnQuY29tcGxldGUpIHtcbiAgICAgIHRoaXMub25Mb2FkZWQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW1hZ2VFbGVtZW50Lm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5vbkxvYWRlZCgpO1xuICAgICAgfTtcblxuICAgICAgaW1hZ2VFbGVtZW50Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMub25FcnJvcigpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgLyoqXHJcbiAgICogQXNzaWduIHNsaWRlIHRvIGNvbnRlbnRcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7U2xpZGV9IHNsaWRlXHJcbiAgICovXG5cblxuICBzZXRTbGlkZShzbGlkZSkge1xuICAgIHRoaXMuc2xpZGUgPSBzbGlkZTtcbiAgICB0aGlzLmhhc1NsaWRlID0gdHJ1ZTtcbiAgICB0aGlzLmluc3RhbmNlID0gc2xpZGUucHN3cDsgLy8gdG9kbzogZG8gd2UgbmVlZCB0byB1bnNldCBzbGlkZT9cbiAgfVxuICAvKipcclxuICAgKiBDb250ZW50IGxvYWQgc3VjY2VzcyBoYW5kbGVyXHJcbiAgICovXG5cblxuICBvbkxvYWRlZCgpIHtcbiAgICB0aGlzLnN0YXRlID0gTE9BRF9TVEFURS5MT0FERUQ7XG5cbiAgICBpZiAodGhpcy5zbGlkZSAmJiB0aGlzLmVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5zdGFuY2UuZGlzcGF0Y2goJ2xvYWRDb21wbGV0ZScsIHtcbiAgICAgICAgc2xpZGU6IHRoaXMuc2xpZGUsXG4gICAgICAgIGNvbnRlbnQ6IHRoaXNcbiAgICAgIH0pOyAvLyBpZiBjb250ZW50IGlzIHJlbG9hZGVkXG5cbiAgICAgIGlmICh0aGlzLnNsaWRlLmlzQWN0aXZlICYmIHRoaXMuc2xpZGUuaGVhdnlBcHBlbmRlZCAmJiAhdGhpcy5lbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQoKTtcbiAgICAgICAgdGhpcy5zbGlkZS51cGRhdGVDb250ZW50U2l6ZSh0cnVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc3RhdGUgPT09IExPQURfU1RBVEUuTE9BREVEIHx8IHRoaXMuc3RhdGUgPT09IExPQURfU1RBVEUuRVJST1IpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVQbGFjZWhvbGRlcigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcclxuICAgKiBDb250ZW50IGxvYWQgZXJyb3IgaGFuZGxlclxyXG4gICAqL1xuXG5cbiAgb25FcnJvcigpIHtcbiAgICB0aGlzLnN0YXRlID0gTE9BRF9TVEFURS5FUlJPUjtcblxuICAgIGlmICh0aGlzLnNsaWRlKSB7XG4gICAgICB0aGlzLmRpc3BsYXlFcnJvcigpO1xuICAgICAgdGhpcy5pbnN0YW5jZS5kaXNwYXRjaCgnbG9hZENvbXBsZXRlJywge1xuICAgICAgICBzbGlkZTogdGhpcy5zbGlkZSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgICAgY29udGVudDogdGhpc1xuICAgICAgfSk7XG4gICAgICB0aGlzLmluc3RhbmNlLmRpc3BhdGNoKCdsb2FkRXJyb3InLCB7XG4gICAgICAgIHNsaWRlOiB0aGlzLnNsaWRlLFxuICAgICAgICBjb250ZW50OiB0aGlzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgLyoqXHJcbiAgICogQHJldHVybnMge0Jvb2xlYW59IElmIHRoZSBjb250ZW50IGlzIGN1cnJlbnRseSBsb2FkaW5nXHJcbiAgICovXG5cblxuICBpc0xvYWRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UuYXBwbHlGaWx0ZXJzKCdpc0NvbnRlbnRMb2FkaW5nJywgdGhpcy5zdGF0ZSA9PT0gTE9BRF9TVEFURS5MT0FESU5HLCB0aGlzKTtcbiAgfVxuICAvKipcclxuICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gSWYgdGhlIGNvbnRlbnQgaXMgaW4gZXJyb3Igc3RhdGVcclxuICAgKi9cblxuXG4gIGlzRXJyb3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUgPT09IExPQURfU1RBVEUuRVJST1I7XG4gIH1cbiAgLyoqXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IElmIHRoZSBjb250ZW50IGlzIGltYWdlXHJcbiAgICovXG5cblxuICBpc0ltYWdlQ29udGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSAnaW1hZ2UnO1xuICB9XG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBjb250ZW50IHNpemVcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB3aWR0aFxyXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBoZWlnaHRcclxuICAgKi9cblxuXG4gIHNldERpc3BsYXllZFNpemUod2lkdGgsIGhlaWdodCkge1xuICAgIGlmICghdGhpcy5lbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIuc2V0RGlzcGxheWVkU2l6ZSh3aWR0aCwgaGVpZ2h0KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbnN0YW5jZS5kaXNwYXRjaCgnY29udGVudFJlc2l6ZScsIHtcbiAgICAgIGNvbnRlbnQ6IHRoaXMsXG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH0pLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRXaWR0aEhlaWdodCh0aGlzLmVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgaWYgKHRoaXMuaXNJbWFnZUNvbnRlbnQoKSAmJiAhdGhpcy5pc0Vycm9yKCkpIHtcbiAgICAgIGNvbnN0IGlzSW5pdGlhbFNpemVVcGRhdGUgPSAhdGhpcy5kaXNwbGF5ZWRJbWFnZVdpZHR
41oICYmIHdpZHRoO1xuICAgICAgdGhpcy5kaXNwbGF5ZWRJbWFnZVdpZHRoID0gd2lkdGg7XG4gICAgICB0aGlzLmRpc3BsYXllZEltYWdlSGVpZ2h0ID0gaGVpZ2h0O1xuXG4gICAgICBpZiAoaXNJbml0aWFsU2l6ZVVwZGF0ZSkge1xuICAgICAgICB0aGlzLmxvYWRJbWFnZShmYWxzZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwZGF0ZVNyY3NldFNpemVzKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNsaWRlKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZGlzcGF0Y2goJ2ltYWdlU2l6ZUNoYW5nZScsIHtcbiAgICAgICAgICBzbGlkZTogdGhpcy5zbGlkZSxcbiAgICAgICAgICB3aWR0aCxcbiAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgY29udGVudDogdGhpc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IElmIHRoZSBjb250ZW50IGNhbiBiZSB6b29tZWRcclxuICAgKi9cblxuXG4gIGlzWm9vbWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UuYXBwbHlGaWx0ZXJzKCdpc0NvbnRlbnRab29tYWJsZScsIHRoaXMuaXNJbWFnZUNvbnRlbnQoKSAmJiB0aGlzLnN0YXRlICE9PSBMT0FEX1NUQVRFLkVSUk9SLCB0aGlzKTtcbiAgfVxuICAvKipcclxuICAgKiBVcGRhdGUgaW1hZ2Ugc3Jjc2V0IHNpemVzIGF0dHJpYnV0ZSBiYXNlZCBvbiB3aWR0aCBhbmQgaGVpZ2h0XHJcbiAgICovXG5cblxuICB1cGRhdGVTcmNzZXRTaXplcygpIHtcbiAgICAvLyBIYW5kbGUgc3Jjc2V0IHNpemVzIGF0dHJpYnV0ZS5cbiAgICAvL1xuICAgIC8vIE5ldmVyIGxvd2VyIHF1YWxpdHksIGlmIGl0IHdhcyBpbmNyZWFzZWQgcHJldmlvdXNseS5cbiAgICAvLyBDaHJvbWUgZG9lcyB0aGlzIGF1dG9tYXRpY2FsbHksIEZpcmVmb3ggYW5kIFNhZmFyaSBkbyBub3QsXG4gICAgLy8gc28gd2Ugc3RvcmUgbGFyZ2VzdCB1c2VkIHNpemUgaW4gZGF0YXNldC5cbiAgICBpZiAoIXRoaXMuaXNJbWFnZUNvbnRlbnQoKSB8fCAhdGhpcy5lbGVtZW50IHx8ICF0aGlzLmRhdGEuc3Jjc2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2UgPVxuICAgIC8qKiBAdHlwZSBIVE1MSW1hZ2VFbGVtZW50ICovXG4gICAgdGhpcy5lbGVtZW50O1xuICAgIGNvbnN0IHNpemVzV2lkdGggPSB0aGlzLmluc3RhbmNlLmFwcGx5RmlsdGVycygnc3Jjc2V0U2l6ZXNXaWR0aCcsIHRoaXMuZGlzcGxheWVkSW1hZ2VXaWR0aCwgdGhpcyk7XG5cbiAgICBpZiAoIWltYWdlLmRhdGFzZXQubGFyZ2VzdFVzZWRTaXplIHx8IHNpemVzV2lkdGggPiBwYXJzZUludChpbWFnZS5kYXRhc2V0Lmxhcmdlc3RVc2VkU2l6ZSwgMTApKSB7XG4gICAgICBpbWFnZS5zaXplcyA9IHNpemVzV2lkdGggKyAncHgnO1xuICAgICAgaW1hZ2UuZGF0YXNldC5sYXJnZXN0VXNlZFNpemUgPSBTdHJpbmcoc2l6ZXNXaWR0aCk7XG4gICAgfVxuICB9XG4gIC8qKlxyXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBJZiBjb250ZW50IHNob3VsZCB1c2UgYSBwbGFjZWhvbGRlciAoZnJvbSBtc3JjIGJ5IGRlZmF1bHQpXHJcbiAgICovXG5cblxuICB1c2VQbGFjZWhvbGRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5pbnN0YW5jZS5hcHBseUZpbHRlcnMoJ3VzZUNvbnRlbnRQbGFjZWhvbGRlcicsIHRoaXMuaXNJbWFnZUNvbnRlbnQoKSwgdGhpcyk7XG4gIH1cbiAgLyoqXHJcbiAgICogUHJlbG9hZCBjb250ZW50IHdpdGggbGF6eS1sb2FkaW5nIHBhcmFtXHJcbiAgICovXG5cblxuICBsYXp5TG9hZCgpIHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZS5kaXNwYXRjaCgnY29udGVudExhenlMb2FkJywge1xuICAgICAgY29udGVudDogdGhpc1xuICAgIH0pLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvYWQodHJ1ZSk7XG4gIH1cbiAgLyoqXHJcbiAgICogQHJldHVybnMge2Jvb2xlYW59IElmIHBsYWNlaG9sZGVyIHNob3VsZCBiZSBrZXB0IGFmdGVyIGNvbnRlbnQgaXMgbG9hZGVkXHJcbiAgICovXG5cblxuICBrZWVwUGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UuYXBwbHlGaWx0ZXJzKCdpc0tlZXBpbmdQbGFjZWhvbGRlcicsIHRoaXMuaXNMb2FkaW5nKCksIHRoaXMpO1xuICB9XG4gIC8qKlxyXG4gICAqIERlc3Ryb3kgdGhlIGNvbnRlbnRcclxuICAgKi9cblxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5oYXNTbGlkZSA9IGZhbHNlO1xuICAgIHRoaXMuc2xpZGUgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5pbnN0YW5jZS5kaXNwYXRjaCgnY29udGVudERlc3Ryb3knLCB7XG4gICAgICBjb250ZW50OiB0aGlzXG4gICAgfSkuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucmVtb3ZlKCk7XG5cbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgdGhpcy5wbGFjZWhvbGRlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzSW1hZ2VDb250ZW50KCkgJiYgdGhpcy5lbGVtZW50KSB7XG4gICAgICB0aGlzLmVsZW1lbnQub25sb2FkID0gbnVsbDtcbiAgICAgIHRoaXMuZWxlbWVudC5vbmVycm9yID0gbnVsbDtcbiAgICAgIHRoaXMuZWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbiAgLyoqXHJcbiAgICogRGlzcGxheSBlcnJvciBtZXNzYWdlXHJcbiAgICovXG5cblxuICBkaXNwbGF5RXJyb3IoKSB7XG4gICAgaWYgKHRoaXMuc2xpZGUpIHtcbiAgICAgIHZhciBfdGhpcyRpbnN0YW5jZSRvcHRpb24sIF90aGlzJGluc3RhbmNlJG9wdGlvbjI7XG5cbiAgICAgIGxldCBlcnJvck1zZ0VsID0gY3JlYXRlRWxlbWVudCgncHN3cF9fZXJyb3ItbXNnJywgJ2RpdicpO1xuICAgICAgZXJyb3JNc2dFbC5pbm5lclRleHQgPSAoX3RoaXMkaW5zdGFuY2Ukb3B0aW9uID0gKF90aGlzJGluc3RhbmNlJG9wdGlvbjIgPSB0aGlzLmluc3RhbmNlLm9wdGlvbnMpID09PSBudWxsIHx8IF90aGlzJGluc3RhbmNlJG9wdGlvbjIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJGluc3RhbmNlJG9wdGlvbjIuZXJyb3JNc2cpICE9PSBudWxsICYmIF90aGlzJGluc3RhbmNlJG9wdGlvbiAhPT0gdm9pZCAwID8gX3RoaXMkaW5zdGFuY2Ukb3B0aW9uIDogJyc7XG4gICAgICBlcnJvck1zZ0VsID1cbiAgICAgIC8qKiBAdHlwZSB7SFRNTERpdkVsZW1lbnR9ICovXG4gICAgICB0aGlzLmluc3RhbmNlLmFwcGx5
41RmlsdGVycygnY29udGVudEVycm9yRWxlbWVudCcsIGVycm9yTXNnRWwsIHRoaXMpO1xuICAgICAgdGhpcy5lbGVtZW50ID0gY3JlYXRlRWxlbWVudCgncHN3cF9fY29udGVudCBwc3dwX19lcnJvci1tc2ctY29udGFpbmVyJywgJ2RpdicpO1xuICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGVycm9yTXNnRWwpO1xuICAgICAgdGhpcy5zbGlkZS5jb250YWluZXIuaW5uZXJUZXh0ID0gJyc7XG4gICAgICB0aGlzLnNsaWRlLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpO1xuICAgICAgdGhpcy5zbGlkZS51cGRhdGVDb250ZW50U2l6ZSh0cnVlKTtcbiAgICAgIHRoaXMucmVtb3ZlUGxhY2Vob2xkZXIoKTtcbiAgICB9XG4gIH1cbiAgLyoqXHJcbiAgICogQXBwZW5kIHRoZSBjb250ZW50XHJcbiAgICovXG5cblxuICBhcHBlbmQoKSB7XG4gICAgaWYgKHRoaXMuaXNBdHRhY2hlZCB8fCAhdGhpcy5lbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0F0dGFjaGVkID0gdHJ1ZTtcblxuICAgIGlmICh0aGlzLnN0YXRlID09PSBMT0FEX1NUQVRFLkVSUk9SKSB7XG4gICAgICB0aGlzLmRpc3BsYXlFcnJvcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmluc3RhbmNlLmRpc3BhdGNoKCdjb250ZW50QXBwZW5kJywge1xuICAgICAgY29udGVudDogdGhpc1xuICAgIH0pLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdXBwb3J0c0RlY29kZSA9ICgnZGVjb2RlJyBpbiB0aGlzLmVsZW1lbnQpO1xuXG4gICAgaWYgKHRoaXMuaXNJbWFnZUNvbnRlbnQoKSkge1xuICAgICAgLy8gVXNlIGRlY29kZSgpIG9uIG5lYXJieSBzbGlkZXNcbiAgICAgIC8vXG4gICAgICAvLyBOZWFyYnkgc2xpZGUgaW1hZ2VzIGFyZSBpbiBET00gYW5kIG5vdCBoaWRkZW4gdmlhIGRpc3BsYXk6bm9uZS5cbiAgICAgIC8vIEhvd2V2ZXIsIHRoZXkgYXJlIHBsYWNlZCBvZmZzY3JlZW4gKHRvIHRoZSBsZWZ0IGFuZCByaWdodCBzaWRlKS5cbiAgICAgIC8vXG4gICAgICAvLyBTb21lIGJyb3dzZXJzIGRvIG5vdCBjb21wb3NpdGUgdGhlIGltYWdlIHVudGlsIGl0J3MgYWN0dWFsbHkgdmlzaWJsZSxcbiAgICAgIC8vIHVzaW5nIGRlY29kZSgpIGhlbHBzLlxuICAgICAgLy9cbiAgICAgIC8vIFlvdSBtaWdodCBhc2sgXCJ3aHkgZG9udCB5b3UganVzdCBkZWNvZGUoKSBhbmQgdGhlbiBhcHBlbmQgYWxsIGltYWdlc1wiLFxuICAgICAgLy8gdGhhdCdzIGJlY2F1c2UgSSB3YW50IHRvIHNob3cgaW1hZ2UgYmVmb3JlIGl0J3MgZnVsbHkgbG9hZGVkLFxuICAgICAgLy8gYXMgYnJvd3NlciBjYW4gcmVuZGVyIHBhcnRzIG9mIGltYWdlIHdoaWxlIGl0IGlzIGxvYWRpbmcuXG4gICAgICAvLyBXZSBkbyBub3QgZG8gdGhpcyBpbiBTYWZhcmkgZHVlIHRvIHBhcnRpYWwgbG9hZGluZyBidWcuXG4gICAgICBpZiAoc3VwcG9ydHNEZWNvZGUgJiYgdGhpcy5zbGlkZSAmJiAoIXRoaXMuc2xpZGUuaXNBY3RpdmUgfHwgaXNTYWZhcmkoKSkpIHtcbiAgICAgICAgdGhpcy5pc0RlY29kaW5nID0gdHJ1ZTsgLy8gcHVycG9zZWZ1bGx5IHVzaW5nIGZpbmFsbHkgaW5zdGVhZCBvZiB0aGVuLFxuICAgICAgICAvLyBhcyBpZiBzcmNzZXQgc2l6ZXMgY2hhbmdlcyBkeW5hbWljYWxseSAtIGl0IG1heSBjYXVzZSBkZWNvZGUgZXJyb3JcblxuICAgICAgICAvKiogQHR5cGUge0hUTUxJbWFnZUVsZW1lbnR9ICovXG5cbiAgICAgICAgdGhpcy5lbGVtZW50LmRlY29kZSgpLmNhdGNoKCgpID0+IHt9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzRGVjb2RpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmFwcGVuZEltYWdlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hcHBlbmRJbWFnZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5zbGlkZSAmJiAhdGhpcy5lbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgIHRoaXMuc2xpZGUuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgfVxuICB9XG4gIC8qKlxyXG4gICAqIEFjdGl2YXRlIHRoZSBzbGlkZSxcclxuICAgKiBhY3RpdmUgc2xpZGUgaXMgZ2VuZXJhbGx5IHRoZSBjdXJyZW50IG9uZSxcclxuICAgKiBtZWFuaW5nIHRoZSB1c2VyIGNhbiBzZWUgaXQuXHJcbiAgICovXG5cblxuICBhY3RpdmF0ZSgpIHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZS5kaXNwYXRjaCgnY29udGVudEFjdGl2YXRlJywge1xuICAgICAgY29udGVudDogdGhpc1xuICAgIH0pLmRlZmF1bHRQcmV2ZW50ZWQgfHwgIXRoaXMuc2xpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0ltYWdlQ29udGVudCgpICYmIHRoaXMuaXNEZWNvZGluZyAmJiAhaXNTYWZhcmkoKSkge1xuICAgICAgLy8gYWRkIGltYWdlIHRvIHNsaWRlIHdoZW4gaXQgYmVjb21lcyBhY3RpdmUsXG4gICAgICAvLyBldmVuIGlmIGl0J3Mgbm90IGZpbmlzaGVkIGRlY29kaW5nXG4gICAgICB0aGlzLmFwcGVuZEltYWdlKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzRXJyb3IoKSkge1xuICAgICAgdGhpcy5sb2FkKGZhbHNlLCB0cnVlKTsgLy8gdHJ5IHRvIHJlbG9hZFxuICAgIH1cblxuICAgIGlmICh0aGlzLnNsaWRlLmhvbGRlckVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2xpZGUuaG9sZGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG4gICAgfVxuICB9XG4gIC8qKlxyXG4gICAqIERlYWN0aXZhdGUgdGhlIGNvbnRlbnRcclxuICAgKi9cblxuXG4gIGRlYWN0aXZhdGUoKSB7XG4gICAgdGhpcy5pbnN0YW5jZS5kaXNwYXRjaCgnY29udGVudERlYWN0aXZhdGUnLCB7XG4gICAgICBjb250ZW50OiB0aGlzXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5zbGlkZSAmJiB0aGlzLnNsaWRlLmhvbGRlckVsZW1lbnQpIHtcbiAgICAgIHRoaXMuc2xpZGUuaG9sZGVyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICB9XG4gIH1cbiAgLyoqXHJcbiAgICogUmVtb3ZlIHRoZSBjb250ZW50IGZyb20gRE9NXHJcbiAgICovXG5cblxuICByZW1vdmUoKSB7XG4gICAgdGhpcy5pc0F0dGFjaGVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pbnN0YW5jZS5kaXNwYXRjaCgnY29udGVudFJlbW92ZScsIHtcbiAgICAgIGNvbnRlbnQ6IHRoaXNcbiAgICB9KS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZWxlbWVudCAmJiB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBsYWNlaG9sZG
41VyICYmIHRoaXMucGxhY2Vob2xkZXIuZWxlbWVudCkge1xuICAgICAgdGhpcy5wbGFjZWhvbGRlci5lbGVtZW50LnJlbW92ZSgpO1xuICAgIH1cbiAgfVxuICAvKipcclxuICAgKiBBcHBlbmQgdGhlIGltYWdlIGNvbnRlbnQgdG8gc2xpZGUgY29udGFpbmVyXHJcbiAgICovXG5cblxuICBhcHBlbmRJbWFnZSgpIHtcbiAgICBpZiAoIXRoaXMuaXNBdHRhY2hlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmluc3RhbmNlLmRpc3BhdGNoKCdjb250ZW50QXBwZW5kSW1hZ2UnLCB7XG4gICAgICBjb250ZW50OiB0aGlzXG4gICAgfSkuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gZW5zdXJlIHRoYXQgZWxlbWVudCBleGlzdHMgYW5kIGlzIG5vdCBhbHJlYWR5IGFwcGVuZGVkXG5cblxuICAgIGlmICh0aGlzLnNsaWRlICYmIHRoaXMuZWxlbWVudCAmJiAhdGhpcy5lbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICAgIHRoaXMuc2xpZGUuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09IExPQURfU1RBVEUuTE9BREVEIHx8IHRoaXMuc3RhdGUgPT09IExPQURfU1RBVEUuRVJST1IpIHtcbiAgICAgIHRoaXMucmVtb3ZlUGxhY2Vob2xkZXIoKTtcbiAgICB9XG4gIH1cblxufVxuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vcGhvdG9zd2lwZS5qcycpLlBob3RvU3dpcGVPcHRpb25zfSBQaG90b1N3aXBlT3B0aW9ucyAqL1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vY29yZS9iYXNlLmpzJykuZGVmYXVsdH0gUGhvdG9Td2lwZUJhc2UgKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3Bob3Rvc3dpcGUuanMnKS5Qb2ludH0gUG9pbnQgKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3NsaWRlL3NsaWRlLmpzJykuU2xpZGVEYXRhfSBTbGlkZURhdGEgKi9cblxuLyoqXHJcbiAqIEBwYXJhbSB7UGhvdG9Td2lwZU9wdGlvbnN9IG9wdGlvbnNcclxuICogQHBhcmFtIHtQaG90b1N3aXBlQmFzZX0gcHN3cFxyXG4gKiBAcmV0dXJucyB7UG9pbnR9XHJcbiAqL1xuZnVuY3Rpb24gZ2V0Vmlld3BvcnRTaXplKG9wdGlvbnMsIHBzd3ApIHtcbiAgaWYgKG9wdGlvbnMuZ2V0Vmlld3BvcnRTaXplRm4pIHtcbiAgICBjb25zdCBuZXdWaWV3cG9ydFNpemUgPSBvcHRpb25zLmdldFZpZXdwb3J0U2l6ZUZuKG9wdGlvbnMsIHBzd3ApO1xuXG4gICAgaWYgKG5ld1ZpZXdwb3J0U2l6ZSkge1xuICAgICAgcmV0dXJuIG5ld1ZpZXdwb3J0U2l6ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHg6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCxcbiAgICAvLyBUT0RPOiBoZWlnaHQgb24gbW9iaWxlIGlzIHZlcnkgaW5jb3Npc3RlbnQgZHVlIHRvIHRvb2xiYXJcbiAgICAvLyBmaW5kIGEgd2F5IHRvIGltcHJvdmUgdGhpc1xuICAgIC8vXG4gICAgLy8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCAtIGRvZXNuJ3Qgc2VlbSB0byB3b3JrIHdlbGxcbiAgICB5OiB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgfTtcbn1cbi8qKlxyXG4gKiBQYXJzZXMgcGFkZGluZyBvcHRpb24uXHJcbiAqIFN1cHBvcnRlZCBmb3JtYXRzOlxyXG4gKlxyXG4gKiAvLyBPYmplY3RcclxuICogcGFkZGluZzoge1xyXG4gKiAgdG9wOiAwLFxyXG4gKiAgYm90dG9tOiAwLFxyXG4gKiAgbGVmdDogMCxcclxuICogIHJpZ2h0OiAwXHJcbiAqIH1cclxuICpcclxuICogLy8gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG9iamVjdFxyXG4gKiBwYWRkaW5nRm46ICh2aWV3cG9ydFNpemUsIGl0ZW1EYXRhLCBpbmRleCkgPT4ge1xyXG4gKiAgcmV0dXJuIHtcclxuICogICAgdG9wOiAwLFxyXG4gKiAgICBib3R0b206IDAsXHJcbiAqICAgIGxlZnQ6IDAsXHJcbiAqICAgIHJpZ2h0OiAwXHJcbiAqICB9O1xyXG4gKiB9XHJcbiAqXHJcbiAqIC8vIExlZ2FjeSB2YXJpYW50XHJcbiAqIHBhZGRpbmdMZWZ0OiAwLFxyXG4gKiBwYWRkaW5nUmlnaHQ6IDAsXHJcbiAqIHBhZGRpbmdUb3A6IDAsXHJcbiAqIHBhZGRpbmdCb3R0b206IDAsXHJcbiAqXHJcbiAqIEBwYXJhbSB7J2xlZnQnIHwgJ3RvcCcgfCAnYm90dG9tJyB8ICdyaWdodCd9IHByb3BcclxuICogQHBhcmFtIHtQaG90b1N3aXBlT3B0aW9uc30gb3B0aW9ucyBQaG90b1N3aXBlIG9wdGlvbnNcclxuICogQHBhcmFtIHtQb2ludH0gdmlld3BvcnRTaXplIFBob3RvU3dpcGUgdmlld3BvcnQgc2l6ZSwgZm9yIGV4YW1wbGU6IHsgeDo4MDAsIHk6NjAwIH1cclxuICogQHBhcmFtIHtTbGlkZURhdGF9IGl0ZW1EYXRhIERhdGEgYWJvdXQgdGhlIHNsaWRlXHJcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBTbGlkZSBpbmRleFxyXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxyXG4gKi9cblxuZnVuY3Rpb24gcGFyc2VQYWRkaW5nT3B0aW9uKHByb3AsIG9wdGlvbnMsIHZpZXdwb3J0U2l6ZSwgaXRlbURhdGEsIGluZGV4KSB7XG4gIGxldCBwYWRkaW5nVmFsdWUgPSAwO1xuXG4gIGlmIChvcHRpb25zLnBhZGRpbmdGbikge1xuICAgIHBhZGRpbmdWYWx1ZSA9IG9wdGlvbnMucGFkZGluZ0ZuKHZpZXdwb3J0U2l6ZSwgaXRlbURhdGEsIGluZGV4KVtwcm9wXTtcbiAgfSBlbHNlIGlmIChvcHRpb25zLnBhZGRpbmcpIHtcbiAgICBwYWRkaW5nVmFsdWUgPSBvcHRpb25zLnBhZGRpbmdbcHJvcF07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbGVnYWN5UHJvcE5hbWUgPSAncGFkZGluZycgKyBwcm9wWzBdLnRvVXBwZXJDYXNlKCkgKyBwcm9wLnNsaWNlKDEpOyAvLyBAdHMtZXhwZWN0LWVycm9yXG5cbiAgICBpZiAob3B0aW9uc1tsZWdhY3lQcm9wTmFtZV0pIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIHBhZGRpbmdWYWx1ZSA9IG9wdGlvbnNbbGVnYWN5UHJvcE5hbWVdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBOdW1iZXIocGFkZGluZ1ZhbHVlKSB8fCAwO1xufVxuLyoqXHJcbiAqIEBwYXJhbSB7UGhvdG9Td2lwZU9wdGlvbnN9IG9wdGlvbnNcclxuICogQHBhcmFtIHtQb2ludH0gdmlld3BvcnRTaXplXHJcbiAqIEBwYXJhbSB7U2xpZGVEYXRhfSBpdGVtRGF0YVxyXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICogQHJldHVybnMge1BvaW50fVxyXG4gKi9cblxuZnVuY3Rpb24gZ2V0UGFuQXJlYVNpemUob3B0aW9ucywgdmlld3BvcnRTaXplLCBpdGVtRGF0YSwgaW5kZXgpIHtcbiAgcmV0dXJuIHtcbiAgICB4OiB2aWV3cG9ydFNpemUueCAtIHBhcnNlUGFkZGluZ09wdGlvbignbGVmdCcsIG9wdGlvbnMsIHZpZXdwb3J0U2l6ZSwgaXRlbURhdGEsIGluZGV4KSAtIHBhcnNlUGFkZGluZ09wdGlvbigncmlnaHQnLCBvcHRpb25zLCB2aWV3cG9ydFNpemUsIGl0ZW
411EYXRhLCBpbmRleCksXG4gICAgeTogdmlld3BvcnRTaXplLnkgLSBwYXJzZVBhZGRpbmdPcHRpb24oJ3RvcCcsIG9wdGlvbnMsIHZpZXdwb3J0U2l6ZSwgaXRlbURhdGEsIGluZGV4KSAtIHBhcnNlUGFkZGluZ09wdGlvbignYm90dG9tJywgb3B0aW9ucywgdmlld3BvcnRTaXplLCBpdGVtRGF0YSwgaW5kZXgpXG4gIH07XG59XG5cbmNvbnN0IE1BWF9JTUFHRV9XSURUSCA9IDQwMDA7XG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vcGhvdG9zd2lwZS5qcycpLmRlZmF1bHR9IFBob3RvU3dpcGUgKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3Bob3Rvc3dpcGUuanMnKS5QaG90b1N3aXBlT3B0aW9uc30gUGhvdG9Td2lwZU9wdGlvbnMgKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3Bob3Rvc3dpcGUuanMnKS5Qb2ludH0gUG9pbnQgKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3NsaWRlL3NsaWRlLmpzJykuU2xpZGVEYXRhfSBTbGlkZURhdGEgKi9cblxuLyoqIEB0eXBlZGVmIHsnZml0JyB8ICdmaWxsJyB8IG51bWJlciB8ICgoem9vbUxldmVsT2JqZWN0OiBab29tTGV2ZWwpID0+IG51bWJlcil9IFpvb21MZXZlbE9wdGlvbiAqL1xuXG4vKipcclxuICogQ2FsY3VsYXRlcyB6b29tIGxldmVscyBmb3Igc3BlY2lmaWMgc2xpZGUuXHJcbiAqIERlcGVuZHMgb24gdmlld3BvcnQgc2l6ZSBhbmQgaW1hZ2Ugc2l6ZS5cclxuICovXG5cbmNsYXNzIFpvb21MZXZlbCB7XG4gIC8qKlxyXG4gICAqIEBwYXJhbSB7UGhvdG9Td2lwZU9wdGlvbnN9IG9wdGlvbnMgUGhvdG9Td2lwZSBvcHRpb25zXHJcbiAgICogQHBhcmFtIHtTbGlkZURhdGF9IGl0ZW1EYXRhIFNsaWRlIGRhdGFcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggU2xpZGUgaW5kZXhcclxuICAgKiBAcGFyYW0ge1Bob3RvU3dpcGV9IFtwc3dwXSBQaG90b1N3aXBlIGluc3RhbmNlLCBjYW4gYmUgdW5kZWZpbmVkIGlmIG5vdCBpbml0aWFsaXplZCB5ZXRcclxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9ucywgaXRlbURhdGEsIGluZGV4LCBwc3dwKSB7XG4gICAgdGhpcy5wc3dwID0gcHN3cDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuaXRlbURhdGEgPSBpdGVtRGF0YTtcbiAgICB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgLyoqIEB0eXBlIHsgUG9pbnQgfCBudWxsIH0gKi9cblxuICAgIHRoaXMucGFuQXJlYVNpemUgPSBudWxsO1xuICAgIC8qKiBAdHlwZSB7IFBvaW50IHwgbnVsbCB9ICovXG5cbiAgICB0aGlzLmVsZW1lbnRTaXplID0gbnVsbDtcbiAgICB0aGlzLmZpdCA9IDE7XG4gICAgdGhpcy5maWxsID0gMTtcbiAgICB0aGlzLnZGaWxsID0gMTtcbiAgICB0aGlzLmluaXRpYWwgPSAxO1xuICAgIHRoaXMuc2Vjb25kYXJ5ID0gMTtcbiAgICB0aGlzLm1heCA9IDE7XG4gICAgdGhpcy5taW4gPSAxO1xuICB9XG4gIC8qKlxyXG4gICAqIENhbGN1bGF0ZSBpbml0aWFsLCBzZWNvbmRhcnkgYW5kIG1heGltdW0gem9vbSBsZXZlbCBmb3IgdGhlIHNwZWNpZmllZCBzbGlkZS5cclxuICAgKlxyXG4gICAqIEl0IHNob3VsZCBiZSBjYWxsZWQgd2hlbiBlaXRoZXIgaW1hZ2Ugb3Igdmlld3BvcnQgc2l6ZSBjaGFuZ2VzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1heFdpZHRoXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IG1heEhlaWdodFxyXG4gICAqIEBwYXJhbSB7UG9pbnR9IHBhbkFyZWFTaXplXHJcbiAgICovXG5cblxuICB1cGRhdGUobWF4V2lkdGgsIG1heEhlaWdodCwgcGFuQXJlYVNpemUpIHtcbiAgICAvKiogQHR5cGUge1BvaW50fSAqL1xuICAgIGNvbnN0IGVsZW1lbnRTaXplID0ge1xuICAgICAgeDogbWF4V2lkdGgsXG4gICAgICB5OiBtYXhIZWlnaHRcbiAgICB9O1xuICAgIHRoaXMuZWxlbWVudFNpemUgPSBlbGVtZW50U2l6ZTtcbiAgICB0aGlzLnBhbkFyZWFTaXplID0gcGFuQXJlYVNpemU7XG4gICAgY29uc3QgaFJhdGlvID0gcGFuQXJlYVNpemUueCAvIGVsZW1lbnRTaXplLng7XG4gICAgY29uc3QgdlJhdGlvID0gcGFuQXJlYVNpemUueSAvIGVsZW1lbnRTaXplLnk7XG4gICAgdGhpcy5maXQgPSBNYXRoLm1pbigxLCBoUmF0aW8gPCB2UmF0aW8gPyBoUmF0aW8gOiB2UmF0aW8pO1xuICAgIHRoaXMuZmlsbCA9IE1hdGgubWluKDEsIGhSYXRpbyA+IHZSYXRpbyA/IGhSYXRpbyA6IHZSYXRpbyk7IC8vIHpvb20udkZpbGwgZGVmaW5lcyB6b29tIGxldmVsIG9mIHRoZSBpbWFnZVxuICAgIC8vIHdoZW4gaXQgaGFzIDEwMCUgb2Ygdmlld3BvcnQgdmVydGljYWwgc3BhY2UgKGhlaWdodClcblxuICAgIHRoaXMudkZpbGwgPSBNYXRoLm1pbigxLCB2UmF0aW8pO1xuICAgIHRoaXMuaW5pdGlhbCA9IHRoaXMuX2dldEluaXRpYWwoKTtcbiAgICB0aGlzLnNlY29uZGFyeSA9IHRoaXMuX2dldFNlY29uZGFyeSgpO1xuICAgIHRoaXMubWF4ID0gTWF0aC5tYXgodGhpcy5pbml0aWFsLCB0aGlzLnNlY29uZGFyeSwgdGhpcy5fZ2V0TWF4KCkpO1xuICAgIHRoaXMubWluID0gTWF0aC5taW4odGhpcy5maXQsIHRoaXMuaW5pdGlhbCwgdGhpcy5zZWNvbmRhcnkpO1xuXG4gICAgaWYgKHRoaXMucHN3cCkge1xuICAgICAgdGhpcy5wc3dwLmRpc3BhdGNoKCd6b29tTGV2ZWxzVXBkYXRlJywge1xuICAgICAgICB6b29tTGV2ZWxzOiB0aGlzLFxuICAgICAgICBzbGlkZURhdGE6IHRoaXMuaXRlbURhdGFcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICAvKipcclxuICAgKiBQYXJzZXMgdXNlci1kZWZpbmVkIHpvb20gb3B0aW9uLlxyXG4gICAqXHJcbiAgICogQHByaXZhdGVcclxuICAgKiBAcGFyYW0geydpbml0aWFsJyB8ICdzZWNvbmRhcnknIHwgJ21heCd9IG9wdGlvblByZWZpeCBab29tIGxldmVsIG9wdGlvbiBwcmVmaXggKGluaXRpYWwsIHNlY29uZGFyeSwgbWF4KVxyXG4gICAqIEByZXR1cm5zIHsgbnVtYmVyIHwgdW5kZWZpbmVkIH1cclxuICAgKi9cblxuXG4gIF9wYXJzZVpvb21MZXZlbE9wdGlvbihvcHRpb25QcmVmaXgpIHtcbiAgICBjb25zdCBvcHRpb25OYW1lID1cbiAgICAvKiogQHR5cGUgeydpbml0aWFsWm9vbUxldmVsJyB8ICdzZWNvbmRhcnlab29tTGV2ZWwnIHwgJ21heFpvb21MZXZlbCd9ICovXG4gICAgb3B0aW9uUHJlZml4ICsgJ1pvb21MZXZlbCc7XG4gICAgY29uc3Qgb3B0aW9uVmFsdWUgPSB0aGlzLm9wdGlvbnNbb3B0aW9uTmFtZV07XG5cbiAgICBpZiAoIW9wdGlvblZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25WYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIG9wdGlvblZhbHVlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25WYWx1ZSA9PT0gJ2ZpbGwnKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWxsO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25WYWx1ZSA9PT0gJ2ZpdCcpIHtcbiAgICAgIHJldHVybi
41B0aGlzLmZpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKG9wdGlvblZhbHVlKTtcbiAgfVxuICAvKipcclxuICAgKiBHZXQgem9vbSBsZXZlbCB0byB3aGljaCBpbWFnZSB3aWxsIGJlIHpvb21lZCBhZnRlciBkb3VibGUtdGFwIGdlc3R1cmUsXHJcbiAgICogb3Igd2hlbiB1c2VyIGNsaWNrcyBvbiB6b29tIGljb24sXHJcbiAgICogb3IgbW91c2UtY2xpY2sgb24gaW1hZ2UgaXRzZWxmLlxyXG4gICAqIElmIHlvdSByZXR1cm4gMSBpbWFnZSB3aWxsIGJlIHpvb21lZCB0byBpdHMgb3JpZ2luYWwgc2l6ZS5cclxuICAgKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHJldHVybiB7bnVtYmVyfVxyXG4gICAqL1xuXG5cbiAgX2dldFNlY29uZGFyeSgpIHtcbiAgICBsZXQgY3Vyclpvb21MZXZlbCA9IHRoaXMuX3BhcnNlWm9vbUxldmVsT3B0aW9uKCdzZWNvbmRhcnknKTtcblxuICAgIGlmIChjdXJyWm9vbUxldmVsKSB7XG4gICAgICByZXR1cm4gY3Vyclpvb21MZXZlbDtcbiAgICB9IC8vIDN4IG9mIFwiZml0XCIgc3RhdGUsIGJ1dCBub3QgbGFyZ2VyIHRoYW4gb3JpZ2luYWxcblxuXG4gICAgY3Vyclpvb21MZXZlbCA9IE1hdGgubWluKDEsIHRoaXMuZml0ICogMyk7XG5cbiAgICBpZiAodGhpcy5lbGVtZW50U2l6ZSAmJiBjdXJyWm9vbUxldmVsICogdGhpcy5lbGVtZW50U2l6ZS54ID4gTUFYX0lNQUdFX1dJRFRIKSB7XG4gICAgICBjdXJyWm9vbUxldmVsID0gTUFYX0lNQUdFX1dJRFRIIC8gdGhpcy5lbGVtZW50U2l6ZS54O1xuICAgIH1cblxuICAgIHJldHVybiBjdXJyWm9vbUxldmVsO1xuICB9XG4gIC8qKlxyXG4gICAqIEdldCBpbml0aWFsIGltYWdlIHpvb20gbGV2ZWwuXHJcbiAgICpcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEByZXR1cm4ge251bWJlcn1cclxuICAgKi9cblxuXG4gIF9nZXRJbml0aWFsKCkge1xuICAgIHJldHVybiB0aGlzLl9wYXJzZVpvb21MZXZlbE9wdGlvbignaW5pdGlhbCcpIHx8IHRoaXMuZml0O1xuICB9XG4gIC8qKlxyXG4gICAqIE1heGltdW0gem9vbSBsZXZlbCB3aGVuIHVzZXIgem9vbXNcclxuICAgKiB2aWEgem9vbS9waW5jaCBnZXN0dXJlLFxyXG4gICAqIHZpYSBjbWQvY3RybC13aGVlbCBvciB2aWEgdHJhY2twYWQuXHJcbiAgICpcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqIEByZXR1cm4ge251bWJlcn1cclxuICAgKi9cblxuXG4gIF9nZXRNYXgoKSB7XG4gICAgLy8gbWF4IHpvb20gbGV2ZWwgaXMgeDQgZnJvbSBcImZpdCBzdGF0ZVwiLFxuICAgIC8vIHVzZWQgZm9yIHpvb20gZ2VzdHVyZSBhbmQgY3RybC90cmFja3BhZCB6b29tXG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlWm9vbUxldmVsT3B0aW9uKCdtYXgnKSB8fCBNYXRoLm1heCgxLCB0aGlzLmZpdCAqIDQpO1xuICB9XG5cbn1cblxuLyoqXHJcbiAqIExhenktbG9hZCBhbiBpbWFnZVxyXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYm90aCBieSBMaWdodGJveCBhbmQgUGhvdG9Td2lwZSBjb3JlLFxyXG4gKiB0aHVzIGl0IGNhbiBiZSBjYWxsZWQgYmVmb3JlIGRpYWxvZyBpcyBvcGVuZWQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7U2xpZGVEYXRhfSBpdGVtRGF0YSBEYXRhIGFib3V0IHRoZSBzbGlkZVxyXG4gKiBAcGFyYW0ge1Bob3RvU3dpcGVCYXNlfSBpbnN0YW5jZSBQaG90b1N3aXBlIG9yIFBob3RvU3dpcGVMaWdodGJveCBpbnN0YW5jZVxyXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICogQHJldHVybnMge0NvbnRlbnR9IEltYWdlIHRoYXQgaXMgYmVpbmcgZGVjb2RlZCBvciBmYWxzZS5cclxuICovXG5cbmZ1bmN0aW9uIGxhenlMb2FkRGF0YShpdGVtRGF0YSwgaW5zdGFuY2UsIGluZGV4KSB7XG4gIGNvbnN0IGNvbnRlbnQgPSBpbnN0YW5jZS5jcmVhdGVDb250ZW50RnJvbURhdGEoaXRlbURhdGEsIGluZGV4KTtcbiAgLyoqIEB0eXBlIHtab29tTGV2ZWwgfCB1bmRlZmluZWR9ICovXG5cbiAgbGV0IHpvb21MZXZlbDtcbiAgY29uc3Qge1xuICAgIG9wdGlvbnNcbiAgfSA9IGluc3RhbmNlOyAvLyBXZSBuZWVkIHRvIGtub3cgZGltZW5zaW9ucyBvZiB0aGUgaW1hZ2UgdG8gcHJlbG9hZCBpdCxcbiAgLy8gYXMgaXQgbWlnaHQgdXNlIHNyY3NldCwgYW5kIHdlIG5lZWQgdG8gZGVmaW5lIHNpemVzXG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICB6b29tTGV2ZWwgPSBuZXcgWm9vbUxldmVsKG9wdGlvbnMsIGl0ZW1EYXRhLCAtMSk7XG4gICAgbGV0IHZpZXdwb3J0U2l6ZTtcblxuICAgIGlmIChpbnN0YW5jZS5wc3dwKSB7XG4gICAgICB2aWV3cG9ydFNpemUgPSBpbnN0YW5jZS5wc3dwLnZpZXdwb3J0U2l6ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmlld3BvcnRTaXplID0gZ2V0Vmlld3BvcnRTaXplKG9wdGlvbnMsIGluc3RhbmNlKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYW5BcmVhU2l6ZSA9IGdldFBhbkFyZWFTaXplKG9wdGlvbnMsIHZpZXdwb3J0U2l6ZSwgaXRlbURhdGEsIGluZGV4KTtcbiAgICB6b29tTGV2ZWwudXBkYXRlKGNvbnRlbnQud2lkdGgsIGNvbnRlbnQuaGVpZ2h0LCBwYW5BcmVhU2l6ZSk7XG4gIH1cblxuICBjb250ZW50LmxhenlMb2FkKCk7XG5cbiAgaWYgKHpvb21MZXZlbCkge1xuICAgIGNvbnRlbnQuc2V0RGlzcGxheWVkU2l6ZShNYXRoLmNlaWwoY29udGVudC53aWR0aCAqIHpvb21MZXZlbC5pbml0aWFsKSwgTWF0aC5jZWlsKGNvbnRlbnQuaGVpZ2h0ICogem9vbUxldmVsLmluaXRpYWwpKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZW50O1xufVxuLyoqXHJcbiAqIExhenktbG9hZHMgc3BlY2lmaWMgc2xpZGUuXHJcbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBib3RoIGJ5IExpZ2h0Ym94IGFuZCBQaG90b1N3aXBlIGNvcmUsXHJcbiAqIHRodXMgaXQgY2FuIGJlIGNhbGxlZCBiZWZvcmUgZGlhbG9nIGlzIG9wZW5lZC5cclxuICpcclxuICogQnkgZGVmYXVsdCwgaXQgbG9hZHMgaW1hZ2UgYmFzZWQgb24gdmlld3BvcnQgc2l6ZSBhbmQgaW5pdGlhbCB6b29tIGxldmVsLlxyXG4gKlxyXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggU2xpZGUgaW5kZXhcclxuICogQHBhcmFtIHtQaG90b1N3aXBlQmFzZX0gaW5zdGFuY2UgUGhvdG9Td2lwZSBvciBQaG90b1N3aXBlTGlnaHRib3ggZXZlbnRhYmxlIGluc3RhbmNlXHJcbiAqIEByZXR1cm5zIHtDb250ZW50IHwgdW5kZWZpbmVkfVxyXG4gKi9cblxuZnVuY3Rpb24gbGF6eUxvYWRTbGlkZShpbmRleCwgaW5zdGFuY2UpIHtcbiAgY29uc3QgaXRlbURhdGEgPSBpbnN0YW5jZS5nZXRJdGVtRGF0YShpbmRleCk7XG5cbiAgaWYgKGluc3RhbmNlLmRpc3BhdGNoKCdsYXp5TG9hZFNsaWRlJywge1xuICAgIGluZGV4LFxuICAgIGl0ZW1EYXRhXG4gIH0pLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZXR1cm4gbGF6eUxvYWREYXRhKGl0ZW1EYXRhLCBpbnN0YW5jZSwgaW5kZXgpO1xufVxuXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4uL3Bob3Rvc3dpcGUuanNcIikuZGVmYXVsdH0gUGhvdG9Td2lwZSAqL1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4uL3NsaWRlL3NsaWRlLmpzXCIpLlNsaWRlRGF0YX0gU2xpZGVEYXRhICovXG5cbi8qKlxyXG4gKiBQaG90b1N3aXBlIGJhc2UgY2xhc3MgdGhhdCBjYW4gcmV0cmlldmUgZGF0YSBhYm91dCBldmVyeSBzbGlkZS5cclxuICogU2hhcmVkIGJ5IFBob3RvU3dpcGUgQ29yZSBhbmQgUGhvdG9Td2lwZSBMaWdodGJveFxyXG4gKi9cblxuY2xhc3MgUGhvdG9Td2lwZUJhc2UgZXh0ZW5kcyBFdmVudGFibGUge1xuICAvKipcclxuICAgKiBHZXQgdG90YWwgbnVtYmVyIG9mIHNsaWRlc1xyXG4gICAqXHJcbiAgICogQHJldHVybnMge251bWJlcn1cclxuICAgKi9cbiAgZ2V0TnVtSXRlbXMoKSB7XG4gICAgdmFyIF90aGlzJG9wdGlvbnM7XG5cbiAgICBsZXQgbnVtSXRlbXMgPSAwO1xuICAgIGNvbnN0IGRhdGFTb3VyY2UgPSAoX3RoaXMkb3B0aW9ucyA9IHRoaXMub3B0aW9ucykgPT09IG51bGwgfHwgX3RoaXMkb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkb3B0aW9ucy5kYXRhU291cmNlO1xuXG4gICAgaWYgKGRhdGFTb3VyY2UgJiYgJ2xlbmd0aCcgaW4gZGF0YVNvdXJjZSkge1xuICAgICAgLy8gbWF5IGJlIGFuIGFycmF5IG9yIGp1c3Qgb2JqZWN0IHdpdGggbGVuZ3RoIHByb3BlcnR5XG4gICAgICBudW1JdGVtcyA9IGRhdGFTb3VyY2UubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAoZGF0YVNvdXJjZSAmJiAnZ2FsbGVyeScgaW4gZGF0YVNvdXJjZSkge1xuICAgICAgLy8gcXVlcnkgRE9NIGVsZW1lbnRzXG4gICAgICBpZiAoIWRhdGFTb3VyY2UuaXRlbXMpIHtcbiAgICAgICAgZGF0YVNvdXJjZS5pdGVtcyA9IHRoaXMuX2dldEdhbGxlcnlET01FbGVtZW50cyhkYXRhU291cmNlLmdhbGxlcnkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YVNvdXJjZS5pdGVtcykge1xuICAgICAgICBudW1JdGVtcyA9IGRhdGFTb3VyY2UuaXRlbXMubGVuZ3RoO1xuICAgICAgfVxuICAgIH0gLy8gbGVnYWN5IGV2ZW50LCBiZWZvcmUgZmlsdGVycyB3ZXJlIGludHJvZHVjZWRcblxuXG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLmRpc3BhdGNoKCdudW1JdGVtcycsIHtcbiAgICAgIGRhdGFTb3VyY2UsXG4gICAgICBudW1JdGVtc1xuICAgIH0pO1xuICAgIHJldHVybi
41B0aGlzLmFwcGx5RmlsdGVycygnbnVtSXRlbXMnLCBldmVudC5udW1JdGVtcywgZGF0YVNvdXJjZSk7XG4gIH1cbiAgLyoqXHJcbiAgICogQHBhcmFtIHtTbGlkZURhdGF9IHNsaWRlRGF0YVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEByZXR1cm5zIHtDb250ZW50fVxyXG4gICAqL1xuXG5cbiAgY3JlYXRlQ29udGVudEZyb21EYXRhKHNsaWRlRGF0YSwgaW5kZXgpIHtcbiAgICByZXR1cm4gbmV3IENvbnRlbnQoc2xpZGVEYXRhLCB0aGlzLCBpbmRleCk7XG4gIH1cbiAgLyoqXHJcbiAgICogR2V0IGl0ZW0gZGF0YSBieSBpbmRleC5cclxuICAgKlxyXG4gICAqIFwiaXRlbSBkYXRhXCIgc2hvdWxkIGNvbnRhaW4gbm9ybWFsaXplZCBpbmZvcm1hdGlvbiB0aGF0IFBob3RvU3dpcGUgbmVlZHMgdG8gZ2VuZXJhdGUgYSBzbGlkZS5cclxuICAgKiBGb3IgZXhhbXBsZSwgaXQgbWF5IGNvbnRhaW4gcHJvcGVydGllcyBsaWtlXHJcbiAgICogYHNyY2AsIGBzcmNzZXRgLCBgd2AsIGBoYCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIGEgc2xpZGUgd2l0aCBpbWFnZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEByZXR1cm5zIHtTbGlkZURhdGF9XHJcbiAgICovXG5cblxuICBnZXRJdGVtRGF0YShpbmRleCkge1xuICAgIHZhciBfdGhpcyRvcHRpb25zMjtcblxuICAgIGNvbnN0IGRhdGFTb3VyY2UgPSAoX3RoaXMkb3B0aW9uczIgPSB0aGlzLm9wdGlvbnMpID09PSBudWxsIHx8IF90aGlzJG9wdGlvbnMyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRvcHRpb25zMi5kYXRhU291cmNlO1xuICAgIC8qKiBAdHlwZSB7U2xpZGVEYXRhIHwgSFRNTEVsZW1lbnR9ICovXG5cbiAgICBsZXQgZGF0YVNvdXJjZUl0ZW0gPSB7fTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFTb3VyY2UpKSB7XG4gICAgICAvLyBEYXRhc291cmNlIGlzIGFuIGFycmF5IG9mIGVsZW1lbnRzXG4gICAgICBkYXRhU291cmNlSXRlbSA9IGRhdGFTb3VyY2VbaW5kZXhdO1xuICAgIH0gZWxzZSBpZiAoZGF0YVNvdXJjZSAmJiAnZ2FsbGVyeScgaW4gZGF0YVNvdXJjZSkge1xuICAgICAgLy8gZGF0YVNvdXJjZSBoYXMgZ2FsbGVyeSBwcm9wZXJ0eSxcbiAgICAgIC8vIHRodXMgaXQgd2FzIGNyZWF0ZWQgYnkgTGlnaHRib3gsIGJhc2VkIG9uXG4gICAgICAvLyBnYWxsZXJ5IGFuZCBjaGlsZHJlbiBvcHRpb25zXG4gICAgICAvLyBxdWVyeSBET00gZWxlbWVudHNcbiAgICAgIGlmICghZGF0YVNvdXJjZS5pdGVtcykge1xuICAgICAgICBkYXRhU291cmNlLml0ZW1zID0gdGhpcy5fZ2V0R2FsbGVyeURPTUVsZW1lbnRzKGRhdGFTb3VyY2UuZ2FsbGVyeSk7XG4gICAgICB9XG5cbiAgICAgIGRhdGFTb3VyY2VJdGVtID0gZGF0YVNvdXJjZS5pdGVtc1tpbmRleF07XG4gICAgfVxuXG4gICAgbGV0IGl0ZW1EYXRhID0gZGF0YVNvdXJjZUl0ZW07XG5cbiAgICBpZiAoaXRlbURhdGEgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICBpdGVtRGF0YSA9IHRoaXMuX2RvbUVsZW1lbnRUb0l0ZW1EYXRhKGl0ZW1EYXRhKTtcbiAgICB9IC8vIERpc3BhdGNoaW5nIHRoZSBpdGVtRGF0YSBldmVudCxcbiAgICAvLyBpdCdzIGEgbGVnYWN5IHZlcmlvbiBiZWZvcmUgZmlsdGVycyB3ZXJlIGludHJvZHVjZWRcblxuXG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLmRpc3BhdGNoKCdpdGVtRGF0YScsIHtcbiAgICAgIGl0ZW1EYXRhOiBpdGVtRGF0YSB8fCB7fSxcbiAgICAgIGluZGV4XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlGaWx0ZXJzKCdpdGVtRGF0YScsIGV2ZW50Lml0ZW1EYXRhLCBpbmRleCk7XG4gIH1cbiAgLyoqXHJcbiAgICogR2V0IGFycmF5IG9mIGdhbGxlcnkgRE9NIGVsZW1lbnRzLFxyXG4gICAqIGJhc2VkIG9uIGNoaWxkU2VsZWN0b3IgYW5kIGdhbGxlcnkgZWxlbWVudC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IGdhbGxlcnlFbGVtZW50XHJcbiAgICogQHJldHVybnMge0hUTUxFbGVtZW50W119XHJcbiAgICovXG5cblxuICBfZ2V0R2FsbGVyeURPTUVsZW1lbnRzKGdhbGxlcnlFbGVtZW50KSB7XG4gICAgdmFyIF90aGlzJG9wdGlvbnMzLCBfdGhpcyRvcHRpb25zNDtcblxuICAgIGlmICgoX3RoaXMkb3B0aW9uczMgPSB0aGlzLm9wdGlvbnMpICE9PSBudWxsICYmIF90aGlzJG9wdGlvbnMzICE9PSB2b2lkIDAgJiYgX3RoaXMkb3B0aW9uczMuY2hpbGRyZW4gfHwgKF90aGlzJG9wdGlvbnM0ID0gdGhpcy5vcHRpb25zKSAhPT0gbnVsbCAmJiBfdGhpcyRvcHRpb25zNCAhPT0gdm9pZCAwICYmIF90aGlzJG9wdGlvbnM0LmNoaWxkU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBnZXRFbGVtZW50c0Zyb21PcHRpb24odGhpcy5vcHRpb25zLmNoaWxkcmVuLCB0aGlzLm9wdGlvbnMuY2hpbGRTZWxlY3RvciwgZ2FsbGVyeUVsZW1lbnQpIHx8IFtdO1xuICAgIH1cblxuICAgIHJldHVybiBbZ2FsbGVyeUVsZW1lbnRdO1xuICB9XG4gIC8qKlxyXG4gICAqIENvbnZlcnRzIERPTSBlbGVtZW50IHRvIGl0ZW0gZGF0YSBvYmplY3QuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50IERPTSBlbGVtZW50XHJcbiAgICogQHJldHVybnMge1NsaWRlRGF0YX1cclxuICAgKi9cblxuXG4gIF9kb21FbGVtZW50VG9JdGVtRGF0YShlbGVtZW50KSB7XG4gICAgLyoqIEB0eXBlIHtTbGlkZURhdGF9ICovXG4gICAgY29uc3QgaXRlbURhdGEgPSB7XG4gICAgICBlbGVtZW50XG4gICAgfTtcbiAgICBjb25zdCBsaW5rRWwgPVxuICAgIC8qKiBAdHlwZSB7SFRNTEFuY2hvckVsZW1lbnR9ICovXG4gICAgZWxlbWVudC50YWdOYW1lID09PSAnQScgPyBlbGVtZW50IDogZWxlbWVudC5xdWVyeVNlbGVjdG9yKCdhJyk7XG5cbiAgICBpZiAobGlua0VsKSB7XG4gICAgICAvLyBzcmMgY29tZXMgZnJvbSBkYXRhLXBzd3Atc3JjIGF0dHJpYnV0ZSxcbiAgICAgIC8vIGlmIGl0J3MgZW1wdHkgbGluayBocmVmIGlzIHVzZWRcbiAgICAgIGl0ZW1EYXRhLnNyYyA9IGxpbmtFbC5kYXRhc2V0LnBzd3BTcmMgfHwgbGlua0VsLmhyZWY7XG5cbiAgICAgIGlmIChsaW5rRWwuZGF0YXNldC5wc3dwU3Jjc2V0KSB7XG4gICAgICAgIGl0ZW1EYXRhLnNyY3NldCA9IGxpbmtFbC5kYXRhc2V0LnBzd3BTcmNzZXQ7XG4gICAgICB9XG5cbiAgICAgIGl0ZW1EYXRhLndpZHRoID0gbGlua0VsLmRhdGFzZXQucHN3cFdpZHRoID8gcGFyc2VJbnQobGlua0VsLmRhdGFzZXQucHN3cFdpZHRoLCAxMCkgOiAwO1xuICAgICAgaXRlbURhdGEuaGVpZ2h0ID0gbGlua0VsLmRhdGFzZXQucHN3cEhlaWdodCA/IHBhcnNlSW50KGxpbmtFbC5kYXRhc2V0LnBzd3BIZWlnaHQsIDEwKSA6IDA7IC8vIHN1cHBvcnQgbGVnYWN5IHcgJiBoIHByb3BlcnRpZXNcblxuICAgICAgaXRlbURhdGEudyA9IGl0ZW1EYXRhLndpZHRoO1xuICAgICAgaXRlbURhdGEuaCA9IGl0ZW1EYXRhLmhlaWdodDtcblxuICAgICAgaWYgKGxpbmtFbC5kYXRhc2V0LnBzd3BUeX
41BlKSB7XG4gICAgICAgIGl0ZW1EYXRhLnR5cGUgPSBsaW5rRWwuZGF0YXNldC5wc3dwVHlwZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGh1bWJuYWlsRWwgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ltZycpO1xuXG4gICAgICBpZiAodGh1bWJuYWlsRWwpIHtcbiAgICAgICAgdmFyIF90aHVtYm5haWxFbCRnZXRBdHRyaTtcblxuICAgICAgICAvLyBtc3JjIGlzIFVSTCB0byBwbGFjZWhvbGRlciBpbWFnZSB0aGF0J3MgZGlzcGxheWVkIGJlZm9yZSBsYXJnZSBpbWFnZSBpcyBsb2FkZWRcbiAgICAgICAgLy8gYnkgZGVmYXVsdCBpdCdzIGRpc3BsYXllZCBvbmx5IGZvciB0aGUgZmlyc3Qgc2xpZGVcbiAgICAgICAgaXRlbURhdGEubXNyYyA9IHRodW1ibmFpbEVsLmN1cnJlbnRTcmMgfHwgdGh1bWJuYWlsRWwuc3JjO1xuICAgICAgICBpdGVtRGF0YS5hbHQgPSAoX3RodW1ibmFpbEVsJGdldEF0dHJpID0gdGh1bWJuYWlsRWwuZ2V0QXR0cmlidXRlKCdhbHQnKSkgIT09IG51bGwgJiYgX3RodW1ibmFpbEVsJGdldEF0dHJpICE9PSB2b2lkIDAgPyBfdGh1bWJuYWlsRWwkZ2V0QXR0cmkgOiAnJztcbiAgICAgIH1cblxuICAgICAgaWYgKGxpbmtFbC5kYXRhc2V0LnBzd3BDcm9wcGVkIHx8IGxpbmtFbC5kYXRhc2V0LmNyb3BwZWQpIHtcbiAgICAgICAgaXRlbURhdGEudGh1bWJDcm9wcGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcHBseUZpbHRlcnMoJ2RvbUl0ZW1EYXRhJywgaXRlbURhdGEsIGVsZW1lbnQsIGxpbmtFbCk7XG4gIH1cbiAgLyoqXHJcbiAgICogTGF6eS1sb2FkIGJ5IHNsaWRlIGRhdGFcclxuICAgKlxyXG4gICAqIEBwYXJhbSB7U2xpZGVEYXRhfSBpdGVtRGF0YSBEYXRhIGFib3V0IHRoZSBzbGlkZVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEByZXR1cm5zIHtDb250ZW50fSBJbWFnZSB0aGF0IGlzIGJlaW5nIGRlY29kZWQgb3IgZmFsc2UuXHJcbiAgICovXG5cblxuICBsYXp5TG9hZERhdGEoaXRlbURhdGEsIGluZGV4KSB7XG4gICAgcmV0dXJuIGxhenlMb2FkRGF0YShpdGVtRGF0YSwgdGhpcywgaW5kZXgpO1xuICB9XG5cbn1cblxuLyoqXHJcbiAqIEB0ZW1wbGF0ZSBUXHJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3R5cGVzLmpzJykuVHlwZTxUPn0gVHlwZTxUPlxyXG4gKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3Bob3Rvc3dpcGUuanMnKS5kZWZhdWx0fSBQaG90b1N3aXBlICovXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9waG90b3N3aXBlLmpzJykuUGhvdG9Td2lwZU9wdGlvbnN9IFBob3RvU3dpcGVPcHRpb25zICovXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9waG90b3N3aXBlLmpzJykuRGF0YVNvdXJjZX0gRGF0YVNvdXJjZSAqL1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vcGhvdG9zd2lwZS5qcycpLlBvaW50fSBQb2ludCAqL1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vc2xpZGUvY29udGVudC5qcycpLmRlZmF1bHR9IENvbnRlbnQgKi9cblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2NvcmUvZXZlbnRhYmxlLmpzJykuUGhvdG9Td2lwZUV2ZW50c01hcH0gUGhvdG9Td2lwZUV2ZW50c01hcCAqL1xuXG4vKiogQHR5cGVkZWYge2ltcG9ydCgnLi4vY29yZS9ldmVudGFibGUuanMnKS5QaG90b1N3aXBlRmlsdGVyc01hcH0gUGhvdG9Td2lwZUZpbHRlcnNNYXAgKi9cblxuLyoqXHJcbiAqIEB0ZW1wbGF0ZSB7a2V5b2YgUGhvdG9Td2lwZUV2ZW50c01hcH0gVFxyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9jb3JlL2V2ZW50YWJsZS5qcycpLkV2ZW50Q2FsbGJhY2s8VD59IEV2ZW50Q2FsbGJhY2s8VD5cclxuICovXG5cbi8qKlxyXG4gKiBQaG90b1N3aXBlIExpZ2h0Ym94XHJcbiAqXHJcbiAqIC0gSWYgdXNlciBoYXMgdW5zdXBwb3J0ZWQgYnJvd3NlciBpdCBmYWxscyBiYWNrIHRvIGRlZmF1bHQgYnJvd3NlciBhY3Rpb24gKGp1c3Qgb3BlbnMgVVJMKVxyXG4gKiAtIEJpbmRzIGNsaWNrIGV2ZW50IHRvIGxpbmtzIHRoYXQgc2hvdWxkIG9wZW4gUGhvdG9Td2lwZVxyXG4gKiAtIHBhcnNlcyBET00gc3RyY3R1cmUgZm9yIFBob3RvU3dpcGUgKHJldHJpZXZlcyBsYXJnZSBpbWFnZSBVUkxzIGFuZCBzaXplcylcclxuICogLSBJbml0aWFsaXplcyBQaG90b1N3aXBlXHJcbiAqXHJcbiAqXHJcbiAqIExvYWRlciBvcHRpb25zIHVzZSB0aGUgc2FtZSBvYmplY3QgYXMgUGhvdG9Td2lwZSwgYW5kIHN1cHBvcnRzIHN1Y2ggb3B0aW9uczpcclxuICpcclxuICogZ2FsbGVyeSAtIEVsZW1lbnQgfCBFbGVtZW50W10gfCBOb2RlTGlzdCB8IHN0cmluZyBzZWxlY3RvciBmb3IgdGhlIGdhbGxlcnkgZWxlbWVudFxyXG4gKiBjaGlsZHJlbiAtIEVsZW1lbnQgfCBFbGVtZW50W10gfCBOb2RlTGlzdCB8IHN0cmluZyBzZWxlY3RvciBmb3IgdGhlIGdhbGxlcnkgY2hpbGRyZW5cclxuICpcclxuICovXG5cbmNsYXNzIFBob3RvU3dpcGVMaWdodGJveCBleHRlbmRzIFBob3RvU3dpcGVCYXNlIHtcbiAgLyoqXHJcbiAgICogQHBhcmFtIHtQaG90b1N3aXBlT3B0aW9uc30gW29wdGlvbnNdXHJcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICBzdXBlcigpO1xuICAgIC8qKiBAdHlwZSB7UGhvdG9Td2lwZU9wdGlvbnN9ICovXG5cbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIHRoaXMuX3VpZCA9IDA7XG4gICAgdGhpcy5zaG91bGRPcGVuID0gZmFsc2U7XG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogQHR5cGUge0NvbnRlbnQgfCB1bmRlZmluZWR9XHJcbiAgICAgKi9cblxuICAgIHRoaXMuX3ByZWxvYWRlZENvbnRlbnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5vblRodW1ibmFpbHNDbGljayA9IHRoaXMub25UaHVtYm5haWxzQ2xpY2suYmluZCh0aGlzKTtcbiAgfVxuICAvKipcclxuICAgKiBJbml0aWFsaXplIGxpZ2h0Ym94LCBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZS5cclxuICAgKiBJdCdzIG5vdCBpbmNsdWRlZCBpbiB0aGUgbWFpbiBjb25zdHJ1Y3Rvciwgc28geW91IG1heSBiaW5kIGV2ZW50cyBiZWZvcmUgaXQuXHJcbiAgICovXG5cblxuICBpbml0KCkge1xuICAgIC8vIEJpbmQgY2xpY2sgZXZlbnRzIHRvIGVhY2ggZ2FsbGVyeVxuICAgIGdldEVsZW1lbnRzRnJvbU9wdGlvbih0aGlzLm9wdGlvbnMuZ2FsbGVyeSwgdGhpcy5vcHRpb25zLmdhbGxlcnlTZWxlY3RvcikuZm9yRWFjaChnYWxsZXJ5RWxlbWVudCA9PiB7XG4gICAgICBnYWxsZXJ5RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25UaHVtYm5haWxzQ2xpY2ssIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuICAvKipcclxuICAgKiBAcGFyYW0ge01vdXNlRXZlbnR9IGVcclxuICAgKi9cblxuXG4gIG9uVGh1bWJuYWlsc0NsaWNrKGUpIHtcbiAgICAvLyBFeGl0IGFuZCBhbGxvdyBkZWZhdWx0IGJyb3dzZXIgYWN0aW9uIGlmOlxuICAgIGlmIChzcGVjaWFsS2V5VXNlZChlKSAvLyAuLi4gaWYgY2xpY2tlZCB3aXRoIGEgc3BlY2lhbCBrZXkgKGN0cmwvY21kLi4uKVxuICAgIHx8IHdpbmRvdy5wc3dwKSB7XG4gICAgICAvLyAuLi4gaWYg
41UGhvdG9Td2lwZSBpcyBhbHJlYWR5IG9wZW5cbiAgICAgIHJldHVybjtcbiAgICB9IC8vIElmIGJvdGggY2xpZW50WCBhbmQgY2xpZW50WSBhcmUgMCBvciBub3QgZGVmaW5lZCxcbiAgICAvLyB0aGUgZXZlbnQgaXMgbGlrZWx5IHRyaWdnZXJlZCBieSBrZXlib2FyZCxcbiAgICAvLyBzbyB3ZSBkbyBub3QgcGFzcyB0aGUgaW5pdGlhbFBvaW50XG4gICAgLy9cbiAgICAvLyBOb3RlIHRoYXQgc29tZSBzY3JlZW4gcmVhZGVycyBlbXVsYXRlIHRoZSBtb3VzZSBwb3NpdGlvbixcbiAgICAvLyBzbyBpdCdzIG5vdCB0aGUgaWRlYWwgd2F5IHRvIGRldGVjdCB0aGVtLlxuICAgIC8vXG5cbiAgICAvKiogQHR5cGUge1BvaW50IHwgbnVsbH0gKi9cblxuXG4gICAgbGV0IGluaXRpYWxQb2ludCA9IHtcbiAgICAgIHg6IGUuY2xpZW50WCxcbiAgICAgIHk6IGUuY2xpZW50WVxuICAgIH07XG5cbiAgICBpZiAoIWluaXRpYWxQb2ludC54ICYmICFpbml0aWFsUG9pbnQueSkge1xuICAgICAgaW5pdGlhbFBvaW50ID0gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgY2xpY2tlZEluZGV4ID0gdGhpcy5nZXRDbGlja2VkSW5kZXgoZSk7XG4gICAgY2xpY2tlZEluZGV4ID0gdGhpcy5hcHBseUZpbHRlcnMoJ2NsaWNrZWRJbmRleCcsIGNsaWNrZWRJbmRleCwgZSwgdGhpcyk7XG4gICAgLyoqIEB0eXBlIHtEYXRhU291cmNlfSAqL1xuXG4gICAgY29uc3QgZGF0YVNvdXJjZSA9IHtcbiAgICAgIGdhbGxlcnk6XG4gICAgICAvKiogQHR5cGUge0hUTUxFbGVtZW50fSAqL1xuICAgICAgZS5jdXJyZW50VGFyZ2V0XG4gICAgfTtcblxuICAgIGlmIChjbGlja2VkSW5kZXggPj0gMCkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5sb2FkQW5kT3BlbihjbGlja2VkSW5kZXgsIGRhdGFTb3VyY2UsIGluaXRpYWxQb2ludCk7XG4gICAgfVxuICB9XG4gIC8qKlxyXG4gICAqIEdldCBpbmRleCBvZiBnYWxsZXJ5IGl0ZW0gdGhhdCB3YXMgY2xpY2tlZC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7TW91c2VFdmVudH0gZSBjbGljayBldmVudFxyXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9XHJcbiAgICovXG5cblxuICBnZXRDbGlja2VkSW5kZXgoZSkge1xuICAgIC8vIGxlZ2FjeSBvcHRpb25cbiAgICBpZiAodGhpcy5vcHRpb25zLmdldENsaWNrZWRJbmRleEZuKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldENsaWNrZWRJbmRleEZuLmNhbGwodGhpcywgZSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2xpY2tlZFRhcmdldCA9XG4gICAgLyoqIEB0eXBlIHtIVE1MRWxlbWVudH0gKi9cbiAgICBlLnRhcmdldDtcbiAgICBjb25zdCBjaGlsZEVsZW1lbnRzID0gZ2V0RWxlbWVudHNGcm9tT3B0aW9uKHRoaXMub3B0aW9ucy5jaGlsZHJlbiwgdGhpcy5vcHRpb25zLmNoaWxkU2VsZWN0b3IsXG4gICAgLyoqIEB0eXBlIHtIVE1MRWxlbWVudH0gKi9cbiAgICBlLmN1cnJlbnRUYXJnZXQpO1xuICAgIGNvbnN0IGNsaWNrZWRDaGlsZEluZGV4ID0gY2hpbGRFbGVtZW50cy5maW5kSW5kZXgoY2hpbGQgPT4gY2hpbGQgPT09IGNsaWNrZWRUYXJnZXQgfHwgY2hpbGQuY29udGFpbnMoY2xpY2tlZFRhcmdldCkpO1xuXG4gICAgaWYgKGNsaWNrZWRDaGlsZEluZGV4ICE9PSAtMSkge1xuICAgICAgcmV0dXJuIGNsaWNrZWRDaGlsZEluZGV4O1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLmNoaWxkcmVuIHx8IHRoaXMub3B0aW9ucy5jaGlsZFNlbGVjdG9yKSB7XG4gICAgICAvLyBjbGljayB3YXNuJ3Qgb24gYSBjaGlsZCBlbGVtZW50XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSAvLyBUaGVyZSBpcyBvbmx5IG9uZSBpdGVtICh3aGljaCBpcyB0aGUgZ2FsbGVyeSlcblxuXG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgLyoqXHJcbiAgICogTG9hZCBhbmQgb3BlbiBQaG90b1N3aXBlXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAcGFyYW0ge0RhdGFTb3VyY2V9IFtkYXRhU291cmNlXVxyXG4gICAqIEBwYXJhbSB7UG9pbnQgfCBudWxsfSBbaW5pdGlhbFBvaW50XVxyXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAqL1xuXG5cbiAgbG9hZEFuZE9wZW4oaW5kZXgsIGRhdGFTb3VyY2UsIGluaXRpYWxQb2ludCkge1xuICAgIC8vIENoZWNrIGlmIHRoZSBnYWxsZXJ5IGlzIGFscmVhZHkgb3BlblxuICAgIGlmICh3aW5kb3cucHN3cCB8fCAhdGhpcy5vcHRpb25zKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSAvLyBVc2UgdGhlIGZpcnN0IGdhbGxlcnkgZWxlbWVudCBpZiBkYXRhU291cmNlIGlzIG5vdCBwcm92aWRlZFxuXG5cbiAgICBpZiAoIWRhdGFTb3VyY2UgJiYgdGhpcy5vcHRpb25zLmdhbGxlcnkgJiYgdGhpcy5vcHRpb25zLmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBnYWxsZXJ5RWxlbWVudHMgPSBnZXRFbGVtZW50c0Zyb21PcHRpb24odGhpcy5vcHRpb25zLmdhbGxlcnkpO1xuXG4gICAgICBpZiAoZ2FsbGVyeUVsZW1lbnRzWzBdKSB7XG4gICAgICAgIGRhdGFTb3VyY2UgPSB7XG4gICAgICAgICAgZ2FsbGVyeTogZ2FsbGVyeUVsZW1lbnRzWzBdXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSAvLyBzZXQgaW5pdGlhbCBpbmRleFxuXG5cbiAgICB0aGlzLm9wdGlvbnMuaW5kZXggPSBpbmRleDsgLy8gZGVmaW5lIG9wdGlvbnMgZm9yIFBob3RvU3dpcGUgY29uc3RydWN0b3JcblxuICAgIHRoaXMub3B0aW9ucy5pbml0aWFsUG9pbnRlclBvcyA9IGluaXRpYWxQb2ludDtcbiAgICB0aGlzLnNob3VsZE9wZW4gPSB0cnVlO1xuICAgIHRoaXMucHJlbG9hZChpbmRleCwgZGF0YVNvdXJjZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLyoqXHJcbiAgICogTG9hZCB0aGUgbWFpbiBtb2R1bGUgYW5kIHRoZSBzbGlkZSBjb250ZW50IGJ5IGluZGV4XHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAcGFyYW0ge0RhdGFTb3VyY2V9IFtkYXRhU291cmNlXVxyXG4gICAqL1xuXG5cbiAgcHJlbG9hZChpbmRleCwgZGF0YVNvdXJjZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIG9wdGlvbnNcbiAgICB9ID0gdGhpcztcblxuICAgIGlmIChkYXRhU291cmNlKSB7XG4gICAgICBvcHRpb25zLmRh
41dGFTb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIH0gLy8gQWRkIHRoZSBtYWluIG1vZHVsZVxuXG4gICAgLyoqIEB0eXBlIHtQcm9taXNlPFR5cGU8UGhvdG9Td2lwZT4+W119ICovXG5cblxuICAgIGNvbnN0IHByb21pc2VBcnJheSA9IFtdO1xuICAgIGNvbnN0IHBzd3BNb2R1bGVUeXBlID0gdHlwZW9mIG9wdGlvbnMucHN3cE1vZHVsZTtcblxuICAgIGlmIChpc1Bzd3BDbGFzcyhvcHRpb25zLnBzd3BNb2R1bGUpKSB7XG4gICAgICBwcm9taXNlQXJyYXkucHVzaChQcm9taXNlLnJlc29sdmUoXG4gICAgICAvKiogQHR5cGUge1R5cGU8UGhvdG9Td2lwZT59ICovXG4gICAgICBvcHRpb25zLnBzd3BNb2R1bGUpKTtcbiAgICB9IGVsc2UgaWYgKHBzd3BNb2R1bGVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwc3dwTW9kdWxlIGFzIHN0cmluZyBpcyBubyBsb25nZXIgc3VwcG9ydGVkJyk7XG4gICAgfSBlbHNlIGlmIChwc3dwTW9kdWxlVHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvbWlzZUFycmF5LnB1c2goXG4gICAgICAvKiogQHR5cGUgeygpID0+IFByb21pc2U8VHlwZTxQaG90b1N3aXBlPj59ICovXG4gICAgICBvcHRpb25zLnBzd3BNb2R1bGUoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncHN3cE1vZHVsZSBpcyBub3QgdmFsaWQnKTtcbiAgICB9IC8vIEFkZCBjdXN0b20tZGVmaW5lZCBwcm9taXNlLCBpZiBhbnlcblxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLm9wZW5Qcm9taXNlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBhbGxvdyBkZXZlbG9wZXJzIHRvIHBlcmZvcm0gc29tZSB0YXNrIGJlZm9yZSBvcGVuaW5nXG4gICAgICBwcm9taXNlQXJyYXkucHVzaChvcHRpb25zLm9wZW5Qcm9taXNlKCkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnByZWxvYWRGaXJzdFNsaWRlICE9PSBmYWxzZSAmJiBpbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLl9wcmVsb2FkZWRDb250ZW50ID0gbGF6eUxvYWRTbGlkZShpbmRleCwgdGhpcyk7XG4gICAgfSAvLyBXYWl0IHRpbGwgYWxsIHByb21pc2VzIHJlc29sdmUgYW5kIG9wZW4gUGhvdG9Td2lwZVxuXG5cbiAgICBjb25zdCB1aWQgPSArK3RoaXMuX3VpZDtcbiAgICBQcm9taXNlLmFsbChwcm9taXNlQXJyYXkpLnRoZW4oaXRlcmFibGVNb2R1bGVzID0+IHtcbiAgICAgIGlmICh0aGlzLnNob3VsZE9wZW4pIHtcbiAgICAgICAgY29uc3QgbWFpbk1vZHVsZSA9IGl0ZXJhYmxlTW9kdWxlc1swXTtcblxuICAgICAgICB0aGlzLl9vcGVuUGhvdG9zd2lwZShtYWluTW9kdWxlLCB1aWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxyXG4gICAqIEBwcml2YXRlXHJcbiAgICogQHBhcmFtIHtUeXBlPFBob3RvU3dpcGU+IHwgeyBkZWZhdWx0OiBUeXBlPFBob3RvU3dpcGU+IH19IG1vZHVsZVxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB1aWRcclxuICAgKi9cblxuXG4gIF9vcGVuUGhvdG9zd2lwZShtb2R1bGUsIHVpZCkge1xuICAgIC8vIENhbmNlbCBvcGVuaW5nIGlmIFVJRCBkb2Vzbid0IG1hdGNoIHRoZSBjdXJyZW50IG9uZVxuICAgIC8vIChpZiB1c2VyIGNsaWNrZWQgb24gYW5vdGhlciBnYWxsZXJ5IGl0ZW0gYmVmb3JlIGN1cnJlbnQgd2FzIGxvYWRlZCkuXG4gICAgLy9cbiAgICAvLyBPciBpZiBzaG91bGRPcGVuIGZsYWcgaXMgc2V0IHRvIGZhbHNlXG4gICAgLy8gKGRldmVsb3BlciBtYXkgbW9kaWZ5IGl0IHZpYSBwdWJsaWMgQVBJKVxuICAgIGlmICh1aWQgIT09IHRoaXMuX3VpZCAmJiB0aGlzLnNob3VsZE9wZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3VsZE9wZW4gPSBmYWxzZTsgLy8gUGhvdG9Td2lwZSBpcyBhbHJlYWR5IG9wZW5cblxuICAgIGlmICh3aW5kb3cucHN3cCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvKipcclxuICAgICAqIFBhc3MgZGF0YSB0byBQaG90b1N3aXBlIGFuZCBvcGVuIGluaXRcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7UGhvdG9Td2lwZX1cclxuICAgICAqL1xuXG5cbiAgICBjb25zdCBwc3dwID0gdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgPyBuZXcgbW9kdWxlLmRlZmF1bHQodGhpcy5vcHRpb25zKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgOiBuZXcgbW9kdWxlKHRoaXMub3B0aW9ucyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgIHRoaXMucHN3cCA9IHBzd3A7XG4gICAgd2luZG93LnBzd3AgPSBwc3dwOyAvLyBtYXAgbGlzdGVuZXJzIGZyb20gTGlnaHRib3ggdG8gUGhvdG9Td2lwZSBDb3JlXG5cbiAgICAvKiogQHR5cGUgeyhrZXlvZiBQaG90b1N3aXBlRXZlbnRzTWFwKVtdfSAqL1xuXG4gICAgT2JqZWN0LmtleXModGhpcy5fbGlzdGVuZXJzKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgdmFyIF90aGlzJF9saXN0ZW5lcnMkbmFtZTtcblxuICAgICAgKF90aGlzJF9saXN0ZW5lcnMkbmFtZSA9IHRoaXMuX2xpc3RlbmVyc1tuYW1lXSkgPT09IG51bGwgfHwgX3RoaXMkX2xpc3RlbmVycyRuYW1lID09PSB2b2lkIDAgfHwgX3RoaXMkX2xpc3RlbmVycyRuYW1lLmZvckVhY2goZm4gPT4ge1xuICAgICAgICBwc3dwLm9uKG5hbWUsXG4gICAgICAgIC8qKiBAdHlwZSB7RXZlbnRDYWxsYmFjazx0eXBlb2YgbmFtZT59ICovXG4gICAgICAgIGZuKTtcbiAgICAgIH0pO1xuICAgIH0pOyAvLyBzYW1lIHdpdGggZmlsdGVyc1xuXG4gICAgLyoqIEB0eXBlIHsoa2V5b2YgUGhvdG9Td2lwZUZpbHRlcnNNYXApW119ICovXG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLl9maWx0ZXJzKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgdmFyIF90aGlzJF9maWx0ZXJzJG5hbWU7XG5cbiAgICAgIChfdGhpcyRfZmlsdGVycyRuYW1lID0gdGhpcy5fZmlsdGVyc1tuYW1lXSkgPT09IG51bGwgfHwgX3RoaXMkX2ZpbHRlcnMkbmFtZSA9PT0gdm9pZCAwIHx8IF90aGlzJF9maWx0ZXJzJG5hbWUuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgICBwc3dwLmFkZEZpbHRlcihuYW1lLCBmaWx0ZXIuZm4sIGZpbHRlci5wcmlvcml0eSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLl9wcmVsb2FkZWRDb250ZW50KSB7XG4gICAgICBwc3dwLmNvbnRlbn
41RMb2FkZXIuYWRkVG9DYWNoZSh0aGlzLl9wcmVsb2FkZWRDb250ZW50KTtcbiAgICAgIHRoaXMuX3ByZWxvYWRlZENvbnRlbnQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHN3cC5vbignZGVzdHJveScsICgpID0+IHtcbiAgICAgIC8vIGNsZWFuIHVwIHB1YmxpYyB2YXJpYWJsZXNcbiAgICAgIHRoaXMucHN3cCA9IHVuZGVmaW5lZDtcbiAgICAgIGRlbGV0ZSB3aW5kb3cucHN3cDtcbiAgICB9KTtcbiAgICBwc3dwLmluaXQoKTtcbiAgfVxuICAvKipcclxuICAgKiBVbmJpbmRzIGFsbCBldmVudHMsIGNsb3NlcyBQaG90b1N3aXBlIGlmIGl0J3Mgb3Blbi5cclxuICAgKi9cblxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdmFyIF90aGlzJHBzd3A7XG5cbiAgICAoX3RoaXMkcHN3cCA9IHRoaXMucHN3cCkgPT09IG51bGwgfHwgX3RoaXMkcHN3cCA9PT0gdm9pZCAwIHx8IF90aGlzJHBzd3AuZGVzdHJveSgpO1xuICAgIHRoaXMuc2hvdWxkT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuX2xpc3RlbmVycyA9IHt9O1xuICAgIGdldEVsZW1lbnRzRnJvbU9wdGlvbih0aGlzLm9wdGlvbnMuZ2FsbGVyeSwgdGhpcy5vcHRpb25zLmdhbGxlcnlTZWxlY3RvcikuZm9yRWFjaChnYWxsZXJ5RWxlbWVudCA9PiB7XG4gICAgICBnYWxsZXJ5RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25UaHVtYm5haWxzQ2xpY2ssIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG59XG5cbmV4cG9ydCB7IFBob3RvU3dpcGVMaWdodGJveCBhcyBkZWZhdWx0IH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1waG90b3N3aXBlLWxpZ2h0Ym94LmVzbS5qcy5tYXBcbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCBIZWFkbGluZSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9IZWFkbGluZS5zdmVsdGUnXG4gIGltcG9ydCBQaG90b1N3aXBlTGlnaHRib3ggZnJvbSAncGhvdG9zd2lwZS9saWdodGJveCdcbiAgaW1wb3J0ICdwaG90b3N3aXBlL3N0eWxlLmNzcydcblxuICBleHBvcnQgbGV0IHpvb20gPSBmYWxzZVxuICBleHBvcnQgbGV0IGRvd25sb2FkID0gZmFsc2VcbiAgZXhwb3J0IGxldCBoZWFkbGluZSA9IG51bGxcbiAgZXhwb3J0IGxldCBibG9ja3MgPSBbXVxuXG4gIGJsb2Nrcy5tYXAoYXN5bmMgaW1nID0+IHtcbiAgICBpbWcuc3JjID0gaW1nLnNyY19wcmV2XG5cbiAgICBsZXQgaW1nRmlsZSA9IG51bGxcbiAgICBpZiAoaW1nLnNyY19wcmV2KSB7XG4gICAgICBpbWdGaWxlID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIGltZy5zcmNcbiAgICAgIGltZy5maWxlID0gaW1nLnNyYy5zcGxpdCgnLycpLnBvcCgpXG4gICAgfVxuXG4gICAgY29uc3QgbmV3SW1nID0gbmV3IEltYWdlKClcbiAgICBuZXdJbWcub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgICAgaW1nLndpZHRoID0gdGhpcy53aWR0aFxuICAgICAgaW1nLmhlaWdodCA9IHRoaXMuaGVpZ2h0XG4gICAgfVxuICAgIG5ld0ltZy5zcmMgPSBpbWdGaWxlXG4gIH0pXG5cbiAgbGV0IGxpZ2h0Ym94XG4gIChhc3luYyAoKSA9PiB7XG4gICAgbGlnaHRib3ggPSBuZXcgUGhvdG9Td2lwZUxpZ2h0Ym94KHtcbiAgICAgIGdhbGxlcnk6ICcjbGFsYScsXG4gICAgICBkYXRhU291cmNlOiBibG9ja3MsXG4gICAgICBzaG93SGlkZUFuaW1hdGlvblR5cGU6ICdmYWRlJyxcblxuICAgICAgcHN3cE1vZHVsZTogKCkgPT4gaW1wb3J0KCdwaG90b3N3aXBlJylcbiAgICB9KVxuICAgIGxpZ2h0Ym94LmluaXQoKVxuICB9KSgpXG5cbiAgJDogY29sQ291bnQgPSAoKSA9PiB7XG4gICAgaWYgKGJsb2Nrcy5sZW5ndGggPj0gNCkge1xuICAgICAgcmV0dXJuICdncmlkLWNvbHMtMSBzbTpncmlkLWNvbHMtMiBtZDpncmlkLWNvbHMtMyBsZzpncmlkLWNvbHMtNCdcbiAgICB9IGVsc2UgaWYgKGJsb2Nrcy5sZW5ndGggPT09IDMpIHtcbiAgICAgIHJldHVybiAnZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgbWQ6Z3JpZC1jb2xzLTMnXG4gICAgfSBlbHNlIGlmIChibG9ja3MubGVuZ3RoID09PSAyKSB7XG4gICAgICByZXR1cm4gJ2dyaWQtY29scy0xIHNtOmdyaWQtY29scy0yJ1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2dyaWQtY29scy0xJ1xuICAgIH1cbiAgfVxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJjb21wb25lbnQtaW1hZ2VnYWxsZXJ5IGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLThcIj5cbiAgeyNpZiBoZWFkbGluZX1cbiAgICA8SGVhZGxpbmUgey4uLmhlYWRsaW5lfS8+XG4gIHsvaWZ9XG5cbiAgPGRpdiBjbGFzcz1cImdyaWQge2NvbENvdW50KCl9IGdhcC04XCI+XG4gICAgeyNlYWNoIGJsb2NrcyBhcyBpbWFnZSwgaX1cbiAgICAgIDxkaXYgY2xhc3M9XCJoLW1heCBob3ZlcjpzaGFkb3ctbGdcIj5cbiAgICAgICAgeyNpZiBpbWFnZS5ocmVmfVxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwie2ltYWdlLmhyZWZ9XCJcbiAgICAgICAgICAgIHRhcmdldD1cIntpbWFnZS50YXJnZXR9XCJcbiAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgc3JjPVwie2ltYWdlLnNyY31cIlxuICAgICAgICAgICAgICBhbHQ9XCJ7aW1hZ2UuYWx0fVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiXCJcbiAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIHs6ZWxzZX1cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzcmM9XCJ7aW1hZ2Uuc3JjfVwiXG4gICAgICAgICAgICBhbHQ9XCJ7aW1hZ2UuYWx0fVwiXG4gICAgICAgICAgICBjbGFzcz1cIlwiXG4gICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgIC8+XG4gICAgICAgIHsvaWZ9XG4gICAgICAgIHsjaWYgem9vbSB8fCBkb3dubG9hZH1cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWVuZCBiZy1icC1ncmF5LWxpZ2h0IGRhcms6YmctYmxhY2tcIj5cbiAgICAgICAgICAgI
41HsjaWYgem9vbX1cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPVwie2ltYWdlLnNyY31cIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgZG93bmxvYWQ9XCJ7aW1hZ2UuZmlsZX1cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiQmlsZCBzcGVpY2hlcm5cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMiBweS0xIGhvdmVyOnRleHQtYnAtYmx1ZSB0ZXh0LWJsYWNrIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAgID48aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtc29saWQgZmEtZG93bmxvYWQgaG92ZXI6dGV4dC1icC1ibHVlIHRleHQtYmFzZVwiXG4gICAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICAgID48L2k+PC9hPlxuICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICAgIHsjaWYgZG93bmxvYWR9XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBvbjpjbGlja3xwcmV2ZW50RGVmYXVsdD1cIntsaWdodGJveC5sb2FkQW5kT3BlbihpKX1cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiQmlsZCB6b29tZW5cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMiBweS0xIGhvdmVyOnRleHQtYnAtYmx1ZSB0ZXh0LWJsYWNrIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAgID48aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzcy1wbHVzIGhvdmVyOnRleHQtYnAtYmx1ZSB0ZXh0LWJhc2VcIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICA+PC9pPjwvYnV0dG9uPlxuICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgey9pZn1cbiAgICAgIDwvZGl2PlxuICAgIHsvZWFjaH1cbiAgPC9kaXY+XG5cbjwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgZXhwb3J0IGxldCBocmVmX21hcCA9IG51bGxcbiAgZXhwb3J0IGxldCBocmVmX3JvdXRlID0gbnVsbFxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJjb21wb25lbnQtYXV0b3RvYyBncmlkIGdyaWQtY29scy0xIGdhcC0yXCI+XG4gIHsjaWYgaHJlZl9yb3V0ZX1cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtcm91dGUgdGV4dC1icC1ibHVlXCIgcm9sZT1cInByZXNlbnRhdGlvblwiIHRhYmluZGV4PVwiLTFcIj48L2k+XG4gICAgICA8YVxuICAgICAgICBocmVmPVwie2hyZWZfcm91dGV9XCJcbiAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgIGNsYXNzPVwidGV4dC1icC1ibHVlIGhvdmVyOnVuZGVybGluZVwiXG4gICAgICA+Um91dGVucGxhbmVyPC9hPlxuICAgIDwvZGl2PlxuICB7L2lmfVxuICB7I2lmIGhyZWZfbWFwfVxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1tYXAtbG9jYXRpb24gdGV4dC1icC1ibHVlXCIgcm9sZT1cInByZXNlbnRhdGlvblwiIHRhYmluZGV4PVwiLTFcIj48L2k+XG4gICAgICA8YVxuICAgICAgICBocmVmPVwie2hyZWZfbWFwfVwiXG4gICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBjbGFzcz1cInRleHQtYnAtYmx1ZSBob3Zlcjp1bmRlcmxpbmVcIlxuICAgICAgPkthcnRlbmF1c3NjaG5pdHQ8L2E+XG4gICAgPC9kaXY+XG4gIHsvaWZ9XG4gIDxzcGFuIGNsYXNzPVwiXCI+QW5mYWhydHNoaWxmZSBtaXQgZnJldW5kbGljaGVyIFVudGVyc3TDvHR6dW5nIHZvblxuICAgIDxhXG4gICAgICBocmVmPVwiaHR0cDovL3d3dy5iYXllcm5pbmZvLmRlL1wiXG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICBjbGFzcz1cInRleHQtYnAtYmx1ZSBob3Zlcjp1bmRlcmxpbmVcIlxuICAgID5CYXllcm5JbmZvXG4gICAgPC9hPiB1bmRcbiAgICA8YVxuICAgICAgaHJlZj1cImh0dHA6Ly93d3cuYmF5ZXJuYXRsYXMuZGUvXCJcbiAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgIGNsYXNzPVwidGV4dC1icC1ibHVlIGhvdmVyOnVuZGVybGluZVwiXG4gICAgPkJheWVybkF0bGFzXG4gICAgPC9hPi5cbiAgPC9zcGFuPlxuPC9kaXY+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQge3BhZ2VkYXRhfSBmcm9tICdAbGF5b3V0L2JwLWxpYi5qcydcblxuICBpbXBvcnQgUGhvdG9Td2lwZUxpZ2h0Ym94IGZyb20gJ3Bob3Rvc3dpcGUvbGlnaHRib3gnXG4gIGltcG9ydCAncGhvdG9zd2lwZS9zdHlsZS5jc3MnO1xuXG4gIGV4cG9ydCBsZXQgYWN0aW9uID0gZmFsc2VcbiAgZXhwb3J0IGxldCBzaGFkb3cgPSBmYWxzZVxuICBleHBvcnQgbGV0IGhyZWYgPSBudWxsXG4gIGV4cG9ydCBsZXQgdGFyZ2V0ID0gJ19ibGFuaydcbiAgZXhwb3J0IGxldCB0aXRsZSA9IG51bGxcbiAgZXhwb3J0IGxldCBhbHQgPSBudWxsXG4gIGV4cG9ydCBsZXQgY29weXJpZ2h0ID0gbnVsbFxuICBleHBvcnQgbGV0IHNpemUgPSAnZnVsbCdcbiAgZXhwb3J0IGxldCBkZXNjID0gbnVsbFxuICBleHBvcnQgbGV0IHNob3dfZGVzYyA9IHRydWVcbiAgZXhwb3J0IGxldCBoZXJvID0gZmFsc2VcbiAgZXhwb3J0IGxldCBqdXN0aWZpY2F0aW9uID0gbnVsbFxuICBleHBvcnQgbGV0IHdpdGhjb3B5ID0gMFxuICBleHBvcnQgbGV0IGRvd25sb2FkID0gMFxuICBleHBvcnQgbGV0IHpvb20gPSAwXG4gIGV4cG9ydCBsZXQgc2xvdCA9IDFcbiAgZXhwb3J0IGxldCBpbWcgPSB7XG4gICAgeHM6IG51bGwsXG4gICAgc206IG51bGwsXG4gICAgbWQ6IG51bGwsXG4gICAgeGw6IG51bGwsXG4gICAgZHo6IG51bGxcbiAgfVxuXG4gIGxldCBpbWdGaWxlID0gbnVsbFxuICBsZXQgaW1nTmFtZSA9IG51bGxcbiAgaWYgKGFjdGlvbikge1xuICAgIGltZ0ZpbGUgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgaW1nLnhzXG4gIH0gZWxzZSBpZiAoaW1nLmR6KSB7XG4gICAgaW1nRmlsZSA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyBpbWcuZHpcbiAgICBpbWdOYW1lID0gaW1nLmR6LnNwbGl0KCcvJykucG9wKClcbiAgfVxuXG4gIGNvbnN0IGltZ2xvYWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChoZXJvKSA/ICdlYWdlcicgOiAnbGF6eSdcbiAgfVxuXG4gIGNvbnN0IGltZ2NzcyA9ICgpID0+IHtcbiAgICBjb25zdCBjc3MgPSBbXVxuXG4gICAgaWYgKGhlcm8gJiYgIWltZy5tZCkge1xuICAgICAgY3NzLnB1c2goJ2gtWzMwMHB4XSB3LVs5NjBweF0nKVxuICAgIH1cbiAgICBpZiAoc2hhZG93KSB7XG4gICAgICBjc3MucHVzaCgnaG92ZXI6c2hhZG93LWxnJylcbiAgICB9XG5cbiAgICByZXR1cm4gY3NzLmpvaW4oJyAnKVxuICB9XG5cbiAgY29uc3QgaW1ncG9zID0gKCkgPT4ge1xuICAgIGlmIChoZXJvKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9IGVsc2UgaWYgKGp1c3RpZmljYXRpb24gPT09ICdpbWFnZS1sZWZ0Jykge1xuICAgICAgcmV0dXJuICdmbG9hdC1sZWZ0IG0tMCBzbTptci00J1xuICAgIH0gZWxzZSBpZiAoanVzdGlmaWNhdGlvbiA9PT0gJ2ltYWdlLXJpZ2h0Jykge1xuICAgICAgcmV0dXJuICdmbG9hdC1yaWdodCBtLTAgc206bWwtNCdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdmbG9hdC1ub25lIG0tMCdcbiAgICB9XG4gI
41H1cblxuICBjb25zdCBpbWdzaXplID0gKCkgPT4ge1xuICAgIGNvbnN0IGNzcyA9IFtdXG4gICAgaWYgKHNpemUgPT09ICdmdWxsJykge1xuICAgICAgY3NzLnB1c2goJ3ctZnVsbCcpXG4gICAgfSBlbHNlIGlmIChzaXplLnRvU3RyaW5nKCkgPT09ICcyMCcpIHtcbiAgICAgIGNzcy5wdXNoKCdzbTp3LTEvNScpXG4gICAgfSBlbHNlIGlmIChzaXplLnRvU3RyaW5nKCkgPT09ICcyNScpIHtcbiAgICAgIGNzcy5wdXNoKCdzbTp3LTEvNCcpXG4gICAgfSBlbHNlIGlmIChzaXplLnRvU3RyaW5nKCkgPT09ICczMycpIHtcbiAgICAgIGNzcy5wdXNoKCdzbTp3LTEvMycpXG4gICAgfSBlbHNlIGlmIChzaXplLnRvU3RyaW5nKCkgPT09ICc1MCcpIHtcbiAgICAgIGNzcy5wdXNoKCdzbTp3LTEvMicpXG4gICAgfSBlbHNlIGlmIChzaXplLnRvU3RyaW5nKCkgPT09ICc2NicpIHtcbiAgICAgIGNzcy5wdXNoKCdzbTp3LTIvMycpXG4gICAgfSBlbHNlIGlmIChzaXplLnRvU3RyaW5nKCkgPT09ICc3NScpIHtcbiAgICAgIGNzcy5wdXNoKCdzbTp3LTMvNCcpXG4gICAgfSBlbHNlIGlmIChzaXplLnRvU3RyaW5nKCkgPT09ICcxMDAnKSB7XG4gICAgICBjc3MucHVzaCgnc206dy1mdWxsJylcbiAgICB9XG5cbiAgICByZXR1cm4gY3NzLmpvaW4oJyAnKVxuICB9XG5cbiAgbGV0IGxpZ2h0Ym94XG4gIGlmICghaGVybykge1xuICAgIChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBuZXdJbWcgPSBuZXcgSW1hZ2UoKVxuICAgICAgbmV3SW1nLnNyYyA9IGltZ0ZpbGVcbiAgICAgIGF3YWl0IG5ld0ltZy5kZWNvZGUoKVxuXG4gICAgICBjb25zdCBwc0ltYWdlcyA9IFt7XG4gICAgICAgIHNyYzogaW1nRmlsZSxcbiAgICAgICAgd2lkdGg6IG5ld0ltZy53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBuZXdJbWcuaGVpZ2h0LFxuICAgICAgICBhbHQ6IGFsdFxuICAgICAgfV1cblxuICAgICAgbGlnaHRib3ggPSBuZXcgUGhvdG9Td2lwZUxpZ2h0Ym94KHtcbiAgICAgICAgZGF0YVNvdXJjZTogcHNJbWFnZXMsXG4gICAgICAgIHNob3dIaWRlQW5pbWF0aW9uVHlwZTogJ2ZhZGUnLFxuXG4gICAgICAgIHBzd3BNb2R1bGU6ICgpID0+IGltcG9ydCgncGhvdG9zd2lwZScpXG4gICAgICB9KVxuICAgICAgbGlnaHRib3guaW5pdCgpXG4gICAgfSkoKVxuICB9XG48L3NjcmlwdD5cblxuPGZpZ3VyZSBjbGFzcz1cImNvbXBvbmVudC1pbWFnZSB7aW1nY3NzKCl9IHtpbWdwb3MoKX0ge2ltZ3NpemUoKX0gc2xvdC17c2xvdH1cIj5cbiAgeyNpZiBocmVmICYmICFwYWdlZGF0YS5pc19wcmV2aWV3fVxuICAgIHsjaWYgc2xvdCA9PT0gMn1cbiAgICAgIDxhIGhyZWY9XCJ7aHJlZn1cIiB0YXJnZXQ9XCJ7dGFyZ2V0fVwiIHRpdGxlPVwie3RpdGxlfVwiPlxuICAgICAgICA8aW1nIHNyYz1cIntpbWcueHN9XCIgYWx0PVwie2FsdH1cIiBjbGFzcz1cIntpbWdjc3MoKX1cIiBsb2FkaW5nPVwie2ltZ2xvYWQoKX1cIiByb2xlPVwicHJlc2VudGF0aW9uXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgPC9hPlxuICAgIHs6ZWxzZX1cbiAgICAgIDxhIGhyZWY9XCJ7aHJlZn1cIiB0YXJnZXQ9XCJ7dGFyZ2V0fVwiIHRpdGxlPVwie3RpdGxlfVwiPlxuICAgICAgICA8cGljdHVyZSBjbGFzcz1cIntpbWdjc3MoKX1cIj5cbiAgICAgICAgICA8c291cmNlIG1lZGlhPVwiKG1heC13aWR0aDogNTc2cHgpXCIgc3Jjc2V0PVwie2ltZy54c31cIj5cbiAgICAgICAgICA8c291cmNlIG1lZGlhPVwiKG1heC13aWR0aDogNzY4cHgpXCIgc3Jjc2V0PVwie2ltZy5zbX1cIj5cbiAgICAgICAgICA8c291cmNlIG1lZGlhPVwiKG1heC13aWR0aDogOTkycHgpXCIgc3Jjc2V0PVwie2ltZy5tZH1cIj5cbiAgICAgICAgICA8c291cmNlIG1lZGlhPVwiKG1pbi13aWR0aDogOTkzcHgpXCIgc3Jjc2V0PVwie2ltZy54bH1cIj5cbiAgICAgICAgICA8aW1nIHNyYz1cIntpbWcubWR9XCIgYWx0PVwie2FsdH1cIiBjbGFzcz1cIntpbWdjc3MoKX1cIiBsb2FkaW5nPVwie2ltZ2xvYWQoKX1cIiByb2xlPVwicHJlc2VudGF0aW9uXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgICA8L3BpY3R1cmU+XG4gICAgICA8L2E+XG4gICAgey9pZn1cbiAgezplbHNlfVxuICAgIHsjaWYgc2xvdCA9PT0gMn1cbiAgICAgIDxpbWcgc3JjPVwie2ltZy54c31cIiBhbHQ9XCJ7YWx0fVwiIGNsYXNzPVwie2ltZ2NzcygpfVwiIGxvYWRpbmc9XCJ7aW1nbG9hZCgpfVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgezplbHNlfVxuICAgICAgPHBpY3R1cmUgY2xhc3M9XCJ7aW1nY3NzKCl9XCI+XG4gICAgICAgIDxzb3VyY2UgbWVkaWE9XCIobWF4LXdpZHRoOiA1NzZweClcIiBzcmNzZXQ9XCJ7aW1nLnhzfVwiPlxuICAgICAgICA8c291cmNlIG1lZGlhPVwiKG1heC13aWR0aDogNzY4cHgpXCIgc3Jjc2V0PVwie2ltZy5zbX1cIj5cbiAgICAgICAgPHNvdXJjZSBtZWRpYT1cIihtYXgtd2lkdGg6IDk5MnB4KVwiIHNyY3NldD1cIntpbWcubWR9XCI+XG4gICAgICAgIDxzb3VyY2UgbWVkaWE9XCIobWluLXdpZHRoOiA5OTNweClcIiBzcmNzZXQ9XCJ7aW1nLnhsfVwiPlxuICAgICAgICA8aW1nIHNyYz1cIntpbWcubWR9XCIgYWx0PVwie2FsdH1cIiBjbGFzcz1cIntpbWdjc3MoKX1cIiBsb2FkaW5nPVwie2ltZ2xvYWQoKX1cIiByb2xlPVwicHJlc2VudGF0aW9uXCIgdGFiaW5kZXg9XCItMVwiPlxuICAgICAgPC9waWN0dXJlPlxuICAgIHsvaWZ9XG4gIHsvaWZ9XG5cbiAgeyNpZiBkZXNjICYmIHNob3dfZGVzY31cbiAgICA8cCBjbGFzcz1cInB4LTEgYmctYnAtZ3JheS1saWdodFwiPntkZXNjfTwvcD5cbiAgey9pZn1cblxuICB7I2lmIChjb3B5cmlnaHQgJiYgd2l0aGNvcHkpIHx8ICh6b29tIHx8IGRvd25sb2FkKX1cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBpdGVtcy1jZW50ZXIganVzdGlmeS1lbmQgYmctYnAtZ3JheS1saWdodCBkYXJrOmJnLWJsYWNrXCI+XG4gICAgICB7I2lmIGNvcHlyaWdodCAmJiB3aXRoY29weX1cbiAgICAgICAgPHAgY2xhc3M9XCJncm93IHB4LTFcIj57Y29weXJpZ2h0fTwvcD5cbiAgICAgIHsvaWZ9XG4gICAgICB7I2lmIGxpZ2h0Ym94ICYmIGltZ0ZpbGUgJiYgKHpvb20gfHwgZG93bmxvYWQpfVxuICAgICAgICB7I2lmIGRvd25sb2FkfVxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwie2ltZy5ken1cIlxuICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgI
41HJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgZG93bmxvYWQ9XCJ7aW1nTmFtZX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB0aXRsZT1cIkJpbGQgc3BlaWNoZXJuXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWJsb2NrIHB4LTIgcHktMSB0ZXh0LWJsYWNrIGRhcms6dGV4dC13aGl0ZSBob3Zlcjp0ZXh0LWJwLWJsdWVcIlxuICAgICAgICAgID48aSBjbGFzcz1cImZhLXNvbGlkIGZhLWRvd25sb2FkIHRleHQtYmFzZVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIiB0YWJpbmRleD1cIi0xXCI+PC9pPjwvYT5cbiAgICAgICAgey9pZn1cbiAgICAgICAgeyNpZiB6b29tfVxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgb246Y2xpY2t8cHJldmVudERlZmF1bHQ9XCJ7bGlnaHRib3gubG9hZEFuZE9wZW4oKX1cIlxuICAgICAgICAgICAgdGl0bGU9XCJCaWxkIHpvb21lblwiXG4gICAgICAgICAgICBjbGFzcz1cImlubGluZS1ibG9jayBweC0yIHB5LTEgdGV4dC1ibGFjayBkYXJrOnRleHQtd2hpdGUgaG92ZXI6dGV4dC1icC1ibHVlXCJcbiAgICAgICAgICA+PGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1tYWduaWZ5aW5nLWdsYXNzLXBsdXMgdGV4dC1iYXNlXCIgcm9sZT1cInByZXNlbnRhdGlvblwiIHRhYmluZGV4PVwiLTFcIj48L2k+PC9idXR0b24+XG4gICAgICAgIHsvaWZ9XG4gICAgICB7L2lmfVxuICAgIDwvZGl2PlxuICB7L2lmfVxuPC9maWd1cmU+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQgSGVhZGxpbmUgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvSGVhZGxpbmUuc3ZlbHRlJ1xuICBpbXBvcnQgSW1hZ2UgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvSW1hZ2Uuc3ZlbHRlJ1xuXG4gIGV4cG9ydCBsZXQgaGVhZGxpbmUgPSBudWxsXG4gIGV4cG9ydCBsZXQgaW1hZ2UgPSB7fVxuICBleHBvcnQgbGV0IGl3ZTIgPSBudWxsXG4gIGV4cG9ydCBsZXQgc2xvdCA9IDFcblxuICBjb25zdCBpbWcgPSB7XG4gICAgeHM6IGltYWdlLnhzIHx8IG51bGwsXG4gICAgc206IGltYWdlLnNtIHx8IG51bGwsXG4gICAgbWQ6IGltYWdlLm1kIHx8IG51bGwsXG4gICAgeGw6IGltYWdlLnhsIHx8IG51bGwsXG4gICAgZHo6IGltYWdlLmR6IHx8IGltYWdlLnhsXG4gIH1cblxuICBpZiAoIWl3ZTIpIHtcbiAgICBpZiAoIWltYWdlLmp1c3RpZmljYXRpb24gJiYgdHlwZW9mIGltYWdlLmp1c3RpZmljYXRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICBpbWFnZS5qdXN0aWZpY2F0aW9uID0gbnVsbFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpd2UyID0gaXdlMi5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJylcbiAgfVxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJjb21wb25lbnQtdGV4dC13aXRoLWltYWdlIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLThcIj5cbiAgeyNpZiBoZWFkbGluZSAmJiBoZWFkbGluZS50aXRsZS5sZW5ndGh9XG4gICAgPGRpdiBjbGFzcz1cInRlbXBsYXRlLWhlYWRsaW5lXCI+XG4gICAgICA8SGVhZGxpbmUgey4uLmhlYWRsaW5lfS8+XG4gICAgPC9kaXY+XG4gIHsvaWZ9XG5cbiAgeyNpZiAoaXdlMiAmJiBpd2UyLmxlbmd0aCkgfHwgaW1hZ2V9XG4gICAgPGRpdiBjbGFzcz1cInRlbXBsYXRlLWNvbnRlbnRcIj5cbiAgICAgIHsjaWYgaW1hZ2UudGl0bGV9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZW1wbGF0ZS1pbWFnZVwiPlxuICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgdGl0bGU9XCJ7aW1hZ2UudGl0bGV9XCJcbiAgICAgICAgICAgIGRlc2M9XCJ7aW1hZ2UuZGVzY3JpcHRpb259XCJcbiAgICAgICAgICAgIGhyZWY9XCJ7aW1hZ2UuaHJlZn1cIlxuICAgICAgICAgICAgYWx0PVwie2ltYWdlLmFsdH1cIlxuICAgICAgICAgICAgc2l6ZT1cIntpbWFnZS5zaXplIHx8ICdmdWxsJ31cIlxuICAgICAgICAgICAgc2hvd19kZXNjPVwie2ZhbHNlfVwiXG4gICAgICAgICAgICBqdXN0aWZpY2F0aW9uPVwie2ltYWdlLmp1c3RpZmljYXRpb259XCJcbiAgICAgICAgICAgIGNvcHlyaWdodD1cIntpbWFnZS5jb3B5cmlnaHR9XCJcbiAgICAgICAgICAgIHpvb209XCJ7aW1hZ2Uuem9vbX1cIlxuICAgICAgICAgICAgZG93bmxvYWQ9XCJ7aW1hZ2UuZG93bmxvYWR9XCJcbiAgICAgICAgICAgIHNsb3Q9XCJ7c2xvdH1cIlxuICAgICAgICAgICAgaW1nPVwie2ltZ31cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgey9pZn1cbiAgICAgIHsjaWYgaXdlMn1cbiAgICAgICAgPGRpdiBjbGFzcz1cInRlbXBsYXRlLXRleHRcIj57QGh0bWwgaXdlMn08L2Rpdj5cbiAgICAgIHsvaWZ9XG4gICAgPC9kaXY+XG4gIHsvaWZ9XG48L2Rpdj5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG4gIC50ZW1wbGF0ZS10ZXh0IHtcbiAgICA6Z2xvYmFsKHA6bm90KDpsYXN0LWNoaWxkKSkge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG48L3N0eWxlPiIsIjxzY3JpcHQ+XG4gIGV4cG9ydCBsZXQgbGlua3MgPSBbXVxuICBleHBvcnQgbGV0IG9yaWVudGF0aW9uID0gMFxuICBleHBvcnQgY29uc3QgbGlzdHR5cGUgPSAnbGlzdCdcblxuICBjb25zdCBnZXRJY29uID0gKGljb24pID0+IHtcbiAgICBjb25zdCBpY29ucyA9IHtcbiAgICAgICdsaW5rLTQ1ZGVnJzogJ2xpbmsnLFxuICAgICAgJ2JveC1hcnJvdy11cC1yaWdodCc6ICdhcnJvdy11cC1yaWdodC1mcm9tLXNxdWFyZScsXG4gICAgICAnZG93bmxvYWQnOiAnZG93bmxvYWQnXG4gICAgfVxuICAgIHJldHVybiBpY29uc1tpY29uXVxuICB9XG5cbiAgY29uc3QgZ3JpZFR5cGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChvcmllbnRhdGlvbikgPyAnZmxleCBmbGV4LXdyYXAgZ2FwLTgnIDogJ2dyaWQgZ3JpZC1jb2wtMSBnYXAtMidcbiAgfVxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJjb21wb25lbnQtbGlua2xpc3RcIj5cbiAgPGRpdiBjbGFzcz1cIntncmlkVHlwZSgpfVwiPlxuICAgIHsjZWFjaCBsaW5rcyBhcyBsaW5rfVxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTEgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgI
41HsjaWYgbGluay5pY29ufVxuICAgICAgICAgIDxpIGNsYXNzPVwidy1bMjRweF0gZmEtc29saWQgZmEte2dldEljb24obGluay5pY29uKX0gdGV4dC1icC1ibHVlXCIgcm9sZT1cInByZXNlbnRhdGlvblwiIHRhYmluZGV4PVwiLTFcIj48L2k+XG4gICAgICAgIHsvaWZ9XG4gICAgICAgIDxhXG4gICAgICAgICAgY2xhc3M9XCJ3aGl0ZXNwYWNlLW5vd3JhcCB0ZXh0LWJwLWJsdWUgZGFyazp0ZXh0LXdoaXRlIGhvdmVyOnVuZGVybGluZVwiXG4gICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgaHJlZj1cIntsaW5rLmhyZWZ9XCJcbiAgICAgICAgICB0YXJnZXQ9XCJ7bGluay50YXJnZXR9XCJcbiAgICAgICAgPntsaW5rLnRpdGxlfTwvYT5cbiAgICAgIDwvZGl2PlxuICAgIHsvZWFjaH1cbiAgPC9kaXY+XG48L2Rpdj5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7cGFnZWRhdGEsIGNhdGRhdGF9IGZyb20gJ0BsYXlvdXQvYnAtbGliLmpzJ1xuICBpbXBvcnQge2FsbG93WW91dHViZUNvb2tpZXNTdG9yZX0gZnJvbSAnQGxheW91dC9zdG9yZXMvbWFpbnN0b3JlLmpzJ1xuICBpbXBvcnQge3NldENvb2tpZX0gZnJvbSAnQGxheW91dC9qcy9jb29raWVzLmpzJ1xuXG4gIGNvbnN0IGRzZ3ZvTGluayA9ICgpID0+IHtcbiAgICBsZXQgbGluayA9IChjYXRkYXRhICYmIGNhdGRhdGEubGlua3MgJiYgY2F0ZGF0YS5saW5rcy5kc2d2bykgPyBjYXRkYXRhLmxpbmtzLmRzZ3ZvIDogbnVsbFxuICAgIGlmIChwYWdlZGF0YS5pc19wcmV2aWV3KSB7XG4gICAgICBsaW5rID0gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBsaW5rXG4gIH1cblxuICBsZXQgeXRDaGVjayA9IGZhbHNlXG4gIGFsbG93WW91dHViZUNvb2tpZXNTdG9yZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgIHl0Q2hlY2sgPSB2YWx1ZTtcbiAgfSk7XG4gICQ6IHNob3dZb3V0dWJlID0geXRDaGVja1xuXG4gIGV4cG9ydCBsZXQgc2hvd19jb3B5cmlnaHQgPSAwXG4gIGV4cG9ydCBsZXQgZnVsbHNjcmVlbiA9IDBcbiAgZXhwb3J0IGxldCBhdXRvcGxheSA9IDBcbiAgZXhwb3J0IGxldCBjb3B5cmlnaHQgPSBudWxsXG4gIGV4cG9ydCBsZXQgdGl0bGUgPSBudWxsXG4gIGV4cG9ydCBsZXQgYWx0ID0gbnVsbFxuICBleHBvcnQgbGV0IGxpbmsgPSAnJ1xuXG4gIGxldCBpc19jaGVja2VkID0gZmFsc2VcbiAgJDogc3BhbjEgPSAoaXNfY2hlY2tlZCkgPyAndHJhbnNsYXRlLXgtNScgOiAndHJhbnNsYXRlLXgtMCdcbiAgJDogc3BhbjIgPSAoaXNfY2hlY2tlZCkgPyAnb3BhY2l0eS0wIGVhc2Utb3V0IGR1cmF0aW9uLTEwMCcgOiAnb3BhY2l0eS0xMDAgZWFzZS1pbiBkdXJhdGlvbi0yMDAnXG4gICQ6IHNwYW4zID0gKGlzX2NoZWNrZWQpID8gJ29wYWNpdHktMTAwIGVhc2UtaW4gZHVyYXRpb24tMjAwJyA6ICdvcGFjaXR5LTAgZWFzZS1vdXQgZHVyYXRpb24tMTAwJ1xuICAkOiBidG5Dc3MgPSAoaXNfY2hlY2tlZCkgPyAnYmctZ3JlZW4tNTAwJyA6ICdiZy1yZWQtNTAwJ1xuXG4gIGlmIChsaW5rLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vd3d3LnlvdXR1YmUnKSkge1xuICAgIGxldCBuZXdsaW5rID0gbGluay5yZXBsYWNlKCdlbmFibGVqc2FwaT0xJywgJycpXG4gICAgbmV3bGluayArPSAnZWN2ZXI9MSZjY19sb2FkX3BvbGljeT0xJml2X2xvYWRfcG9saWN5PTEmbG9vcD0wJnJlbD0wJnl0OnN0cmV0Y2g9MTY6OSZhdXRvaGlkZT0xJ1xuICAgIGlmIChhdXRvcGxheSkge1xuICAgICAgbmV3bGluayArPSAnJmF1dG9wbGF5PTEnXG4gICAgfVxuICAgIGxpbmsgPSBuZXdsaW5rXG4gIH1cblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgaXNfY2hlY2tlZCA9ICFpc19jaGVja2VkXG4gICAgaWYgKGlzX2NoZWNrZWQgIT09IHl0Q2hlY2spIHtcbiAgICAgIGFsbG93WW91dHViZUNvb2tpZXNTdG9yZS5zZXQoaXNfY2hlY2tlZClcbiAgICAgIHNldENvb2tpZSgnYWxsb3dZb3V0dWJlQ29va2llcycsIGlzX2NoZWNrZWQpXG4gICAgfVxuICB9XG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImNvbXBvbmVudC15b3V0dWJlIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cbiAgeyNpZiBzaG93WW91dHViZX1cbiAgICA8ZGl2IGNsYXNzPVwiZW1iZWQtcmVzcG9uc2l2ZSBlbWJlZC1yZXNwb25zaXZlLTE2Ynk5XCI+XG4gICAgICB7I2lmIGxpbmt9XG4gICAgICAgIDxpZnJhbWVcbiAgICAgICAgICBzcmM9XCJ7bGlua31cIlxuICAgICAgICAgIGFsbG93ZnVsbHNjcmVlbj1cIntmdWxsc2NyZWVufVwiXG4gICAgICAgICAgYWxsb3d0cmFuc3BhcmVuY3k9XCJ0cnVlXCJcbiAgICAgICAgICB0aXRsZT1cInt0aXRsZX1cIlxuICAgICAgICAgIGNsYXNzPVwiZW1iZWQtcmVzcG9uc2l2ZS1pdGVtXCJcbiAgICAgICAgPlxuICAgICAgICAgIHsjaWYgYWx0fVxuICAgICAgICAgICAgPHNwYW4+e2FsdH08L3NwYW4+XG4gICAgICAgICAgey9pZn1cbiAgICAgICAgPC9pZnJhbWU+XG4gICAgICB7OmVsc2V9XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj5FcyB3dXJkZSBrZWluIFlvdXR1YmUgTGluayBhbmdlZ2ViZW4uPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHsvaWZ9XG4gICAgPC9kaXY+XG4gIHs6ZWxzZSB9XG4gICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTIgYm9yZGVyIGJvcmRlci1icC1ncmF5LW1pZGRsZSBwLTJcIj5cbiAgICAgIDxwPlxuICAgICAgICBXZW5uIFNpZSBkYXMgVmlkZW8gc3RhcnRlbiwgd2VyZGVuIEluaGFsdGUgdm9uIFlvdXR1YmUgZ2VsYWRlbiB1bmQgZGFkdXJjaCBJaHJlIElQLUFkcmVzc2UgYW4gWW91dHViZVxuICAgICAgICDDvGJlcnRyYWdlbi4gV2VpdGVyZSBJbmZvcm1hdGlvbmVuIHp1bSBEYXRlbnNjaHV0eiBmaW5kZW4gU2llXG4gICAgICAgIDxhIGNsYXNzPVwidGV4dC1icC1ibHVlIGhvdmVyOnVuZGVybGluZVwiIGhyZWY9XCJ7ZHNndm9MaW5rKCl9XCI+aGllcjwvYT4uXG4gICAgICA8L3A+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibS1hdXRvIGhvdmVyOmN1cnNvci1wb2ludGVyIGZsZXggZ2FwLTIgY29udGVudC1jZW50ZXIgdGV4dC1icC1ibHVlLWRhcmsgaG92ZXI6dGV4dC1icC1ibHVlIGRhcms6dGV4dC13aGl0ZSB0ZXh0LTV4bFwiXG4gICAgICAgI
41HJvbGU9XCJidXR0b25cIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICBvbjpjbGljaz17KCkgPT4ge3Nob3dZb3V0dWJlID0gdHJ1ZX19XG4gICAgICAgIG9uOmtleXByZXNzPXsoKSA9PiB7c2hvd1lvdXR1YmUgPSB0cnVlfX1cbiAgICAgID48aSBjbGFzcz1cImZhLWJyYW5kcyBmYS1zcXVhcmUteW91dHViZVwiPjwvaT48c3Bhbj5WaWRlbyBzdGFydGVuPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBqdXN0aWZ5LWxlZnRcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwie2J0bkNzc30gcmVsYXRpdmUgaW5saW5lLWZsZXggaC02IHctMTEgZmxleC1zaHJpbmstMCBjdXJzb3ItcG9pbnRlciByb3VuZGVkLWZ1bGwgYm9yZGVyLTIgYm9yZGVyLXRyYW5zcGFyZW50IHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTIwMCBlYXNlLWluLW91dCBmb2N1czpvdXRsaW5lLW5vbmUgZm9jdXM6cmluZy0yIGZvY3VzOnJpbmctaW5kaWdvLTUwMCBmb2N1czpyaW5nLW9mZnNldC0yXCJcbiAgICAgICAgICByb2xlPVwic3dpdGNoXCJcbiAgICAgICAgICBhcmlhLWNoZWNrZWQ9XCJmYWxzZVwiXG4gICAgICAgICAgb246Y2xpY2s9eygpID0+IHt0b2dnbGUoKX19XG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5FaW5zdGVsbHVuZyBzZXR6ZW48L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ7c3BhbjF9IHBvaW50ZXItZXZlbnRzLW5vbmUgcmVsYXRpdmUgaW5saW5lLWJsb2NrIGgtNSB3LTUgdHJhbnNmb3JtIHJvdW5kZWQtZnVsbCBiZy13aGl0ZSB0ZXh0LWJsYWNrIHNoYWRvdyByaW5nLTAgdHJhbnNpdGlvbiBkdXJhdGlvbi0yMDAgZWFzZS1pbi1vdXRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3NwYW4yfSBhYnNvbHV0ZSBpbnNldC0wIGZsZXggaC1mdWxsIHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1vcGFjaXR5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTMgdy0zIHRleHQtZ3JheS00MDBcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQgOGwyLTJtMCAwbDItMk02IDZMNCA0bTIgMmwyIDJcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwie3NwYW4zfSBhYnNvbHV0ZSBpbnNldC0wIGZsZXggaC1mdWxsIHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1vcGFjaXR5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTMgdy0zIHRleHQtaW5kaWdvLTYwMFwiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCI+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zLjcwNyA1LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwxLjQxNC0xLjQxNHpNNSA4bC0uNzA3LjcwN2ExIDEgMCAwMDEuNDE0IDBMNSA4em00LjcwNy0zLjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNGwxLjQxNCAxLjQxNHptLTcuNDE0IDJsMiAyIDEuNDE0LTEuNDE0LTItMi0xLjQxNCAxLjQxNHptMy40MTQgMmw0LTQtMS40MTQtMS40MTQtNCA0IDEuNDE0IDEuNDE0elwiLz5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPHNwYW4+WW91VHViZSBWaWRlb3MgenVrw7xuZnRpZyBpbW1lciBsYWRlbjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB7L2lmfVxuXG4gIHsjaWYgY29weXJpZ2h0ICYmIHNob3dfY29weXJpZ2h0fVxuICAgIDxkaXYgY2xhc3M9XCJjb3B5cmlnaHRcIj4mY29weTsge2NvcHlyaWdodH08L2Rpdj5cbiAgey9pZn1cbjwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgZXhwb3J0IGxldCBjb3B5cmlnaHQgPSBudWxsXG4gIGV4cG9ydCBsZXQgYXV0b3BsYXkgPSAwXG4gIGV4cG9ydCBsZXQgdGl0bGUgPSBudWxsXG4gIGV4cG9ydCBsZXQgdHlwZSA9ICdhdWRpby9tcGVnJ1xuICBleHBvcnQgbGV0IHNyYyA9IG51bGxcbiAgZXhwb3J0IGxldCBmaWxlID0gbnVsbFxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJjb21wb25lbnQtYXVkaW8gZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxuICB7I2lmIGF1dG9wbGF5fVxuICAgIDxhdWRpbyB0aXRsZT1cInt0aXRsZX1cIiBwcmVsb2FkPVwibWV0YWRhdGFcIiBjb250cm9scyBhdXRvcGxheT5cbiAgICAgIDxzb3VyY2Ugc3JjPVwie3NyY31cIiB0eXBlPVwie3R5cGV9XCI+XG4gICAgICA8YSBocmVmPVwie2ZpbGV9XCI+e2ZpbGV9PC9hPlxuICAgICAgSWhyIEJyb3dzZXIgdW50ZXJzdMO8dHp0IGRhcyBBdWRpbyBFbGVtZW50IG5pY2h0LlxuICAgIDwvYXVkaW8+XG4gIHs6ZWxzZX1cbiAgICA8YXVkaW8gdGl0bGU9XCJ7dGl0bGV9XCIgcHJlbG9hZD1cIm1ldGFkYXRhXCIgY29udHJvbHM+XG4gICAgICA8c291cmNlIHNyYz1cIntzcmN9XCIgdHlwZT1cInt0eXBlfVwiPlxuICAgICAgPGEgaHJlZj1cIntmaWxlfVwiPntmaWxlfTwvYT5cbiAgICAgIElociBCcm93c2VyIHVudGVyc3TDvHR6dCBkYXMgQXVkaW8gRWxlbWVudCBuaWNodC5cbiAgICA8L2F1ZGlvPlxuICB7L2lmfVxuXG4gIHsjaWYgY29weXJpZ2h0fVxuICAgIDxkaXYgY2xhc3M9XCJjb3B5cmlnaHRcIj4mY29weTsge2NvcHlyaWdodH08L2Rpdj5cbiAgey9pZn1cbjwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgZXhwb3J0IGxldCBzcmMgPSBudWxsXG4gIGV4cG9ydCBsZXQgY29weXJpZ2h0ID0gbnVsbFxuICBleHBvcnQgbGV0IHNob3dfY29weXJpZ2h0ID0gMFxuICBleHBvcnQgbGV0IHNpemUgPSAnMjUlJ1xuICBleHBvcnQgbGV0IHRpdGxlID0gbnVsbFxuICBleHBvcnQgbGV0IHR5cGUgPSAndmlkZW8vbXA0J1xuICBleHBvcnQgbGV0IGF1dG9wbGF5ID0gMFxuICBleHBvcnQgbGV0IHN1YnRpdGxlID0gbnVsbFxuICAvLyBleHBvcnQgbGV0IGFsdCA9IG51bGxcbiAgLy8gZXhwb3J0IGxldCBmaWxlID0gbnVsbFxuXG4gIGNvbnN0IHZpZGVvc2l6ZSA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdzaXplID0gc2l6ZS5yZXBsYWNlKCclJywgJycpXG4gICAgc2l6ZSA9IG5ld3NpemVcbiAgICBpZiAoc2l6ZSA9PT0gJ2Z1bGwnKSB7XG4gICAgICByZXR1cm4gJ3ctZnVsbCdcbiAgICB9IGVsc2UgaWYgKHNpemUudG9TdHJpbmc
41oKSA9PT0gJzIwJykge1xuICAgICAgcmV0dXJuICdzbTp3LTEvNSdcbiAgICB9IGVsc2UgaWYgKHNpemUudG9TdHJpbmcoKSA9PT0gJzI1Jykge1xuICAgICAgcmV0dXJuICdzbTp3LTEvNCdcbiAgICB9IGVsc2UgaWYgKHNpemUudG9TdHJpbmcoKSA9PT0gJzMzJykge1xuICAgICAgcmV0dXJuICdzbTp3LTEvMydcbiAgICB9IGVsc2UgaWYgKHNpemUudG9TdHJpbmcoKSA9PT0gJzUwJykge1xuICAgICAgcmV0dXJuICdzbTp3LTEvMidcbiAgICB9IGVsc2UgaWYgKHNpemUudG9TdHJpbmcoKSA9PT0gJzY2Jykge1xuICAgICAgcmV0dXJuICdzbTp3LTIvMydcbiAgICB9IGVsc2UgaWYgKHNpemUudG9TdHJpbmcoKSA9PT0gJzc1Jykge1xuICAgICAgcmV0dXJuICdzbTp3LTMvNCdcbiAgICB9XG4gIH1cbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwiY29tcG9uZW50LXZpZGVvIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTIge3ZpZGVvc2l6ZSgpfVwiPlxuICB7I2lmIGF1dG9wbGF5fVxuICAgIDx2aWRlbyB3aWR0aD1cIjEwMCVcIiB0aXRsZT1cInt0aXRsZX1cIiBwcmVsb2FkPVwibWV0YWRhdGFcIiBjb250cm9scyBhdXRvcGxheT5cbiAgICAgIDxzb3VyY2Ugc3JjPVwie3NyY31cIiB0eXBlPVwie3R5cGV9XCI+XG4gICAgICA8dHJhY2sgbGFiZWw9XCJEZXV0c2NoXCIga2luZD1cImNhcHRpb25zXCIgc3JjbGFuZz1cImRlXCIgc3JjPVwie3N1YnRpdGxlfVwiPlxuICAgICAgPHRyYWNrIGxhYmVsPVwiRGV1dHNjaFwiIGtpbmQ9XCJzdWJ0aXRsZXNcIiBzcmNsYW5nPVwiZGVcIiBzcmM9XCJ7c3VidGl0bGV9XCI+XG4gICAgICBJaHIgQnJvd3NlciB1bnRlcnN0w7x0enQgZGFzIFZpZGVvIEVsZW1lbnQgbmljaHQuXG4gICAgPC92aWRlbz5cbiAgezplbHNlfVxuICAgIDx2aWRlbyB3aWR0aD1cIjEwMCVcIiB0aXRsZT1cInt0aXRsZX1cIiBwcmVsb2FkPVwibWV0YWRhdGFcIiBjb250cm9scz5cbiAgICAgIDxzb3VyY2Ugc3JjPVwie3NyY31cIiB0eXBlPVwie3R5cGV9XCI+XG4gICAgICA8dHJhY2sgbGFiZWw9XCJEZXV0c2NoXCIga2luZD1cImNhcHRpb25zXCIgc3JjbGFuZz1cImRlXCIgc3JjPVwie3N1YnRpdGxlfVwiPlxuICAgICAgPHRyYWNrIGxhYmVsPVwiRGV1dHNjaFwiIGtpbmQ9XCJzdWJ0aXRsZXNcIiBzcmNsYW5nPVwiZGVcIiBzcmM9XCJ7c3VidGl0bGV9XCI+XG4gICAgICA8dHJhY2sga2luZD1cImNhcHRpb25zXCIvPlxuICAgICAgSWhyIEJyb3dzZXIgdW50ZXJzdMO8dHp0IGRhcyBWaWRlbyBFbGVtZW50IG5pY2h0LlxuICAgIDwvdmlkZW8+XG4gIHsvaWZ9XG5cbiAgeyNpZiBjb3B5cmlnaHQgJiYgc2hvd19jb3B5cmlnaHR9XG4gICAgPGRpdiBjbGFzcz1cImNvcHlyaWdodFwiPiZjb3B5OyB7Y29weXJpZ2h0fTwvZGl2PlxuICB7L2lmfVxuPC9kaXY+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQgSGVhZGxpbmUgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvSGVhZGxpbmUuc3ZlbHRlJ1xuICBpbXBvcnQgWW91dHViZSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9Zb3V0dWJlLnN2ZWx0ZSdcbiAgaW1wb3J0IEF1ZGlvIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L0F1ZGlvLnN2ZWx0ZSdcbiAgaW1wb3J0IFZpZGVvIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L1ZpZGVvLnN2ZWx0ZSdcblxuICBleHBvcnQgbGV0IG1lZGlhID0gbnVsbFxuICAvLyBleHBvcnQgbGV0IGFuY2hvciA9IG51bGxcbiAgZXhwb3J0IGxldCBoZWFkbGluZSA9IG51bGxcbiAgZXhwb3J0IGxldCBkYXRhID0ge31cblxuICBjb25zdCBjb21wb25lbnRzID0gW1xuICAgIHtpZDogJ3lvdXR1YmUnLCBjb21wb25lbnQ6IFlvdXR1YmV9LFxuICAgIHtpZDogJ2F1ZGlvJywgY29tcG9uZW50OiBBdWRpb30sXG4gICAge2lkOiAndmlkZW8nLCBjb21wb25lbnQ6IFZpZGVvfVxuICBdXG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImNvbXBvbmVudC1tZWRpYSBncmlkIGdyaWQtY29scy0xIGdhcC04XCI+XG4gICAgeyNpZiBoZWFkbGluZX1cbiAgICAgIDxIZWFkbGluZSB7Li4uaGVhZGxpbmV9Lz5cbiAgICB7L2lmfVxuXG4gICAgeyNpZiBjb21wb25lbnRzLmZpbmQodHlwZSA9PiB0eXBlLmlkID09PSBtZWRpYSl9XG4gICAgICA8c3ZlbHRlOmNvbXBvbmVudFxuICAgICAgICB0aGlzPXtjb21wb25lbnRzLmZpbmQodHlwZSA9PiB0eXBlLmlkID09PSBtZWRpYSkuY29tcG9uZW50fVxuICAgICAgICB7Li4uZGF0YX1cbiAgICAgID48L3N2ZWx0ZTpjb21wb25lbnQ+XG4gICAgezplbHNlfVxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPktvbXBvbmVudGUge21lZGlhfSBuaWNodCBnZWZ1bmRlbjwvZGl2PlxuICAgIHsvaWZ9XG4gIDwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IFRleHRJbWFnZSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9UZXh0SW1hZ2Uuc3ZlbHRlJ1xuICBpbXBvcnQgTGlua2xpc3QgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvTGlua2xpc3Quc3ZlbHRlJ1xuICBpbXBvcnQgTWVkaWEgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvTWVkaWEuc3ZlbHRlJ1xuXG4gIGV4cG9ydCBsZXQgYmxvY2tzID0gW11cblxuICBjb25zdCBjb21wb25lbnRzID0gW1xuICAgIHtpZDogJ3RibCcsIGNvbXBvbmVudDogVGV4dEltYWdlfSxcbiAgICB7aWQ6ICdsbGQnLCBjb21wb25lbnQ6IExpbmtsaXN0fSxcbiAgICB7aWQ6ICdtZWQnLCBjb21wb25lbnQ6IE1lZGlhfVxuICBdXG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImNvbXBvbmVudC1hY2NvcmRpb24gZ3JpZCBncmlkLWNvbHMtMSBnYXAtMVwiPlxuICB7I2VhY2ggYmxvY2tzIGFzIGJsb2NrfVxuICAgIDxkZXRhaWxzXG4gICAgICBjbGFzcz1cImJvcmRlciBib3JkZXItYnAtZ3JheS1taWRkbGUgYmctYnAtZ3JheS1saWdodCBkYXJrOmJnLWJsYWNrIHRleHQtYmxhY2sgZGFyazp0ZXh0LXdoaXRlIGR1cmF0aW9uLTUwMFwiXG4gICAgICBvcGVuPVwie2Jsb2NrLm9wZW59XCJcbiAgICA+XG4gICAgICA8c3VtbWFyeSBjbGFzcz1cImJnLWluaGVyaXQgcHktMiBweC00IGN1cnNvci1wb2ludGVyIGhvdmVyOnRleHQtYnAtYmx1ZVwiPntibG9jay5pdGVtfTwvc3VtbWFyeT5cbiAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBkYXJrOmJnLWJsYWNrIGJsb2NrIHAtNCB0ZXh0LWJsYWNrIGRhcms6dGV4dC13aGl0ZVwiPlxuICAgICAgICB7I2lmIGNvbXBvbmVudHMuZmluZCh0eXBlID0+IHR5cGUuaWQgPT09IGJsb2NrLnR5cGUpfVxuICAgICAgICAgIDxzdmVsdGU6Y29tcG9uZW50XG4gICAgICAgICAgICB0aGlzPXtjb21wb25lbnRzLmZpbmQodHlwZSA9PiB0eXBlLmlkID09PSBibG9jay50eXBlKS5jb21wb25lbnR9XG4gICAgICAgICAgICBsaXN0dHlwZT1cIntibG9jay50eXBlfVwiIHsuLi5ibG9ja31cbiAgICAgICAgICA+PC9zdmVsdGU6Y29tcG9uZW50PlxuICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPktvbXBvbmVudGUge2Jsb2NrLnR5cGV9IG5pY2h0IGdlZnVuZGVuPC9kaXY+XG4gICAgICAgI
41HsvaWZ9XG4gICAgICA8L2Rpdj5cbiAgICA8L2RldGFpbHM+XG4gIHsvZWFjaH1cbjwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IEhlYWRsaW5lIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L0hlYWRsaW5lLnN2ZWx0ZSdcblxuICBleHBvcnQgbGV0IHRleHQgPSBudWxsXG4gIGV4cG9ydCBsZXQgbGluayA9IG51bGxcbiAgZXhwb3J0IGxldCBzaXplID0gbnVsbFxuICBleHBvcnQgbGV0IGRlc2MgPSBudWxsXG4gIGV4cG9ydCBsZXQgdHlwZSA9IG51bGxcbiAgZXhwb3J0IGxldCBoZWFkbGluZSA9IG51bGxcbiAgZXhwb3J0IGxldCB0YXJnZXQgPSAnX2JsYW5rJ1xuICBleHBvcnQgbGV0IGludGFibGUgPSBmYWxzZVxuICBleHBvcnQgbGV0IGJsb2NrcyA9IFtdXG5cbiAgYmxvY2tzLnVuc2hpZnQoe1xuICAgIHNpemUsXG4gICAgdGV4dCxcbiAgICB0YXJnZXQsXG4gICAgdHlwZSxcbiAgICBkZXNjLFxuICAgIGxpbmssXG4gIH0pXG5cbiAgY29uc3QgZmlsZV90eXBlcyA9IFtcbiAgICB7aWQ6ICdqcGcnLCBpY29uOiAnaW1hZ2UnLCBkZXNjOiAnSlBHIEJpbGQnfSxcbiAgICB7aWQ6ICdzdmcnLCBpY29uOiAnaW1hZ2UnLCBkZXNjOiAnU1ZHIEJpbGQnfSxcbiAgICB7aWQ6ICdwbmcnLCBpY29uOiAnaW1hZ2UnLCBkZXNjOiAnUE5HIEJpbGQnfSxcbiAgICB7aWQ6ICdtcDMnLCBpY29uOiAnYXVkaW8nLCBkZXNjOiAnTVAzIEF1ZGlvJ30sXG4gICAge2lkOiAnYWFjJywgaWNvbjogJ2F1ZGlvJywgZGVzYzogJ0FBQyBBdWRpbyd9LFxuICAgIHtpZDogJ20yYScsIGljb246ICdhdWRpbycsIGRlc2M6ICdNMkEgQXVkaW8nfSxcbiAgICB7aWQ6ICdtNGEnLCBpY29uOiAnYXVkaW8nLCBkZXNjOiAnTTRBIEF1ZGlvJ30sXG4gICAge2lkOiAnbXA0JywgaWNvbjogJ3ZpZGVvJywgZGVzYzogJ01QNCBWaWRlbyd9LFxuICAgIHtpZDogJ3BkZicsIGljb246ICdwZGYnLCBkZXNjOiAnUERGIERva3VtZW50J30sXG4gICAge2lkOiAnZG9jeCcsIGljb246ICd3b3JkJywgZGVzYzogJ1dvcmQgRG9rdW1lbnQnfSxcbiAgICB7aWQ6ICd4bHN4JywgaWNvbjogJ2V4Y2VsJywgZGVzYzogJ0V4Y2VsIERva3VtZW50J30sXG4gICAge2lkOiAncHB0eCcsIGljb246ICdwb3dlcnBvaW50JywgZGVzYzogJ1Bvd2VycG9pbnQgRG9rdW1lbnQnfVxuICBdXG5cbiAgY29uc3QgZ2V0RmlsZVR5cGVJbmZvID0gKHR5cGUsIGluZm8pID0+IHtcbiAgICBjb25zdCBmdCA9IGZpbGVfdHlwZXMuZmluZChmaWxlX3R5cGUgPT4gZmlsZV90eXBlLmlkID09PSB0eXBlKVxuICAgIHJldHVybiBmdFtpbmZvXVxuICB9XG5cbiAgY29uc3QgZm9ybWF0RmlsZVNpemUgPSAoYnl0ZXMsIGRtID0gMikgPT4ge1xuICAgIGlmIChieXRlcyA9PT0gMCkgcmV0dXJuICcwIEJ5dGVzJ1xuXG4gICAgY29uc3QgayA9IDEwMDBcbiAgICBjb25zdCBzaXplcyA9IFsnQnl0ZXMnLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXVxuICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKVxuXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArICcgJyArIHNpemVzW2ldXG4gIH1cblxuICBjb25zdCBncmlkQ29scyA9ICgpID0+IHtcbiAgICBsZXQgY29scyA9IFsnZ3JpZC1jb2xzLTEnXVxuXG4gICAgaWYgKCFpbnRhYmxlICYmIGJsb2Nrcy5sZW5ndGggPiAxKSB7XG4gICAgICBjb2xzLnB1c2goJ3NtOmdyaWQtY29scy0yJylcbiAgICAgIGlmIChibG9ja3MubGVuZ3RoID4gMikge1xuICAgICAgICBjb2xzLnB1c2goJ21kOmdyaWQtY29scy0zJylcbiAgICAgIH1cbiAgICAgIGlmIChibG9ja3MubGVuZ3RoID4gMykge1xuICAgICAgICBjb2xzLnB1c2goJ2xnOmdyaWQtY29scy00JylcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29scy5qb2luKCcgJylcbiAgfVxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJjb21wb25lbnQtZG93bmxvYWRzIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLThcIj5cbiAgeyNpZiBoZWFkbGluZX1cbiAgICA8SGVhZGxpbmUgey4uLmhlYWRsaW5lfS8+XG4gIHsvaWZ9XG5cbiAgPGRpdiBjbGFzcz1cImdyaWQge2dyaWRDb2xzKCl9IGdhcC0yXCI+XG4gICAgeyNlYWNoIGJsb2NrcyBhcyBibG9ja31cbiAgICAgIDxhXG4gICAgICAgIGNsYXNzPVwiZ3JpZCBncmlkLXJvd3MtMyBnYXAtMSBwLTIgdGV4dC1icC1ibHVlIGRhcms6dGV4dC13aGl0ZSBob3Zlcjp1bmRlcmxpbmUgYm9yZGVyIGJvcmRlci1icC1ncmF5LW1pZGRsZSBob3ZlcjpzaGFkb3ctbWRcIlxuICAgICAgICBocmVmPVwie2Jsb2NrLmxpbmt9XCJcbiAgICAgICAgdGFyZ2V0PVwie2Jsb2NrLnRhcmdldH1cIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgdGl0bGU9XCJ7YmxvY2subGluay5zcGxpdCgnLycpLnBvcCgpfSBoZXJ1bnRlcmxhZGVuXCJcbiAgICAgICAgZG93bmxvYWQ9XCJ7YmxvY2subGluay5zcGxpdCgnLycpLnBvcCgpfVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGdhcC0xIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtM3hsIGZhLXNvbGlkIGZhLWZpbGUte2dldEZpbGVUeXBlSW5mbyhibG9jay50eXBlLCAnaWNvbicpfVwiXG4gICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmxpbmUtYmxvY2tcIj57YmxvY2sudGV4dH08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14c1wiPntnZXRGaWxlVHlwZUluZm8oYmxvY2sudHlwZSwgJ2Rlc2MnKX06IHtmb3JtYXRGaWxlU2l6ZShibG9jay5zaXplKX08L2Rpdj5cbiAgICAgICAgeyNpZiBibG9jay5kZXNjfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdC0xIGJvcmRlci10IGJvcmRlci1icC1ncmF5LW1pZGRsZVwiPlxuICAgICAgICAgICAge2Jsb2NrLmRlc2N9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgI
41HsvaWZ9XG4gICAgICA8L2E+XG4gICAgey9lYWNofVxuICA8L2Rpdj5cbjwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IEhlYWRsaW5lIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L0hlYWRsaW5lLnN2ZWx0ZSdcblxuICBleHBvcnQgbGV0IGhlYWRsaW5lID0gbnVsbFxuICBleHBvcnQgbGV0IGJsb2NrcyA9IFtdXG5cbiAgY29uc3QgaWNvbkNvbG9yID0gKGJsdWUgPSBmYWxzZSkgPT4ge1xuICAgIHJldHVybiAoYmx1ZSAhPT0gZmFsc2UpID8gJ3RleHQtYnAtYmx1ZScgOiAndGV4dC1ibGFjaydcbiAgfVxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJjb21wb25lbnQtaWNvbi10ZXh0IGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLThcIj5cbiAgeyNpZiBoZWFkbGluZX1cbiAgICA8SGVhZGxpbmUgc2l6ZT1cImg1XCIgYnBibHVlIHsuLi5oZWFkbGluZX0vPlxuICB7L2lmfVxuXG4gIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIGdhcC00XCI+XG4gICAgeyNlYWNoIGJsb2NrcyBhcyBibG9ja31cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0yIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy1bMjRweF0gaC1bMjRweF1cIj5cbiAgICAgICAgICB7I2lmIGJsb2NrLmljb25fdHlwZSA9PT0gJ2ljb24nfVxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIHtpY29uQ29sb3IoYmxvY2suaWNvbl9ibHVlKX0ge2Jsb2NrLmljb25fbGlzdF9pY29ufVwiXG4gICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIiB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgezplbHNlfVxuICAgICAgICAgICAgPGltZyBzcmM9XCJ7YmxvY2suaWNvbl9saXN0X2ljb259XCIgYWx0PVwie2Jsb2NrLmljb25fbGlzdF90aXRsZX1cIiByb2xlPVwicHJlc2VudGF0aW9uXCIgdGFiaW5kZXg9XCItMVwiLz5cbiAgICAgICAgICB7L2lmfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgeyNpZiBibG9jay5pY29uX2xpc3RfaHJlZn1cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJwLWJsdWUgZGFyazp0ZXh0LXdoaXRlIGhvdmVyOnVuZGVybGluZVwiXG4gICAgICAgICAgICBocmVmPVwie2Jsb2NrLmljb25fbGlzdF9ocmVmfVwiXG4gICAgICAgICAgICB0YXJnZXQ9XCJ7YmxvY2suaWNvbl9saXN0X3RhcmdldH1cIlxuICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgPjxzcGFuPntibG9jay5pY29uX2xpc3RfdGl0bGV9PC9zcGFuPjwvYT5cbiAgICAgICAgezplbHNlfVxuICAgICAgICAgIDxzcGFuPntibG9jay5pY29uX2xpc3RfdGl0bGV9PC9zcGFuPlxuICAgICAgICB7L2lmfVxuICAgICAgPC9kaXY+XG4gICAgey9lYWNofVxuICA8L2Rpdj5cbjwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IEhlYWRsaW5lIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L0hlYWRsaW5lLnN2ZWx0ZSdcblxuICBleHBvcnQgbGV0IGhlYWRsaW5lID0gbnVsbFxuICBleHBvcnQgbGV0IHVzZV9pY29ucyA9IGZhbHNlXG4gIGV4cG9ydCBsZXQgYmxvY2tzID0gW11cblxuICBoZWFkbGluZS5pc190b2MgPSB0cnVlXG5cbiAgY29uc3QgcmVuZGVySFRNTCA9IChlbnRyeSkgPT4ge1xuICAgIHJldHVybiBgPCR7ZW50cnkuc2l6ZX0+PGEgY2xhc3M9XCJ0ZXh0LWJwLWJsdWUgaG92ZXI6dW5kZXJsaW5lXCIgaHJlZj1cIiR7ZW50cnkuaHJlZn1cIj4ke2VudHJ5LnRpdGxlfTwvYT48LyR7ZW50cnkuc2l6ZX0+YFxuICB9XG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImNvbXBvbmVudC1hdXRvdG9jIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLThcIj5cbiAgeyNpZiBoZWFkbGluZX1cbiAgICA8SGVhZGxpbmUgey4uLmhlYWRsaW5lfS8+XG4gIHsvaWZ9XG5cbiAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTJcIj5cbiAgICB7I2VhY2ggYmxvY2tzIGFzIGVudHJ5fVxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgIHsjaWYgdXNlX2ljb25zfVxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2lyY2xlIHRleHQtWzAuM3JlbV0gbXItMlwiPjwvaT5cbiAgICAgICAgey9pZn1cbiAgICAgICAge0BodG1sIHJlbmRlckhUTUwoZW50cnkpfVxuICAgICAgPC9kaXY+XG4gICAgey9lYWNofVxuICA8L2Rpdj5cbjwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgY29uc3Qgb3B0aW9ucyA9IHttZXRob2Q6ICdHRVQnLCBoZWFkZXJzOiB7J0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJ319XG5cbiAgZXhwb3J0IGxldCBkc3RvZzJzID0gJzA5MDAwMDAwMDAwMDAnXG4gIGV4cG9ydCBsZXQgZHN0aW5mbyA9IG51bGxcblxuICBsZXQgZHN0ZGVzYyA9IG51bGxcbiAgbGV0IGRzdHN0ciA9IG51bGxcbiAgbGV0IGRzdGhuciA9IG51bGxcbiAgbGV0IGRzdHBseiA9IG51bGxcbiAgbGV0IGRzdGdtZGt0ID0gbnVsbFxuICBsZXQgZHN0bWFpbCA9IG51bGxcbiAgbGV0IGRzdHRlbGUgPSBudWxsXG4gIGxldCBkc3R0ZWxmID0gbnVsbFxuXG4gIC8vIFdpciBzdWNoZW4gZGllIHJpY2h0aWdlIERpZW5zdHN0ZWxsZSBhdXMgZGVtIEpTT05cbiAgbGV0IGRzdFxuICBhc3luYyBmdW5jdGlvbiBnZXREc3QoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgnL3NhL2RpZW5zdHN0ZWxsZW4vZGllbnN0c3RlbGxlbi5qc29uJywgb3B0aW9ucylcbiAgICBjb25zdCBqc29uID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG5cbiAgICBkc3QgPSBqc29uLmZpbmQoZHN0ID0+IGRzdC5kc3RvZzJzID09PSBkc3RvZzJzKVxuXG4gICAgZHN0ZGVzYyA9IGRzdC5kc3RkZXNjXG4gICAgZHN0c3RyID0gZHN0LmRzdHN0clxuICAgIGRzdGhuciA9IGRzdC5kc3RobnJcbiAgICBkc3RwbHogPSBkc3QuZHN0cGx6XG4gICAgZHN0Z21ka3QgPSBkc3QuZHN0Z21ka3RcbiAgICBkc3RtYWlsID0gZHN0LmRzdG1haWxcbiAgICBkc3R0ZWxlID0gZHN0LmRzdHRlbGVcbiAgICBkc3R0ZWxmID0gZHN0LmRzdHRlbGZcbiAgfVxuXG4gIGdldERzdCgpXG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImNvbXBvbmVudC1jb250YWN0IGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLTFcIj5cbiAgPGRpdj57ZHN0ZGVzY308L2Rpdj5cbiAgPGRpdj57ZHN0c3RyfSB7ZHN0aG5yfTwvZGl2PlxuICA8ZGl2Pntkc3RwbHp9IHtkc3RnbWRrdH08L2Rpdj5cbiAgPGRpdj5cbiAgICA8aSBjbGFzcz1cIm1yLTIgZmEtc29saWQgZmEtcGhvbmUgdGV4dC1icC1ibHVlIGRhcms6dGV4dC13aGl0ZVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIiB0YWJpbmRleD1cIi0xXCI+PC9pPntkc3R0ZWxlfVxuICA8L2Rpdj5cbiAgPGRpdj5cbiAgICA8aSBjbGFzcz1cIm1yLTIgZmEtc29saWQgZmEtZmF4IHRleHQtYnAtYmx1ZSBkYXJrOnRleHQtd2hpdGVcIiByb2xlPVwicHJlc2VudGF0aW9uXCIgdGFiaW5kZXg9XCItMVwiPjwvaT57ZHN0dGVsZn1cbiAgPC9kaXY+XG4gIHsjaWYgZHN0aW5mb31cbiAgICA8ZGl2PntAaHRtbCBkc3RpbmZvfTwvZGl2PlxuICB7L2lmfVxuPC9kaXY+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQgSGVhZGxpbmUgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvSGVhZGxpbmUuc3ZlbHRlJ1xuXG4gIGV4cG9ydCBsZXQgaGVhZGxpbmUgPSBudWxsXG4gIGV4cG9ydCBsZXQgdHlwZSA9ICd1bCdcbiAgZXhwb3J0IGxldCBpY29uID0gbnVsbFxuICBleHBvcnQgbGV0IGJsb2NrcyA9IFtdXG5cbiAgJDogcGFkZGluZyA9ICh0eXBlID09PSAnZGwnKSA/ICcnIDogJ3BsLTQnXG5cbiAgY29uc3QgZ2V0U3R5bGUgPSAoKSA9PiB7XG4gICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgc3F1YXJlOiAnbGlzdC1bc3F1YXJlXScsXG4gICAgICBkaXNjOiAnbGlzdC1bZGlzY10nLFxuICAgICAgY2lyY2xlOiAnbGlzdC1bY2lyY2xlXScsXG4gICAgICBkZWNpbWFsOiAnbGlzdC1bZGVjaW1hbF0nLFxuICAgICAgJ2xvd2VyLXJvbWFuJzogJ2xpc3QtW2xvd2VyLXJvbWFuXScsXG4gICAgICAndXBwZXItcm9tYW4nOiAnbGlzdC1bdXBwZXItcm9tYW5dJyxcbiAgICAgICdsb3dlci1sYXRpbic6ICdsaXN0LVtsb3dlci1sYXRpbl0nLFxuICAgICAgJ3VwcGVyLWxhdGluJzogJ2xpc3QtW3VwcGVyLWxhdGluXSdcbiAgICB9XG5cbiAgICByZXR1cm4gKGljb24pID8gW3N0eWxlc1tpY29uXV0uam9pbignICcpIDogJydcbiAgfVxuXG4gIGNvbnN0IHJlbmRlckhUTUwgPSAoKSA9PiB7XG4gICAgbGV0IGh0bWwgPSAnJ1xuXG4gICAgaWYgKHR5cGUgPT09ICdkbCcpIHtcbiAgICAgIGh0bWwgPSBgPGRsIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPmBcbiAgICAgIGJsb2Nrcy5tYXAoZW50cnkgPT4ge1xuICAgICAgICBodG1sICs9IGA8ZGl2IGNsYXNzPVwiZGwtZW50cnlcIj5gXG4gICAgICAgIGh0bWwgKz0gYDxkdCBjbGFzcz1cInVuZGVybGluZVwiPiR7ZW50cnkuaXRlbX08L2R0PmBcbiAgICAgICAgaH
41RtbCArPSBgPGRkPiR7ZW50cnkuaXRlbV9kZH08L2RkPmBcbiAgICAgICAgaHRtbCArPSBgPC9kaXY+YFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgaHRtbCA9IGA8JHt0eXBlfSByb2xlPVwibGlzdFwiIGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMiAke2dldFN0eWxlKCl9XCI+YFxuICAgICAgYmxvY2tzLm1hcChlbnRyeSA9PiB7XG4gICAgICAgIGh0bWwgKz0gYDxsaSBjbGFzcz1cIiR7dHlwZX0tZW50cnlcIiByb2xlPVwicHJlc2VudGF0aW9uXCIgdGFiaW5kZXg9XCItMVwiPiR7ZW50cnkuaXRlbX08L2xpPmBcbiAgICAgIH0pXG4gICAgfVxuICAgIGh0bWwgKz0gYDwvJHt0eXBlfT5gXG5cbiAgICByZXR1cm4gaHRtbFxuICB9XG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImNvbXBvbmVudC1saXN0IGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLThcIj5cbiAgeyNpZiBoZWFkbGluZX1cbiAgICA8SGVhZGxpbmUgey4uLmhlYWRsaW5lfS8+XG4gIHsvaWZ9XG5cbiAgPGRpdiBjbGFzcz1cIntwYWRkaW5nfVwiPlxuICAgIHtAaHRtbCByZW5kZXJIVE1MKCl9XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuICA6Z2xvYmFsKHVsLCBvbCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDA7XG4gICAgbWFyZ2luLWlubGluZS1lbmQ6IDA7XG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiAxZW07XG4gICAgbWFyZ2luLWJsb2NrLWVuZDogMWVtO1xuICAgIHBhZGRpbmctaW5saW5lLXN0YXJ0OiAxZW07XG4gIH1cbiAgOmdsb2JhbChkZCkge1xuICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IDFlbTtcbiAgfVxuPC9zdHlsZT4iLCI8c2NyaXB0PlxuICBpbXBvcnQgVGV4dEltYWdlIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L1RleHRJbWFnZS5zdmVsdGUnXG4gIGltcG9ydCBBY2NvcmRpb24gZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvQWNjb3JkaW9uLnN2ZWx0ZSdcbiAgaW1wb3J0IERvd25sb2FkcyBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9Eb3dubG9hZHMuc3ZlbHRlJ1xuICBpbXBvcnQgSGVhZGxpbmUgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvSGVhZGxpbmUuc3ZlbHRlJ1xuICBpbXBvcnQgTGlua2xpc3QgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvTGlua2xpc3Quc3ZlbHRlJ1xuICBpbXBvcnQgQ29udGFjdCBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9Db250YWN0LnN2ZWx0ZSdcbiAgaW1wb3J0IExpc3QgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvTGlzdC5zdmVsdGUnXG5cbiAgZXhwb3J0IGxldCBzZWxlY3Rpb24gPSBudWxsXG4gIGV4cG9ydCBsZXQgbmFtZSA9IG51bGxcblxuICBjb25zdCBjb21wb25lbnRzID0gW1xuICAgIHtpZDogJ3RleHRibG9jay1pbWFnZScsIGNvbXBvbmVudDogVGV4dEltYWdlfSxcbiAgICB7aWQ6ICdhY2NvcmRpb24nLCBjb21wb25lbnQ6IEFjY29yZGlvbn0sXG4gICAge2lkOiAnZG93bmxvYWQnLCBjb21wb25lbnQ6IERvd25sb2Fkc30sXG4gICAge2lkOiAnbGlua2xpc3QnLCBjb21wb25lbnQ6IExpbmtsaXN0fSxcbiAgICB7aWQ6ICdjb250YWN0JywgY29tcG9uZW50OiBDb250YWN0fSxcbiAgICB7aWQ6ICdsaXN0JywgY29tcG9uZW50OiBMaXN0fVxuICBdXG5cbiAgbGV0IGluZm9kYXRhXG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0RGF0YSgpIHtcbiAgICBpZiAoIXNlbGVjdGlvbikgcmV0dXJuXG5cbiAgICBjb25zdCBvcHRpb25zID0ge21ldGhvZDogJ0dFVCcsIGhlYWRlcnM6IHsnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nfX1cbiAgICBsZXQgcmVzcCA9IGF3YWl0IGZldGNoKHNlbGVjdGlvbiwgb3B0aW9ucylcblxuICAgIGlmIChyZXNwLm9rKSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVzcC5qc29uKClcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZmxleG1vZHVsZToge25hbWU6IG51bGx9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW5mb2RhdGEgPSBnZXREYXRhKClcbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtMlwiPlxuICB7I2lmIG5hbWV9XG4gICAgPEhlYWRsaW5lIHNpemU9XCJoNVwiIHRpdGxlPVwie25hbWV9XCIgYnBibHVlLz5cbiAgey9pZn1cblxuICB7I2F3YWl0IGluZm9kYXRhfVxuICAgIDxwPkVpbmVuIGtsZWluZW4gTW9tZW50IGJpdHRlLi4uPC9wPlxuICB7OnRoZW4gZGF0YX1cbiAgICA8ZGl2IGNsYXNzPVwiZmxleG1vZHVsLXtkYXRhLmZsZXhtb2R1bGUubmFtZX1cIj5cbiAgICAgIHsjaWYgY29tcG9uZW50cy5maW5kKHR5cGUgPT4gdHlwZS5pZCA9PT0gZGF0YS5mbGV4bW9kdWxlLm5hbWUpfVxuICAgICAgICA8c3ZlbHRlOmNvbXBvbmVudFxuICAgICAgICAgIHRoaXM9e2NvbXBvbmVudHMuZmluZCh0eXBlID0+IHR5cGUuaWQgPT09IGRhdGEuZmxleG1vZHVsZS5uYW1lKS5jb21wb25lbnR9XG4gICAgICAgICAgey4uLmRhdGEuZmxleG1vZHVsZS5wcm9wc31cbiAgICAgICAgPjwvc3ZlbHRlOmNvbXBvbmVudD5cbiAgICAgIHs6ZWxzZX1cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPktvbXBvbmVudGUge2RhdGEuZmxleG1vZHVsZS5uYW1lfSBuaWNodCBnZWZ1bmRlbjwvZGl2PlxuICAgICAgey9pZn1cbiAgICA8L2Rpdj5cbiAgezpjYXRjaCBlcnJvcn1cbiAgICA8cCBzdHlsZT1cImNvbG9yOiByZWRcIj57ZXJyb3IubWVzc2FnZX08L3A+XG4gIHsvYXdhaXR9XG5cbjwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IHthbGxvd1R3aXR0ZXJDb29raWVzU3RvcmV9IGZyb20gJ0BsYXlvdXQvc3RvcmVzL21haW5zdG9yZS5qcydcblxuICBsZXQgdHdDaGVjayA9IGZhbHNlXG4gIGFsbG93VHdpdHRlckNvb2tpZXNTdG9yZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgIHR3Q2hlY2sgPSB2YWx1ZTtcbiAgfSk7XG4gICQ6IHNob3dUd2l0dGVyID0gdHdDaGVja1xuXG4gIGV4cG9ydCBsZXQgdXJsID0gbnVsbFxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJjb21wb25lbnQtdHdpdHRlclwiPlxuICB7I2lmIHNob3dUd2l0dGVyfVxuICAgIDxhXG4gICAgICBjbGFzcz1cInR3aXR0ZXItdGltZWxpbmVcIlxuICAgICAgZGF0YS1sYW5nPVwiZGVcIlxuICAgICAgZGF0YS1oZWlnaHQ9XCIxMDAwXCJcbiAgICAgIGRhdGEtZG50PVwidHJ1ZVwiXG4gICAgICBocmVmPVwie3VybH1cIlxuICAgID5sYWRlIFR3ZWV0cy4uLjwvYT5cbiAgezplbHNlfVxuICAgIDxwIGNsYXNzPVwibS0wXCI+XG4gICAgICB
41BdWYgdW5zZXJlciBXZWJzaXRlIHdlcmRlbiDigJ5Ud2VldHPigJwgYXVzIFR3aXR0ZXIgZWluZ2VidW5kZW4sIHVtIElobmVuIHJlbGV2YW50ZSBJbmhhbHRlIGF1cyBkaWVzZW0gTmV0endlcmtcbiAgICAgIGFuenViaWV0ZW4uIFdpciBiZW7DtnRpZ2VuIGlocmUgWnVzdGltbXVuZywgdW0gSW5oYWx0ZSBhdXMgVHdpdHRlciB2b24gQFBvbGl6ZWlCYXllcm4gYW56ZWlnZW4genUga8O2bm5lbi5cbiAgICAgIDxici8+XG4gICAgICBEaWVzZXIgU2VydmljZSBrYW5uIERhdGVuIMO8YmVyIElocmUgQWt0aXZpdMOkdGVuIHNhbW1lbG4uPGJyLz48YnIvPlxuICAgICAgw5xiZXIgZGllIENvb2tpZS1FaW5zdGVsbHVuZ2VuIGvDtm5uZW4gU2llIGlocmUgWnVzdGltbXVuZyBlcnRlaWxlbi5cbiAgICA8L3A+XG4gIHsvaWZ9XG48L2Rpdj4iLCI8aHIgY2xhc3M9XCJ0ZXh0LWJwLWdyYXktbWlkZGxlIGJnLWJwLWdyYXktbWlkZGxlIGgtWzFweF1cIiByb2xlPVwicHJlc2VudGF0aW9uXCIgdGFiaW5kZXg9XCItMVwiLz4iLCI8c2NyaXB0PlxuICBpbXBvcnQgSGVhZGxpbmUgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvSGVhZGxpbmUuc3ZlbHRlJ1xuXG4gIGV4cG9ydCBsZXQgbWVkaWEgPSBudWxsXG4gIGV4cG9ydCBsZXQgaGVhZGxpbmUgPSB7fVxuICBleHBvcnQgbGV0IGl3ZTIgPSBudWxsXG4gIGV4cG9ydCBsZXQgZGF0YSA9IG51bGxcblxuICBjb25zdCBqdXN0aWZpY2F0aW9uID0gKCkgPT4ge1xuICAgIGxldCBqdXN0eSA9ICdqdXN0aWZ5LXN0YXJ0J1xuXG4gICAgaWYgKGRhdGEuanVzdGlmaWNhdGlvbiA9PT0gJ3RleHQtY2VudGVyJykge1xuICAgICAganVzdHkgPSAnanVzdGlmeS1jZW50ZXInXG4gICAgfSBlbHNlIGlmIChkYXRhLmp1c3RpZmljYXRpb24gPT09ICd0ZXh0LXJpZ2h0Jykge1xuICAgICAganVzdHkgPSAnanVzdGlmeS1lbmQnXG4gICAgfVxuXG4gICAgcmV0dXJuIGp1c3R5XG4gIH1cbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwiY29tcG9uZW50LWVtYmVkIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLThcIj5cbiAgeyNpZiBoZWFkbGluZX1cbiAgICA8SGVhZGxpbmUgey4uLmhlYWRsaW5lfS8+XG4gIHsvaWZ9XG5cbiAgeyNpZiBtZWRpYSA9PT0gJ2NvZGUnfVxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGVtYmVkLWNvZGVcIj5cbiAgICAgIHtAaHRtbCBpd2UyfVxuICAgIDwvZGl2PlxuICB7OmVsc2V9XG4gICAgPGRpdiBjbGFzcz1cImZsZXgge2p1c3RpZmljYXRpb24oKX1cIj5cbiAgICAgIDxpZnJhbWVcbiAgICAgICAgdGl0bGU9XCJpRnJhbWVcIlxuICAgICAgICBzcmM9XCJ7ZGF0YS5zcmN9XCJcbiAgICAgICAgd2lkdGg9XCJ7ZGF0YS53aWR0aH1cIlxuICAgICAgICBoZWlnaHQ9XCJ7ZGF0YS5oZWlnaHR9XCJcbiAgICAgID48L2lmcmFtZT5cbiAgICA8L2Rpdj5cbiAgey9pZn1cblxuICB7bWVkaWF9XG48L2Rpdj5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCBUZXh0SW1hZ2UgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvVGV4dEltYWdlLnN2ZWx0ZSdcbiAgaW1wb3J0IERvd25sb2FkcyBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9Eb3dubG9hZHMuc3ZlbHRlJ1xuICBpbXBvcnQgTGlua2xpc3QgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvTGlua2xpc3Quc3ZlbHRlJ1xuICBpbXBvcnQgQ29udGFjdCBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9Db250YWN0LnN2ZWx0ZSdcbiAgaW1wb3J0IEltYWdlIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L0ltYWdlLnN2ZWx0ZSdcblxuICBjb25zdCBjb21wb25lbnRzID0gW1xuICAgIHtpZDogJ2NlbGxEb3dubG9hZCcsIGNvbXBvbmVudDogRG93bmxvYWRzfSxcbiAgICB7aWQ6ICdjZWxsQ29udGFjdCcsIGNvbXBvbmVudDogQ29udGFjdH0sXG4gICAge2lkOiAnY2VsbFRleHQnLCBjb21wb25lbnQ6IFRleHRJbWFnZX0sXG4gICAge2lkOiAnY2VsbExpbmsnLCBjb21wb25lbnQ6IExpbmtsaXN0fSxcbiAgICB7aWQ6ICdjZWxsSW1hZ2UnLCBjb21wb25lbnQ6IEltYWdlfVxuICBdXG5cbiAgZXhwb3J0IGxldCBjb250ZW50ID0gbnVsbFxuXG4gIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGNvbnRlbnQpIHx8IHt9XG4gIC8vIGNvbnNvbGUubG9nKCdUYWJlbGxlOiAnLCBkYXRhKVxuXG4gIC8vIENTUyBmw7xyIGRpZSBUYWJlbGxlXG4gIGNvbnN0IHRhYmxlX2NzcyA9ICgpID0+IHtcbiAgICBsZXQgY3NzX2NsYXNzZXMgPSBbXVxuXG4gICAgaWYgKGRhdGEud2lkdGggPT09ICdhdXRvJykge1xuICAgICAgY3NzX2NsYXNzZXMucHVzaCgndGFibGUtYXV0bycpXG4gICAgfSBlbHNlIGlmIChwYXJzZUludChkYXRhLndpZHRoKSA9PT0gNTApIHtcbiAgICAgIGNzc19jbGFzc2VzLnB1c2goJ3ctMS8yJylcbiAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGRhdGEud2lkdGgpID09PSA2MCkge1xuICAgICAgY3NzX2NsYXNzZXMucHVzaCgndy0zLzUnKVxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZGF0YS53aWR0aCkgPT09IDcwKSB7XG4gICAgICBjc3NfY2xhc3Nlcy5wdXNoKCd3LTcvMTAnKVxuICAgIH0gZWxzZSBpZiAocGFyc2VJbnQoZGF0YS53aWR0aCkgPT09IDgwKSB7XG4gICAgICBjc3NfY2xhc3Nlcy5wdXNoKCd3LTQvNScpXG4gICAgfSBlbHNlIGlmIChwYXJzZUludChkYXRhLndpZHRoKSA9PT0gOTApIHtcbiAgICAgIGNzc19jbGFzc2VzLnB1c2goJ3ctOS8xMCcpXG4gICAgfSBlbHNlIGlmIChwYXJzZUludChkYXRhLndpZHRoKSA9PT0gMTAwKSB7XG4gICAgICBjc3NfY2xhc3Nlcy5wdXNoKCd3LWZ1bGwnKVxuICAgIH1cblxuICAgIGlmIChkYXRhLmJvcmRlciAhPT0gJ25vbmUnKSB7XG4gICAgICBjc3NfY2xhc3Nlcy5wdXNoKCdib3JkZXIgYm9yZGVyLWNvbGxhcHNlIGJvcmRlci1icC1ncmF5LW1pZGRsZScpXG4gICAgICBpZiAoZGF0YS5ib3JkZXIgPT09ICdtaWRkbGUnKSB7XG4gICAgICAgIGNzc19jbGFzc2VzLnB1c2goJ2JvcmRlci0yJylcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5ib3JkZXIgPT09ICd0aGljaycpIHtcbiAgICAgICAgY3NzX2NsYXNzZXMucHVzaCgnYm9yZGVyLTQnKVxuICAgICAgfVxuICAgIH1cblxuICAgI
41HJldHVybiBjc3NfY2xhc3Nlcy5qb2luKCcgJylcbiAgfVxuXG4gIC8vIENTUyBmw7xyIGRlbiBUYWJlbGxlbmtvcGZcbiAgY29uc3QgdGhfY3NzID0gKGNvbCkgPT4ge1xuICAgIGxldCBjc3NfY2xhc3NlcyA9IFtdXG5cbiAgICBpZiAoZGF0YS5ib3JkZXIgIT09ICdub25lJykge1xuICAgICAgY3NzX2NsYXNzZXMucHVzaCgnYm9yZGVyIGJvcmRlci1icC1ncmF5LW1pZGRsZScpXG4gICAgICBpZiAoZGF0YS5ib3JkZXIgPT09ICdtaWRkbGUnKSB7XG4gICAgICAgIGNzc19jbGFzc2VzLnB1c2goJ2JvcmRlci0yJylcbiAgICAgIH0gZWxzZSBpZiAoZGF0YS5ib3JkZXIgPT09ICd0aGljaycpIHtcbiAgICAgICAgY3NzX2NsYXNzZXMucHVzaCgnYm9yZGVyLTQnKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJzZUludChjb2wud2lkdGgpKSB7XG4gICAgICBjb25zdCB0aF93aWR0aCA9IHBhcnNlSW50KGNvbC53aWR0aClcbiAgICAgIGlmICh0aF93aWR0aCA9PT0gMCkge1xuICAgICAgICBjc3NfY2xhc3Nlcy5wdXNoKCd3LWF1dG8nKVxuICAgICAgfSBlbHNlIGlmICh0aF93aWR0aCA9PT0gNSkge1xuICAgICAgICBjc3NfY2xhc3Nlcy5wdXNoKCd3LVs1JV0nKVxuICAgICAgfSBlbHNlIGlmICh0aF93aWR0aCA9PT0gMTApIHtcbiAgICAgICAgY3NzX2NsYXNzZXMucHVzaCgndy1bMTAlXScpXG4gICAgICB9IGVsc2UgaWYgKHRoX3dpZHRoID09PSAxNSkge1xuICAgICAgICBjc3NfY2xhc3Nlcy5wdXNoKCd3LVsxNSVdJylcbiAgICAgIH0gZWxzZSBpZiAodGhfd2lkdGggPT09IDIwKSB7XG4gICAgICAgIGNzc19jbGFzc2VzLnB1c2goJ3ctWzIwJV0nKVxuICAgICAgfSBlbHNlIGlmICh0aF93aWR0aCA9PT0gMjUpIHtcbiAgICAgICAgY3NzX2NsYXNzZXMucHVzaCgndy1bMjUlXScpXG4gICAgICB9IGVsc2UgaWYgKHRoX3dpZHRoID09PSAzMCkge1xuICAgICAgICBjc3NfY2xhc3Nlcy5wdXNoKCd3LVszMCVdJylcbiAgICAgIH0gZWxzZSBpZiAodGhfd2lkdGggPT09IDM1KSB7XG4gICAgICAgIGNzc19jbGFzc2VzLnB1c2goJ3ctWzM1JV0nKVxuICAgICAgfSBlbHNlIGlmICh0aF93aWR0aCA9PT0gNDApIHtcbiAgICAgICAgY3NzX2NsYXNzZXMucHVzaCgndy1bNDAlXScpXG4gICAgICB9IGVsc2UgaWYgKHRoX3dpZHRoID09PSA0NSkge1xuICAgICAgICBjc3NfY2xhc3Nlcy5wdXNoKCd3LVs0NSVdJylcbiAgICAgIH0gZWxzZSBpZiAodGhfd2lkdGggPT09IDUwKSB7XG4gICAgICAgIGNzc19jbGFzc2VzLnB1c2goJ3ctWzUwJV0nKVxuICAgICAgfSBlbHNlIGlmICh0aF93aWR0aCA9PT0gNTUpIHtcbiAgICAgICAgY3NzX2NsYXNzZXMucHVzaCgndy1bNTUlXScpXG4gICAgICB9IGVsc2UgaWYgKHRoX3dpZHRoID09PSA2MCkge1xuICAgICAgICBjc3NfY2xhc3Nlcy5wdXNoKCd3LVs2MCVdJylcbiAgICAgIH0gZWxzZSBpZiAodGhfd2lkdGggPT09IDY1KSB7XG4gICAgICAgIGNzc19jbGFzc2VzLnB1c2goJ3ctWzY1JV0nKVxuICAgICAgfSBlbHNlIGlmICh0aF93aWR0aCA9PT0gNzApIHtcbiAgICAgICAgY3NzX2NsYXNzZXMucHVzaCgndy1bNzAlXScpXG4gICAgICB9IGVsc2UgaWYgKHRoX3dpZHRoID09PSA3NSkge1xuICAgICAgICBjc3NfY2xhc3Nlcy5wdXNoKCd3LVs3NSVdJylcbiAgICAgIH0gZWxzZSBpZiAodGhfd2lkdGggPT09IDgwKSB7XG4gICAgICAgIGNzc19jbGFzc2VzLnB1c2goJ3ctWzgwJV0nKVxuICAgICAgfSBlbHNlIGlmICh0aF93aWR0aCA9PT0gODUpIHtcbiAgICAgICAgY3NzX2NsYXNzZXMucHVzaCgndy1bODUlXScpXG4gICAgICB9IGVsc2UgaWYgKHRoX3dpZHRoID09PSA5MCkge1xuICAgICAgICBjc3NfY2xhc3Nlcy5wdXNoKCd3LVs5MCVdJylcbiAgICAgIH0gZWxzZSBpZiAodGhfd2lkdGggPT09IDk1KSB7XG4gICAgICAgIGNzc19jbGFzc2VzLnB1c2goJ3ctWzk1JV0nKVxuICAgICAgfSBlbHNlIGlmICh0aF93aWR0aCA9PT0gMTAwKSB7XG4gICAgICAgIGNzc19jbGFzc2VzLnB1c2goJ3ctZnVsbCcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNzc19jbGFzc2VzLmpvaW4oJyAnKVxuICB9XG5cbiAgLy8gQ1NTIGbDvHIgZGllIFRhYmVsbGVuemVsbGVuXG4gIGNvbnN0IHRkX2NzcyA9IChjZWxsKSA9PiB7XG4gICAgbGV0IGNzc19jbGFzc2VzID0gW11cblxuICAgIGlmIChkYXRhLmJvcmRlciAhPT0gJ25vbmUnKSB7XG4gICAgICBjc3NfY2xhc3Nlcy5wdXNoKCdib3JkZXIgYm9yZGVyLWJwLWdyYXktbWlkZGxlJylcbiAgICAgIGlmIChkYXRhLmJvcmRlciA9PT0gJ21pZGRsZScpIHtcbiAgICAgICAgY3NzX2NsYXNzZXMucHVzaCgnYm9yZGVyLTInKVxuICAgICAgfSBlbHNlIGlmIChkYXRhLmJvcmRlciA9PT0gJ3RoaWNrJykge1xuICAgICAgICBjc3NfY2xhc3Nlcy5wdXNoKCdib3JkZXItNCcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNlbGwuYWxpZ24gPT09ICdyaWdodCcpIHtcbiAgICAgIGNzc19jbGFzc2VzLnB1c2goJ3RleHQtcmlnaHQnKVxuICAgIH0gZWxzZSBpZiAoY2VsbC5hbGlnbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgIGNzc19jbGFzc2VzLnB1c2goJ3RleHQtY2VudGVyJylcbiAgICB9IGVsc2Uge1xuICAgICAgY3NzX2NsYXNzZXMucHVzaCgndGV4dC1sZWZ0JylcbiAgICB9XG5cbiAgICBpZiAoY2VsbC5jb2xvciA9PT0gJ2dyZXknKSB7XG4gICAgICBjc3NfY2xhc3Nlcy5wdXNoKCdiZy1icC1ncmF5LW1pZGRsZScpXG4gICAgfSBlbHNlIGlmIChjZWxsLmFsaWduID09PSAnbGlnaHRncmV5Jykge1xuICAgICAgY3NzX2NsYXNzZXMucHVzaCgnYmctYnAtZ3JheS1saWdodCcpXG4gICAgfSBlbHNlIGlmIChjZWxsLmFsaWduID09PSAnZGFya2dyZXknKSB7XG4gICAgICBjc3NfY2xhc3Nlcy5wdXNoKCdiZy1icC1ncmF5LWRhcmsnKVxuICAgIH1cblxuICAgIHJldHVybiBjc3NfY2xhc3Nlcy5qb2luKCcgJylcbiAgfVxuXG4gIC8vIEJpbGQtRGF0ZW4gZsO8ciBCaWxkIEtvbXBvbmVudGUgYXVmYmVyZWl0ZW5cbiAgY29uc3QgZ2V0SW1hZ2VEYXRhID0gKGNvbCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogY29sLmZpZWxkcy5pbWcudGl0bGUsXG4gICAgICBhbHQ6IGNvbC5maWVsZHMuaW1nLmFsdCxcbiAgICAgIC8vIHNpemU6ICdmdWxsJyxcbiAgICAgIHNob3dfZGVzYzogZmFsc2UsXG4gICAgICBoZXJvOiBmYWxzZSxcbiAgICAgIGp1c3RpZmljYXRpb246IG51bGwsXG4gICAgICBjb3B5cmlnaHQ6IG51bGwsXG4gICAgICB3aXRoY29weTogZmFsc2UsXG4gICAgICBkb3dubG9hZDogY29sLmZpZWxkcy5pbWcuaXNfZG93bixcbiAgICAgIHpvb206IGNvbC5maWVsZHMuaW1nLmlzX3pvb20sXG4gICAgICBpbWc6IHtcbiAgICAgICAgeHM6IGNvbC5maWVsZHMuaW1nLm5vcm0sXG4gICAgICAgI
41HNtOiBjb2wuZmllbGRzLmltZy5ub3JtLFxuICAgICAgICBtZDogKGNvbC5maWVsZHMuaW1nLnpvb20pID8gY29sLmZpZWxkcy5pbWcuem9vbSA6IGNvbC5maWVsZHMuaW1nLm5vcm0sXG4gICAgICAgIHhsOiAoY29sLmZpZWxkcy5pbWcuem9vbSkgPyBjb2wuZmllbGRzLmltZy56b29tIDogY29sLmZpZWxkcy5pbWcubm9ybSxcbiAgICAgICAgZHo6IChjb2wuZmllbGRzLmltZy5kb3duKSA/IGNvbC5maWVsZHMuaW1nLmRvd24gOiBjb2wuZmllbGRzLmltZy5ocmVmXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTGluay1EYXRlbiBmw7xyIExpbmsgS29tcG9uZW50ZSBhdWZiZXJlaXRlblxuICBjb25zdCBnZXRMaW5rRGF0YSA9IChjb2wpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbGlua3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRhcmdldDogY29sLmZpZWxkcy5hLnRhcmdldCxcbiAgICAgICAgICB0aXRsZTogY29sLmZpZWxkcy5hLnRpdGxlLFxuICAgICAgICAgIGhyZWY6IGNvbC5maWVsZHMuYS5ocmVmLFxuICAgICAgICAgIGFsdDogY29sLmZpZWxkcy5hLmRlc2NcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfVxuXG4gIC8vIERvd25sb2FkLURhdGVuIGbDvHIgRG93bmxvYWQgS29tcG9uZW50ZSBhdWZiZXJlaXRlblxuICBjb25zdCBnZXREb3dubG9hZERhdGEgPSAoY29sKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldDogY29sLmZpZWxkcy5hLnRhcmdldCxcbiAgICAgIHRleHQ6IGNvbC5maWVsZHMuYS50aXRsZSxcbiAgICAgIGxpbms6IGNvbC5maWVsZHMuYS5ocmVmLFxuICAgICAgc2l6ZTogY29sLmZpZWxkcy5hLnNpemUsXG4gICAgICBkZXNjOiBjb2wuZmllbGRzLmEuZGVzYyxcbiAgICAgIHR5cGU6IGNvbC5maWVsZHMuYS50eXBlXG4gICAgfVxuICB9XG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImNvbXBvbmVudC10YWJsZVwiPlxuICA8dGFibGUgY2xhc3M9XCJ7dGFibGVfY3NzKCl9XCI+XG4gICAgeyNpZiBkYXRhLmNhcHRpb259XG4gICAgICA8Y2FwdGlvbiBjbGFzcz1cInRhYmxlLWNhcHRpb24gdGV4dC1sZWZ0IHB5LTJcIj57ZGF0YS5jYXB0aW9ufTwvY2FwdGlvbj5cbiAgICB7L2lmfVxuXG4gICAgeyNpZiBkYXRhLmhlYWRlciAmJiBkYXRhLmhlYWRlci5yb3dzICYmIGRhdGEuaGVhZGVyLnJvd3MuY29sc31cbiAgICAgIDx0aGVhZD5cbiAgICAgIHsjZWFjaCBkYXRhLmhlYWRlci5yb3dzLmNvbHMgYXMgY29sLCBpZHh9XG4gICAgICAgIDx0aFxuICAgICAgICAgIGNsYXNzPVwicC0yIHRleHQtYmxhY2sgZGFyazp0ZXh0LXdoaXRlIGJnLWJwLWdyYXktbGlnaHQgZGFyazpiZy1ibGFjayB7dGhfY3NzKGNvbCl9XCJcbiAgICAgICAgPntjb2wudGV4dH08L3RoPlxuICAgICAgey9lYWNofVxuICAgICAgPC90aGVhZD5cbiAgICB7L2lmfVxuXG4gICAgeyNpZiBkYXRhLmJvZHkgJiYgZGF0YS5ib2R5LnJvd3N9XG4gICAgICA8dGJvZHk+XG4gICAgICB7I2VhY2ggZGF0YS5ib2R5LnJvd3MgYXMgcm93fVxuICAgICAgICA8dHI+XG4gICAgICAgICAgeyNlYWNoIHJvdy5jb2xzIGFzIGNvbH1cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImRhcms6YmctYmxhY2sgYWxpZ24tdG9wIHAtMiB7dGRfY3NzKGNvbCl9XCI+XG4gICAgICAgICAgICAgIHsjaWYgY29sLnR5cGUgPT09ICdjZWxsVGV4dCd9XG4gICAgICAgICAgICAgICAgPFRleHRJbWFnZSBpd2UyPVwie2NvbC5maWVsZHMudGV4dGFyZWF9XCIvPlxuICAgICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgICB7I2lmIGNvbC50eXBlID09PSAnY2VsbENvbnRhY3QnfVxuICAgICAgICAgICAgICAgIDxDb250YWN0IGRzdG9nMnM9XCJ7Y29sLmZpZWxkcy5vZzJzfVwiLz5cbiAgICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICAgICAgeyNpZiBjb2wudHlwZSA9PT0gJ2NlbGxJbWFnZSd9XG4gICAgICAgICAgICAgICAgPEltYWdlIHsuLi5nZXRJbWFnZURhdGEoY29sKX0vPlxuICAgICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgICB7I2lmIGNvbC50eXBlID09PSAnY2VsbExpbmsnfVxuICAgICAgICAgICAgICAgIDxMaW5rbGlzdCB7Li4uZ2V0TGlua0RhdGEoY29sKX0vPlxuICAgICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgICB7I2lmIGNvbC50eXBlID09PSAnY2VsbERvd25sb2FkJ31cbiAgICAgICAgICAgICAgICA8RG93bmxvYWRzIGludGFibGU9e3RydWV9IHsuLi5nZXREb3dubG9hZERhdGEoY29sKX0vPlxuICAgICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICB7L2VhY2h9XG4gICAgICAgIDwvdHI+XG4gICAgICB7L2VhY2h9XG4gICAgICA8L3Rib2R5PlxuICAgIHsvaWZ9XG5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48c3R5bGU+XG4gIGNhcHRpb24ge1xuICAgIGNhcHRpb24tc2lkZTogYm90dG9tO1xuICB9XG48L3N0eWxlPiIsIjxzY3JpcHQ+XG4gIGltcG9ydCBJbWFnZUdhbGxlcnkgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvSW1hZ2VHYWxsZXJ5LnN2ZWx0ZSdcbiAgaW1wb3J0IERpcmVjdGlvbnMgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvRGlyZWN0aW9ucy5zdmVsdGUnXG4gIGltcG9ydCBUZXh0SW1hZ2UgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvVGV4dEltYWdlLnN2ZWx0ZSdcbiAgaW1wb3J0IEFjY29yZGlvbiBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9BY2NvcmRpb24uc3ZlbHRlJ1xuICBpbXBvcnQgRG93bmxvYWRzIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L0Rvd25sb2Fkcy5zdmVsdGUnXG4gIGltcG9ydCBJY29uVGV4dCBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9JY29uVGV4dC5zdmVsdGUnXG4gIGltcG9ydCBIZWFkbGluZSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9IZWFkbGluZS5zdmVsdGUnXG4gIGltcG9ydCBMaW5rbGlzdCBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9MaW5rbGlzdC5zdmVsdGUnXG4gIGltcG9ydCBBdXRvVG9jIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L0F1dG9Ub2Muc3ZlbHRlJ1xuICBpbXBvcnQgQ29udGFjdCBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9Db250YWN0LnN2ZWx0ZSdcbiAgaW1wb3J0IEluZm9ib3ggZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvSW5mb2JveC5zdmVsdGUnXG4gIGltcG9ydCBUd2l0dGVyIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L1R3aXR0ZXIuc3ZlbHRlJ1xuICBpbXBvcnQgU3BhY2VyIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L1NwYWNlci5zdmVsdGUnXG4gIGltcG9ydCBNZWRpYSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9NZWRpYS5zdmVsdGUnXG4gIGltcG9ydCBFbWJlZCBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9FbWJlZC5zdmVsdGUnXG4gIGltcG9ydCBUYWJsZSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9UYWJsZS5zdmVsdGUnXG4gIGltcG9ydCBMaXN0IGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L0xpc3Quc3ZlbHRlJ1xuXG4gIGV4cG9ydCBsZXQgZmxleG1vZHVsZXMgPSBbXVxuICBleHBvcnQgbGV0IHNsb3QgPSAxXG5cbiAgY29uc3QgY29tcG9uZW50cyA9IFtcbiAgICB7aWQ6ICd0ZXh0YmxvY2staW1hZ2UnLCBjb21wb25lbnQ6IFRleHRJbWFnZX0sXG4gICAge2lkOiAnaW1hZ2VnYWxsZXJ5JywgY29tcG9uZW50OiBJbWFnZUdhbGxlcnl9LFxuICAgIHtpZD
41ogJ2RpcmVjdGlvbnMnLCBjb21wb25lbnQ6IERpcmVjdGlvbnN9LFxuICAgIHtpZDogJ2FjY29yZGlvbicsIGNvbXBvbmVudDogQWNjb3JkaW9ufSxcbiAgICB7aWQ6ICdkb3dubG9hZCcsIGNvbXBvbmVudDogRG93bmxvYWRzfSxcbiAgICB7aWQ6ICdpY29uLWxpc3QnLCBjb21wb25lbnQ6IEljb25UZXh0fSxcbiAgICB7aWQ6ICdoZWFkbGluZScsIGNvbXBvbmVudDogSGVhZGxpbmV9LFxuICAgIHtpZDogJ2xpbmtsaXN0JywgY29tcG9uZW50OiBMaW5rbGlzdH0sXG4gICAge2lkOiAnYXV0by10b2MnLCBjb21wb25lbnQ6IEF1dG9Ub2N9LFxuICAgIHtpZDogJ2NvbnRhY3QnLCBjb21wb25lbnQ6IENvbnRhY3R9LFxuICAgIHtpZDogJ2luZm9ib3gnLCBjb21wb25lbnQ6IEluZm9ib3h9LFxuICAgIHtpZDogJ3R3aXR0ZXInLCBjb21wb25lbnQ6IFR3aXR0ZXJ9LFxuICAgIHtpZDogJ3NwYWNlcicsIGNvbXBvbmVudDogU3BhY2VyfSxcbiAgICB7aWQ6ICdtZWRpYScsIGNvbXBvbmVudDogTWVkaWF9LFxuICAgIHtpZDogJ3RhYmxlJywgY29tcG9uZW50OiBUYWJsZX0sXG4gICAge2lkOiAnbWVkaWEnLCBjb21wb25lbnQ6IE1lZGlhfSxcbiAgICB7aWQ6ICdlbWJlZCcsIGNvbXBvbmVudDogRW1iZWR9LFxuICAgIHtpZDogJ2xpc3QnLCBjb21wb25lbnQ6IExpc3R9XG4gIF1cbjwvc2NyaXB0PlxuXG57I2lmIGZsZXhtb2R1bGVzLmxlbmd0aH1cbiAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLThcIj5cbiAgICB7I2VhY2ggZmxleG1vZHVsZXMgYXMgZmxleCwgaW5kZXh9XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleG1vZHVsLXtmbGV4Lm5hbWV9LXtpbmRleH1cIj5cbiAgICAgICAgeyNpZiBjb21wb25lbnRzLmZpbmQodHlwZSA9PiB0eXBlLmlkID09PSBmbGV4Lm5hbWUpfVxuICAgICAgICAgIDxzdmVsdGU6Y29tcG9uZW50XG4gICAgICAgICAgICB0aGlzPXtjb21wb25lbnRzLmZpbmQodHlwZSA9PiB0eXBlLmlkID09PSBmbGV4Lm5hbWUpLmNvbXBvbmVudH1cbiAgICAgICAgICAgIHNsb3Q9XCJ7cGFyc2VJbnQoc2xvdCl9XCJcbiAgICAgICAgICAgIG1lZGlhPVwie2ZsZXgubWVkaWF9XCIgb3JpZW50YXRpb249XCJ7ZmxleC5vcmllbnRhdGlvbn1cIiB7Li4uZmxleC5wcm9wc31cbiAgICAgICAgICA+PC9zdmVsdGU6Y29tcG9uZW50PlxuICAgICAgICB7OmVsc2V9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmVkLTUwMFwiPktvbXBvbmVudGUge2ZsZXgubmFtZX0gbmljaHQgZ2VmdW5kZW48L2Rpdj5cbiAgICAgICAgey9pZn1cbiAgICAgIDwvZGl2PlxuICAgIHsvZWFjaH1cbiAgPC9kaXY+XG57L2lmfSIsIjxzY3JpcHQ+XG4gIGltcG9ydCBIZWFkbGluZSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9IZWFkbGluZS5zdmVsdGUnXG4gIGltcG9ydCB7cGFnZWRhdGEsIG5hdmlkYXRhfSBmcm9tICdAbGF5b3V0L2JwLWxpYi5qcydcblxuICBjb25zdCBjb2xvcnMgPSB7XG4gICAgJyNGRkZGRkYnOiAnYmctd2hpdGUnLFxuICAgICcjMDA4REM5JzogJ2JnLWJwLWJsdWUnLFxuICAgICcjRjBGNUZBJzogJ2JnLWJwLWJsdWUtbGlnaHQnLFxuICAgICcjMkQ1QTk2JzogJ2JnLWJwLWJsdWUtbWlkZGxlJyxcbiAgICAnIzE0M0M2OSc6ICdiZy1icC1ibHVlLWRhcmsnLFxuICAgICcjRjBGMEYwJzogJ2JnLWJwLWdyYXktbGlnaHQnLFxuICAgICcjRENEQ0RDJzogJ2JnLWJwLWdyYXktbWlkZGxlJyxcbiAgICAnIzQxNDE0Mic6ICdiZy1icC1ncmF5LWRhcmsnXG4gIH1cblxuICBjb25zdCBnZXRCZ0NvbG9yID0gKGZsZXgpID0+IHtcbiAgICByZXR1cm4gKGZsZXguYm94X2NvbG9yKSA/IGNvbG9yc1tmbGV4LmJveF9jb2xvci50b1VwcGVyQ2FzZSgpXSA6ICdiZy13aGl0ZSdcbiAgfVxuXG4gIGNvbnN0IGJ0blRleHQgPSAoZmxleCkgPT4ge1xuICAgIHJldHVybiAoZmxleC5jb250aW51ZSAmJiBmbGV4LmNvbnRpbnVlLmxlbmd0aCkgPyBmbGV4LmNvbnRpbnVlIDogJ1dlaXRlcidcbiAgfVxuXG4gIGNvbnN0IG1heEdyaWRDb2xzID0gKGNudCkgPT4ge1xuICAgIGlmICghbmF2aWRhdGEpIHtcbiAgICAgIHJldHVybiAnbWQ6Z3JpZC1jb2xzLVsxZnJdJ1xuICAgIH1cblxuICAgIGlmIChjbnQgPiAyKSB7XG4gICAgICByZXR1cm4gJ21kOmdyaWQtY29scy1bMWZyXzFmcl8xZnJdJ1xuICAgIH0gZWxzZSBpZiAoY250ID09PSAyKSB7XG4gICAgICByZXR1cm4gJ21kOmdyaWQtY29scy1bMWZyXzFmcl0nXG4gICAgfSBlbHNlIGlmIChjbnQgPT09IDEpIHtcbiAgICAgIHJldHVybiAnbWQ6Z3JpZC1jb2xzLVsxZnJdJ1xuICAgIH1cbiAgfVxuPC9zY3JpcHQ+XG5cbnsjaWYgbmF2aWRhdGEgJiYgbmF2aWRhdGEuY2hpbGRyZW4gJiYgbmF2aWRhdGEuY2hpbGRyZW4ubGVuZ3RofVxuICB7I2VhY2ggbmF2aWRhdGEuY2hpbGRyZW4gYXMgZ3JvdXAsIGluZGV4fVxuICAgIHsjaWYgZ3JvdXAuY2hpbGRyZW4gJiYgZ3JvdXAuY2hpbGRyZW4ubGVuZ3RofVxuICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktOFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS0yXCI+XG4gICAgICAgICAgPEhlYWRsaW5lXG4gICAgICAgICAgICBvcmllbnRhdGlvbj1cInRleHQtY2VudGVyXCJcbiAgICAgICAgICAgIGNzcz1cIlwiXG4gICAgICAgICAgICBpY29uPVwie2dyb3VwLmljb259XCJcbiAgICAgICAgICAgIHRpdGxlPVwie2dyb3VwLnRpdGxlfVwiXG4gICAgICAgICAgICBzaXplPVwiaDJcIlxuICAgICAgICAgICAgYnBibHVlPVwie2dyb3VwLmJwYmx1ZSA9PT0gJ29uJ31cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgeyNpZiAoZ3JvdXAudGVhc2VyKX1cbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57Z3JvdXAudGVhc2VyfTwvcD5cbiAgICAgICAgICB7L2lmfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1mbG93LXJvdy1kZW5zZSBncmlkLWNvbHMtWzFmcl0geHM6Z3JpZC1jb2xzLVsxZnJfMWZyXSBtZDpncmlkLWNvbHMtWzFmcl8xZnJfMWZyXSBnYXAtOFwiPlxuICAgICAgICAgIHsjZWFjaCBncm91cC5jaGlsZHJlbiBhcyBmbGV4fVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImdyb3VwLXtpbmRleH0gY29udGFjdC1lbnRyeSB7Z2V0QmdDb2xvcihmbGV4KX0gZGFyazpiZy1ibGFjayBob3ZlcjpzaGFkb3ctbGcgYm9yZGVyIGJvcmRlci1icC1ncmF5LW1pZGRsZVwiPlxuICAgICAgICAgICAgICB7I2lmIGZsZXguaHJlZiAmJiAhcGFnZWRhdGEuaXNfcHJldmlld31cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgaHJlZj1cIntmbGV4LmhyZWZ9XCJcbiAgICAgICAgICAgICAgICAgI
41HRhcmdldD1cIntmbGV4LnRhcmdldH1cIlxuICAgICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgICB0aXRsZT1cInp1ciBTZWl0ZSB7ZmxleC5ocmVmfSB3ZWNoc2VsblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgaC1mdWxsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZmlndXJlIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBoLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIntmbGV4LnRlYXNlcl9pbWd9XCIgYWx0PVwie2ZsZXgudGVhc2VyX2ltZ19hbHR9XCIgcm9sZT1cInByZXNlbnRhdGlvblwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7I2lmIChmbGV4LnRlYXNlcl9pbWdfdGl0bGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtMiBmbGV4LW5vbmUgdGV4dC14cyB0ZXh0LWJwLWdyYXktZGFyayBkYXJrOnRleHQtd2hpdGUgYmctYnAtZ3JheS1saWdodCBkYXJrOmJnLWJsYWNrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtmbGV4LnRlYXNlcl9pbWdfdGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgeyNpZiAoZmxleC5kb2N1bWVudF9zb3VyY2UpfVxuICAgICAgICAgICAgICAgICAgICAgIDxmaWdjYXB0aW9uIGNsYXNzPVwidGV4dC14cyB0ZXh0LWJwLWdyYXktZGFyayBkYXJrOnRleHQtd2hpdGUgcC0yXCI+e2ZsZXguZG9jdW1lbnRfc291cmNlfTwvZmlnY2FwdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgey9pZn1cbiAgICAgICAgICAgICAgICAgICAgPEhlYWRsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgY3NzPVwicC0yIHRleHQtYmxhY2sgZGFyazp0ZXh0LXdoaXRlIGZsZXgtbm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7ZmxleC50aXRsZX1cIlxuICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJoM1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgZ3Jvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1iYXNlIG1iLTJcIj57ZmxleC50ZWFzZXJ9PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBmbGV4LW5vbmUgdGV4dC1icC1ibHVlLWRhcmsgZGFyazp0ZXh0LXdoaXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2ZsZXguY29udGludWV9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9maWd1cmU+XG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICB7L2lmfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgey9lYWNofVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIHsvaWZ9XG4gIHsvZWFjaH1cbnsvaWZ9XG4iLCJpbXBvcnQgeyBjdWJpY091dCB9IGZyb20gJy4uL2Vhc2luZy9pbmRleC5qcyc7XG5pbXBvcnQgeyBpc19mdW5jdGlvbiB9IGZyb20gJy4uL2ludGVybmFsL2luZGV4LmpzJztcblxuLyoqXG4gKiBUaGUgZmxpcCBmdW5jdGlvbiBjYWxjdWxhdGVzIHRoZSBzdGFydCBhbmQgZW5kIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQgYW5kIGFuaW1hdGVzIGJldHdlZW4gdGhlbSwgdHJhbnNsYXRpbmcgdGhlIHggYW5kIHkgdmFsdWVzLlxuICogYGZsaXBgIHN0YW5kcyBmb3IgW0ZpcnN0LCBMYXN0LCBJbnZlcnQsIFBsYXldKGh0dHBzOi8vYWVyb3R3aXN0LmNvbS9ibG9nL2ZsaXAteW91ci1hbmltYXRpb25zLykuXG4gKlxuICogaHR0cHM6Ly9zdmVsdGUuZGV2L2RvY3Mvc3ZlbHRlLWFuaW1hdGUjZmxpcFxuICogQHBhcmFtIHtFbGVtZW50fSBub2RlXG4gKiBAcGFyYW0ge3sgZnJvbTogRE9NUmVjdDsgdG86IERPTVJlY3QgfX0gZnJvbVRvXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9wdWJsaWMuanMnKS5GbGlwUGFyYW1zfSBwYXJhbXNcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vcHVibGljLmpzJykuQW5pbWF0aW9uQ29uZmlnfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmxpcChub2RlLCB7IGZyb20sIHRvIH0sIHBhcmFtcyA9IHt9KSB7XG5cdGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcblx0Y29uc3QgdHJhbnNmb3JtID0gc3R5bGUudHJhbnNmb3JtID09PSAnbm9uZScgPyAnJyA6IHN0eWxlLnRyYW5zZm9ybTtcblx0Y29uc3QgW294LCBveV0gPSBzdHlsZS50cmFuc2Zvcm1PcmlnaW4uc3BsaXQoJyAnKS5tYXAocGFyc2VGbG9hdCk7XG5cdGNvbnN0IGR4ID0gZnJvbS5sZWZ0ICsgKGZyb20ud2lkdGggKiBveCkgLyB0by53aWR0aCAtICh0by5sZWZ0ICsgb3gpO1xuXHRjb25zdCBkeSA9IGZyb20udG9wICsgKGZyb20uaGVpZ2h0ICogb3kpIC8gdG8uaGVpZ2h0IC0gKHRvLnRvcCArIG95KTtcblx0Y29uc3QgeyBkZWxheSA9IDAsIGR1cmF0aW9uID0gKGQpID0+IE1hdGguc3FydChkKSAqIDEyMCwgZWFzaW5nID0gY3ViaWNPdXQgfSA9IHBhcmFtcztcblx0cmV0dXJuIHtcblx0XHRkZWxheSxcblx0XHRkdXJhdGlvbjogaXNfZnVuY3Rpb24oZHVyYXRpb24pID8gZHVyYXRpb24oTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KSkgOiBkdXJhdGlvbixcblx0XHRlYXNpbmcsXG5cdFx0Y3NzOiAodCwgdSkgPT4ge1xuXHRcdFx0Y29uc3QgeCA9IHUgKiBkeDtcblx0XHRcdGNvbnN0IHkgPSB1ICogZHk7XG5cdFx0XHRjb25zdCBzeCA9IHQgKyAodSAqIGZyb20ud2lkdGgpIC8gdG8ud2lkdGg7XG5cdFx0XHRjb25zdCBzeSA9IHQgKyAodSAqIGZyb20uaGVpZ2h0KSAvIHRvLmhlaWdodDtcblx0XHRcdHJldHVybiBgdHJhbnNmb3JtOiAke3RyYW5zZm9ybX0gdHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KSBzY2FsZSgke3N4fSwgJHtzeX0pO2A7XG5cdFx0fVxuXHR9O1xufVxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IHsgZmxpcCB9IGZyb20gXCJzdmVsdGUvYW5pbWF0ZVwiXG4gIGltcG9ydCB7
41IGZhZGUgfSBmcm9tIFwic3ZlbHRlL3RyYW5zaXRpb25cIlxuICBpbXBvcnQge2FmdGVyVXBkYXRlfSBmcm9tICdzdmVsdGUnXG5cbiAgLy8gdGhlIGxpc3Qgb2YgaXRlbXMgIHRoZSB1c2VyIGNhbiBzZWxlY3QgZnJvbVxuICBleHBvcnQgbGV0IGl0ZW1zID0gW11cblxuICAvKipcbiAgICogZnVuY3Rpb24gdG8gdXNlIHRvIGdldCBhbGwgaXRlbXMgKGFsdGVybmF0aXZlIHRvIHByb3ZpZGluZyBpdGVtcylcbiAgICogQHR5cGUge2Jvb2xlYW58ZnVuY3Rpb259XG4gICAqL1xuICBleHBvcnQgbGV0IHNlYXJjaEZ1bmN0aW9uID0gZmFsc2VcblxuICAvLyBmaWVsZCBvZiBlYWNoIGl0ZW0gdGhhdCdzIHVzZWQgZm9yIHRoZSBsYWJlbHMgaW4gdGhlIGxpc3RcbiAgZXhwb3J0IGxldCBsYWJlbEZpZWxkTmFtZSA9IHVuZGVmaW5lZFxuICBleHBvcnQgbGV0IGtleXdvcmRzRmllbGROYW1lID0gbGFiZWxGaWVsZE5hbWVcbiAgZXhwb3J0IGxldCB2YWx1ZUZpZWxkTmFtZSA9IHVuZGVmaW5lZFxuXG4gIGV4cG9ydCBsZXQgbGFiZWxGdW5jdGlvbiA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKGl0ZW0gPT09IHVuZGVmaW5lZCB8fCBpdGVtID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gXCJcIlxuICAgIH1cbiAgICByZXR1cm4gbGFiZWxGaWVsZE5hbWUgPyBpdGVtW2xhYmVsRmllbGROYW1lXSA6IGl0ZW1cbiAgfVxuXG4gIGV4cG9ydCBsZXQga2V5d29yZHNGdW5jdGlvbiA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKGl0ZW0gPT09IHVuZGVmaW5lZCB8fCBpdGVtID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gXCJcIlxuICAgIH1cbiAgICByZXR1cm4ga2V5d29yZHNGaWVsZE5hbWUgPyBpdGVtW2tleXdvcmRzRmllbGROYW1lXSA6IGxhYmVsRnVuY3Rpb24oaXRlbSlcbiAgfVxuXG4gIGV4cG9ydCBsZXQgdmFsdWVGdW5jdGlvbiA9IGZ1bmN0aW9uIChpdGVtLCBmb3JjZVNpbmdsZSA9IGZhbHNlKSB7XG4gICAgaWYgKGl0ZW0gPT09IHVuZGVmaW5lZCB8fCBpdGVtID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gaXRlbVxuICAgIH1cbiAgICBpZiAoIW11bHRpcGxlIHx8IGZvcmNlU2luZ2xlKSB7XG4gICAgICByZXR1cm4gdmFsdWVGaWVsZE5hbWUgPyBpdGVtW3ZhbHVlRmllbGROYW1lXSA6IGl0ZW1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGl0ZW0ubWFwKChpKSA9PiAodmFsdWVGaWVsZE5hbWUgPyBpW3ZhbHVlRmllbGROYW1lXSA6IGkpKVxuICAgIH1cbiAgfVxuXG4gIGV4cG9ydCBsZXQga2V5d29yZHNDbGVhbkZ1bmN0aW9uID0gZnVuY3Rpb24gKGtleXdvcmRzKSB7XG4gICAgcmV0dXJuIGtleXdvcmRzXG4gIH1cblxuICBleHBvcnQgbGV0IHRleHRDbGVhbkZ1bmN0aW9uID0gZnVuY3Rpb24gKHVzZXJFbnRlcmVkVGV4dCkge1xuICAgIHJldHVybiB1c2VyRW50ZXJlZFRleHRcbiAgfVxuXG4gIC8vIGV2ZW50c1xuICBleHBvcnQgbGV0IGJlZm9yZUNoYW5nZSA9IGZ1bmN0aW9uIChvbGRTZWxlY3RlZEl0ZW0sIG5ld1NlbGVjdGVkSXRlbSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgZXhwb3J0IGxldCBvbkNoYW5nZSA9IGZ1bmN0aW9uIChuZXdTZWxlY3RlZEl0ZW0pIHt9XG4gIGV4cG9ydCBsZXQgb25Gb2N1cyA9IGZ1bmN0aW9uICgpIHt9XG4gIGV4cG9ydCBsZXQgb25CbHVyID0gZnVuY3Rpb24gKCkge31cbiAgZXhwb3J0IGxldCBvbkNyZWF0ZSA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIm9uQ3JlYXRlOiBcIiArIHRleHQpXG4gICAgfVxuICB9XG5cbiAgLy8gQmVoYXZpb3VyIHByb3BlcnRpZXNcbiAgZXhwb3J0IGxldCBzZWxlY3RGaXJzdElmRW1wdHkgPSBmYWxzZVxuICBleHBvcnQgbGV0IG1pbkNoYXJhY3RlcnNUb1NlYXJjaCA9IDFcbiAgZXhwb3J0IGxldCBtYXhJdGVtc1RvU2hvd0luTGlzdCA9IDBcbiAgZXhwb3J0IGxldCBtdWx0aXBsZSA9IGZhbHNlXG4gIGV4cG9ydCBsZXQgY3JlYXRlID0gZmFsc2VcblxuICAvLyBpZ25vcmVzIHRoZSBhY2NlbnRzIHdoZW4gbWF0Y2hpbmcgaXRlbXNcbiAgZXhwb3J0IGxldCBpZ25vcmVBY2NlbnRzID0gdHJ1ZVxuXG4gIC8vIGFsbCB0aGUgaW5wdXQga2V5d29yZHMgc2hvdWxkIGJlIG1hdGNoZWQgaW4gdGhlIGl0ZW0ga2V5d29yZHNcbiAgZXhwb3J0IGxldCBtYXRjaEFsbEtleXdvcmRzID0gdHJ1ZVxuXG4gIC8vIHNvcnRzIHRoZSBpdGVtcyBieSB0aGUgbnVtYmVyIG9mIG1hdGNoaW5rIGtleXdvcmRzXG4gIGV4cG9ydCBsZXQgc29ydEJ5TWF0Y2hlZEtleXdvcmRzID0gZmFsc2VcblxuICAvLyBhbGxvdyB1c2VycyB0byB1c2UgYSBjdXN0b20gaXRlbSBmaWx0ZXIgZnVuY3Rpb25cbiAgZXhwb3J0IGxldCBpdGVtRmlsdGVyRnVuY3Rpb24gPSB1bmRlZmluZWRcblxuICAvLyBhbGxvdyB1c2VycyB0byB1c2UgYSBjdXN0b20gaXRlbSBzb3J0IGZ1bmN0aW9uXG4gIGV4cG9ydCBsZXQgaXRlbVNvcnRGdW5jdGlvbiA9IHVuZGVmaW5lZFxuXG4gIC8vIGRvIG5vdCBhbGxvdyByZS1zZWxlY3Rpb24gYWZ0ZXIgaW5pdGlhbCBzZWxlY3Rpb25cbiAgZXhwb3J0IGxldCBsb2NrID0gZmFsc2VcblxuICAvLyBkZWxheSB0byB3YWl0IGFmdGVyIGEga2V5cHJlc3MgdG8gc2VhcmNoIGZvciBuZXcgaXRlbXNcbiAgZXhwb3J0IGxldCBkZWxheSA9IDBcblxuICAvLyB0cnVlIHRvIHBlcmZvcm0gbG9jYWwgZmlsdGVyaW5nIG9mIGl0ZW1zLCBldmVuIGlmIHNlYXJjaEZ1bmN0aW9uIGlzIHByb3ZpZGVkXG4gIGV4cG9ydCBsZXQgbG9jYWxGaWx0ZXJpbmcgPSB0cnVlXG5cbiAgLy8gdHJ1ZSB0byBwZXJmb3JtIGxvY2FsIHNvcnR5aW5nIG9mIGl0ZW1zXG4gIGV4cG9ydCBsZXQgbG9jYWxTb3J0aW5nID0gdHJ1ZVxuXG4gIC8vIHRydWUgdG8gY2xlYW4gdGhlIHVzZXIgZW50ZXJlZCB0ZXh0IChyZW1vdmVzIHNwYWNlcylcbiAgZXhwb3J0IGxldCBjbGVhblVzZXJUZXh0ID0gdHJ1ZVxuXG4gIC8vIHRydWUgdG8gbG93ZXJjYXNlIHRoZSBrZXl3b3JkcyBkZXJpdmVkIGZyb20gZWFjaCBpdGVtIChsb3dlcmNhc2UpXG4gIGV4cG9ydCBsZXQgbG93ZXJjYXNlS2V5d29yZHMgPSB0cnVlXG5cbiAgLy8gdHJ1ZSB0byBjbG9zZSB0aGUgZHJvcGRvd24gd2hlbiB0aGUgY29tcG9uZW50IGxvc2VzIGZvY3VzXG4gIGV4cG9ydCBsZXQgY2xvc2VPbkJsdXIgPSBmYWxzZVxuXG4gIC8vIHRydWUgdG8gYWxsb3cgc2VsZWN0aW9uIHJlb3JkZXJpbmcgYnkgZHJhZyBhbmQgZHJvcCwgbmVlZHMgbXVsdGlwbGUgdG8gdHJ1ZVxuICBleHBvcnQgbGV0IG9yZGVyYWJsZVNlbGVjdGlvbiA9IGZhbHNlXG5cbiAgLy8gVUkgcHJvcGVydGllc1xuXG4gIC8vIG9wdGlvbiB0byBoaWRlIHRoZSBkcm9wZG93biBhcnJvd1xuICBleHBvcnQgbGV0IGhpZGVBcnJvdyA9IGZhbHNlXG5cbiAgLy8gb3B0aW9uIHRvIHNob3cgY2xlYXIgc2VsZWN0aW9uIGJ1dHRvblxuICBleHBvcnQgbGV0IHNob3dDbGVhciA9IGZhbHNlXG5cbiAgLy8gdGV4dCB0byB1c2UgZm9yIGNsZWFyXG4gIGV4cG9ydCBsZXQgY2xlYXJUZXh0ID0gXCImIzEwMDA2O1wiXG5cbiAgLy8gb3B0aW9uIHRvIHNob3cgbG9hZGluZyBpbmRpY2F0b3Igd2hlbiB0aGUgYXN5bmMgZnVuY3Rpb24gaXMgZXhlY3V0ZWRcbiAgZXhwb3J0IGxldCBzaG93TG9hZGluZ0luZGljYXRvciA9IGZhbHNlXG5cbiAgLy8gdGV4dCBkaXNwbGF5ZWQgd2hlbiBubyBpdGVtcyBtYXRjaCB0aGUgaW5wdXQgdGV4dFxuICBleHBvcnQgbGV0IG5vUmVzdWx0c1RleHQgPSBcIk5vIHJlc3VsdHMgZm91bmRcIlxuXG4gIC8vIHRleHQgZGlzcGxheWVkIHdoZW4gYXN5bmMgZGF0YSBpcyBiZWluZyBsb2FkZWRcbiAgZXhwb3J0IGxldCBsb2FkaW5nVGV4dCA9IFwiTG9hZGluZyByZXN1bHRzLi4uXCJcblxuICAvLyB0ZXh0IGRpc3BsYXllZCB3aGVuIHRoZSB1c2VyIHRleHQgbWF0Y2hlcyBhIGxvdCBvZiBpdGVtcyBhbmQgd2UgY2FuIG5vdCBkaXNwbGF5IHRoZW0gYWxsIGluIHRoZSBkcm9wZG93blxuICBleHBvcnQgbGV0IG1vcmVJdGVtc1RleHQgPSBcIml0ZW1zIG5vdCBzaG93blwiXG5cbiAgLy8gdGV4dCBkaXNwbGF5ZWQgd2hlbiBhc3luYyBkYXRhIGlzIGJlaW5nIGxvYWRlZFxuICBleHBvcnQgbGV0IGNyZWF0ZVRleHQgPSBcIk5vdCBmb3VuZCwgYWRkIGFueXdheT9cIlxuXG4gIC8vIHRoZSB0ZXh0IGRpc3BsYXllZCB3aGVuIG5vIG9wdGlvbiBpcyBzZWxlY3RlZFxuICBleHBvcnQgbGV0IHBsYWNlaG9sZG
41VyID0gdW5kZWZpbmVkXG5cbiAgLy8gYXBwbHkgYSBjbGFzc05hbWUgdG8gdGhlIGNvbnRyb2xcbiAgZXhwb3J0IGxldCBjbGFzc05hbWUgPSB1bmRlZmluZWRcblxuICAvLyBIVE1MIGlucHV0IFVJIHByb3BlcnRpZXNcbiAgLy8gYXBwbHkgYSBjbGFzc05hbWUgdG8gdGhlIGlucHV0IGNvbnRyb2xcbiAgZXhwb3J0IGxldCBpbnB1dENsYXNzTmFtZSA9IHVuZGVmaW5lZFxuICAvLyBhcHBseSBhIGlkIHRvIHRoZSBpbnB1dCBjb250cm9sXG4gIGV4cG9ydCBsZXQgaW5wdXRJZCA9IHVuZGVmaW5lZFxuICAvLyBnZW5lcmF0ZSBhbiBIVE1MIGlucHV0IHdpdGggdGhpcyBuYW1lXG4gIGV4cG9ydCBsZXQgbmFtZSA9IHVuZGVmaW5lZFxuICAvLyBnZW5lcmF0ZSBhIDxzZWxlY3Q+IHRhZyB0aGF0IGhvbGRzIHRoZSB2YWx1ZVxuICBleHBvcnQgbGV0IHNlbGVjdE5hbWUgPSB1bmRlZmluZWRcbiAgLy8gYXBwbHkgYSBpZCB0byB0aGUgPHNlbGVjdD5cbiAgZXhwb3J0IGxldCBzZWxlY3RJZCA9IHVuZGVmaW5lZFxuICAvLyBhZGQgdGhlIHRpdGxlIHRvIHRoZSBIVE1MIGlucHV0XG4gIGV4cG9ydCBsZXQgdGl0bGUgPSB1bmRlZmluZWRcbiAgLy8gZW5hYmxlIHRoZSBodG1sNSBhdXRvY29tcGxldGlvbiB0byB0aGUgSFRNTCBpbnB1dFxuICBleHBvcnQgbGV0IGh0bWw1YXV0b2NvbXBsZXRlID0gdW5kZWZpbmVkXG4gIC8vIGVuYWJsZSB0aGUgaHRtbDUgYXV0b2NvbXBsZXRpb24gdmFsdWVcbiAgZXhwb3J0IGxldCBhdXRvY29tcGxldGVPZmZWYWx1ZSA9IFwib2ZmXCJcbiAgLy8gbWFrZSB0aGUgaW5wdXQgcmVhZG9ubHlcbiAgZXhwb3J0IGxldCByZWFkb25seSA9IHVuZGVmaW5lZFxuICAvLyBhcHBseSBhIGNsYXNzTmFtZSB0byB0aGUgZHJvcGRvd24gZGl2XG4gIGV4cG9ydCBsZXQgZHJvcGRvd25DbGFzc05hbWUgPSB1bmRlZmluZWRcbiAgLy8gYWRkcyB0aGUgZGlzYWJsZWQgdGFnIHRvIHRoZSBIVE1MIGlucHV0XG4gIGV4cG9ydCBsZXQgZGlzYWJsZWQgPSBmYWxzZVxuICAvLyByZW1vdmUgdGhlIGF1dG9jb21wbGV0ZS1pbnB1dCBjbGFzcyBvZiB0aGUgaW5wdXRcbiAgZXhwb3J0IGxldCBub0lucHV0U3R5bGVzID0gZmFsc2VcbiAgLy8gYWRkcyB0aGUgcmVxdWlyZWQgYXR0cmlidXRlIHRvIHRoZSBIVE1MIGlucHV0XG4gIGV4cG9ydCBsZXQgcmVxdWlyZWQgPSBudWxsXG5cbiAgZXhwb3J0IGxldCBkZWJ1ZyA9IGZhbHNlXG5cbiAgLy8gYWRkIHRhYmluZGV4IHN1cHBvcnQgZm9yIHRoZSBpbnB1dFxuICAvLyBzZXQgc3RhbmRhcmQgdG8gMDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy90YWJpbmRleFxuICBleHBvcnQgbGV0IHRhYmluZGV4ID0gMFxuXG4gIC8vIC0tLSBQdWJsaWMgU3RhdGUgLS0tLVxuXG4gIC8vIHNlbGVjdGVkIGl0ZW0gc3RhdGVcbiAgZXhwb3J0IGxldCBzZWxlY3RlZEl0ZW0gPSBtdWx0aXBsZSA/IFtdIDogdW5kZWZpbmVkXG4gIGV4cG9ydCBsZXQgdmFsdWUgPSB1bmRlZmluZWRcbiAgZXhwb3J0IGxldCBoaWdobGlnaHRlZEl0ZW0gPSB1bmRlZmluZWRcblxuICAvLyAtLS0gSW50ZXJuYWwgU3RhdGUgLS0tLVxuICBjb25zdCB1bmlxdWVJZCA9IFwic2F1dG9jb21wbGV0ZS1cIiArIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwMDApXG5cbiAgLy8gSFRNTCBlbGVtZW50c1xuICBsZXQgaW5wdXRcbiAgbGV0IGxpc3RcbiAgbGV0IGlucHV0Q29udGFpbmVyXG5cbiAgLy8gVUkgc3RhdGVcbiAgbGV0IG9wZW5lZCA9IGZhbHNlXG4gIGxldCBsb2FkaW5nID0gZmFsc2VcbiAgbGV0IGhpZ2hsaWdodEluZGV4ID0gLTFcbiAgZXhwb3J0IGxldCB0ZXh0ID0gdW5kZWZpbmVkXG4gIGxldCBmaWx0ZXJlZFRleHRMZW5ndGggPSAwXG5cbiAgLy8gdmlldyBtb2RlbFxuICBsZXQgZmlsdGVyZWRMaXN0SXRlbXNcbiAgbGV0IGxpc3RJdGVtcyA9IFtdXG5cbiAgLy8gcmVxdWVzdHMvcmVzcG9uc2VzIGNvdW50ZXJzXG4gIGxldCBsYXN0UmVxdWVzdElkID0gMFxuICBsZXQgbGFzdFJlc3BvbnNlSWQgPSAwXG5cbiAgLy8gb3RoZXIgc3RhdGVcbiAgbGV0IGlucHV0RGVsYXlUaW1lb3V0XG5cbiAgbGV0IHNldFBvc2l0aW9uT25OZXh0VXBkYXRlID0gZmFsc2U7XG5cbiAgLy8gLS0tIExpZmVjeWNsZSBldmVudHMgLS0tXG5cbiAgYWZ0ZXJVcGRhdGUoKCkgPT4ge1xuICAgIGlmKHNldFBvc2l0aW9uT25OZXh0VXBkYXRlKSB7XG4gICAgICBzZXRTY3JvbGxBd2FyZUxpc3RQb3NpdGlvbigpXG4gICAgfVxuICAgIHNldFBvc2l0aW9uT25OZXh0VXBkYXRlID0gZmFsc2VcbiAgfSlcblxuICAvLyAtLS0gRnVuY3Rpb25zIC0tLVxuXG4gIGZ1bmN0aW9uIHNhZmVGdW5jdGlvbih0aGVGdW5jdGlvbiwgYXJndW1lbnQpIHtcbiAgICBpZiAodHlwZW9mIHRoZUZ1bmN0aW9uICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJOb3QgYSBmdW5jdGlvbjogXCIgKyB0aGVGdW5jdGlvbiArIFwiLCBhcmd1bWVudDogXCIgKyBhcmd1bWVudClcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gICAgbGV0IHJlc3VsdFxuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSB0aGVGdW5jdGlvbihhcmd1bWVudClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIkVycm9yIGV4ZWN1dGluZyBBdXRvY29tcGxldGUgZnVuY3Rpb24gb24gdmFsdWU6IFwiICsgYXJndW1lbnQgKyBcIiBmdW5jdGlvbjogXCIgKyB0aGVGdW5jdGlvblxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBmdW5jdGlvbiBzYWZlU3RyaW5nRnVuY3Rpb24odGhlRnVuY3Rpb24sIGFyZ3VtZW50KSB7XG4gICAgbGV0IHJlc3VsdCA9IHNhZmVGdW5jdGlvbih0aGVGdW5jdGlvbiwgYXJndW1lbnQpXG4gICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gXCJcIlxuICAgIH1cbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnRvU3RyaW5nKClcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgZnVuY3Rpb24gc2FmZUxhYmVsRnVuY3Rpb24oaXRlbSkge1xuICAgIC8vIGNvbnNvbGUubG9nKFwibGFiZWxGdW5jdGlvbjogXCIgKyBsYWJlbEZ1bmN0aW9uKTtcbiAgICAvLyBjb25zb2xlLmxvZyhcInNhZmVMYWJlbEZ1bmN0aW9uLCBpdGVtOiBcIiArIGl0ZW0pO1xuICAgIHJldHVybi
41BzYWZlU3RyaW5nRnVuY3Rpb24obGFiZWxGdW5jdGlvbiwgaXRlbSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHNhZmVLZXl3b3Jkc0Z1bmN0aW9uKGl0ZW0pIHtcbiAgICAvLyBjb25zb2xlLmxvZyhcInNhZmVLZXl3b3Jkc0Z1bmN0aW9uXCIpO1xuICAgIGNvbnN0IGtleXdvcmRzID0gc2FmZVN0cmluZ0Z1bmN0aW9uKGtleXdvcmRzRnVuY3Rpb24sIGl0ZW0pXG4gICAgbGV0IHJlc3VsdCA9IHNhZmVTdHJpbmdGdW5jdGlvbihrZXl3b3Jkc0NsZWFuRnVuY3Rpb24sIGtleXdvcmRzKVxuICAgIHJlc3VsdCA9IGxvd2VyY2FzZUtleXdvcmRzID8gcmVzdWx0LnRvTG93ZXJDYXNlKCkudHJpbSgpIDogcmVzdWx0XG4gICAgaWYgKGlnbm9yZUFjY2VudHMpIHtcbiAgICAgIHJlc3VsdCA9IHJlbW92ZUFjY2VudHMocmVzdWx0KVxuICAgIH1cblxuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJFeHRyYWN0ZWQga2V5d29yZHM6ICdcIiArIHJlc3VsdCArIFwiJyBmcm9tIGl0ZW06IFwiICsgSlNPTi5zdHJpbmdpZnkoaXRlbSkpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGZ1bmN0aW9uIHByZXBhcmVMaXN0SXRlbXMoKSB7XG4gICAgbGV0IHRpbWVySWRcbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIHRpbWVySWQgPSBgQXV0b2NvbXBsZXRlIHByZXBhcmUgbGlzdCAke2lucHV0SWQgPyBgKGlkOiAke2lucHV0SWR9KWAgOiBcIlwifWBcbiAgICAgIGNvbnNvbGUudGltZSh0aW1lcklkKVxuICAgICAgY29uc29sZS5sb2coXCJQcmVwYXJlIGl0ZW1zIHRvIHNlYXJjaFwiKVxuICAgICAgY29uc29sZS5sb2coXCJpdGVtczogXCIgKyBKU09OLnN0cmluZ2lmeShpdGVtcykpXG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgY29uc29sZS53YXJuKFwiQXV0b2NvbXBsZXRlIGl0ZW1zIC8gc2VhcmNoIGZ1bmN0aW9uIGRpZCBub3QgcmV0dXJuIGFycmF5IGJ1dFwiLCBpdGVtcylcbiAgICAgIGl0ZW1zID0gW11cbiAgICB9XG5cbiAgICBjb25zdCBsZW5ndGggPSBpdGVtcyA/IGl0ZW1zLmxlbmd0aCA6IDBcbiAgICBsaXN0SXRlbXMgPSBuZXcgQXJyYXkobGVuZ3RoKVxuXG4gICAgaWYgKGxlbmd0aCA+IDApIHtcbiAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcbiAgICAgICAgY29uc3QgbGlzdEl0ZW0gPSBnZXRMaXN0SXRlbShpdGVtKVxuICAgICAgICBpZiAobGlzdEl0ZW0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiVW5kZWZpbmVkIGl0ZW0gZm9yOiBcIiwgaXRlbSlcbiAgICAgICAgfVxuICAgICAgICBsaXN0SXRlbXNbaV0gPSBsaXN0SXRlbVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmaWx0ZXJlZExpc3RJdGVtcyA9IGxpc3RJdGVtc1xuXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhsaXN0SXRlbXMubGVuZ3RoICsgXCIgaXRlbXMgdG8gc2VhcmNoXCIpXG4gICAgICBjb25zb2xlLnRpbWVFbmQodGltZXJJZClcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRMaXN0SXRlbShpdGVtKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIGtleXdvcmRzIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpdGVtXG4gICAgICBrZXl3b3JkczogbG9jYWxGaWx0ZXJpbmcgPyBzYWZlS2V5d29yZHNGdW5jdGlvbihpdGVtKSA6IFtdLFxuICAgICAgLy8gaXRlbSBsYWJlbFxuICAgICAgbGFiZWw6IHNhZmVMYWJlbEZ1bmN0aW9uKGl0ZW0pLFxuICAgICAgLy8gc3RvcmUgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaWFsIGl0ZW1cbiAgICAgIGl0ZW06IGl0ZW0sXG4gICAgfVxuICB9XG5cbiAgLy8gLS0gUmVhY3Rpdml0eSAtLVxuICAkOiBpdGVtcywgc2VhcmNoRnVuY3Rpb24gfHwgcHJlcGFyZUxpc3RJdGVtcygpXG5cbiAgZnVuY3Rpb24gb25TZWxlY3RlZEl0ZW1DaGFuZ2VkKCkge1xuICAgIHZhbHVlID0gdmFsdWVGdW5jdGlvbihzZWxlY3RlZEl0ZW0pXG4gICAgaWYgKHNlbGVjdGVkSXRlbSAmJiAhbXVsdGlwbGUpIHtcbiAgICAgIHRleHQgPSBzYWZlTGFiZWxGdW5jdGlvbihzZWxlY3RlZEl0ZW0pXG4gICAgfVxuXG4gICAgZmlsdGVyZWRMaXN0SXRlbXMgPSBsaXN0SXRlbXNcbiAgICBvbkNoYW5nZShzZWxlY3RlZEl0ZW0pXG4gIH1cblxuICAkOiBzZWxlY3RlZEl0ZW0sIG9uU2VsZWN0ZWRJdGVtQ2hhbmdlZCgpXG5cbiAgJDogaGlnaGxpZ2h0ZWRJdGVtID1cbiAgICBmaWx0ZXJlZExpc3RJdGVtcyAmJlxuICAgIGhpZ2hsaWdodEluZGV4ICYmXG4gICAgaGlnaGxpZ2h0SW5kZXggPj0gMCAmJlxuICAgIGhpZ2hsaWdodEluZGV4IDwgZmlsdGVyZWRMaXN0SXRlbXMubGVuZ3RoXG4gICAgICA/IGZpbHRlcmVkTGlzdEl0ZW1zW2hpZ2hsaWdodEluZGV4XS5pdGVtXG4gICAgICA6IG51bGxcblxuICAkOiBzaG93TGlzdCA9IG9wZW5lZCAmJiAoKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA+IDApIHx8IGZpbHRlcmVkVGV4dExlbmd0aCA+IDApXG5cbiAgJDogaGFzU2VsZWN0aW9uID1cbiAgICAobXVsdGlwbGUgJiYgc2VsZWN0ZWRJdGVtICYmIHNlbGVjdGVkSXRlbS5sZW5ndGggPiAwKSB8fCAoIW11bHRpcGxlICYmIHNlbGVjdGVkSXRlbSlcblxuICAkOiBjbGVhcmFibGUgPSBzaG93Q2xlYXIgfHwgKChsb2NrIHx8IG11bHRpcGxlKSAmJiBoYXNTZWxlY3Rpb24pXG5cbiAgJDogbG9ja2VkID0gbG9jayAmJiBoYXNTZWxlY3Rpb25cblxuICBmdW5jdGlvbiBwcmVwYXJlVXNlckVudGVyZWRUZXh0KHVzZXJFbnRlcmVkVGV4dCkge1xuICAgIGlmICh1c2VyRW50ZXJlZFRleHQgPT09IHVuZGVmaW5lZCB8fCB1c2VyRW50ZXJlZFRleHQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBcIlwiXG4gICAgfVxuXG4gICAgaWYgKCFjbGVhblVzZXJUZXh0KSB7XG4gICAgICByZXR1cm4gdXNlckVudGVyZWRUZXh0XG4gICAgfVxuXG4gICAgY29uc3QgdGV4dEZpbHRlcmVkID0gdXNlckVudGVyZWRUZXh0LnJlcGxhY2UoL1smL1xcXFwjLCsoKSR+JS4nXCI6Kj88Pnt9XS9nLCBcIiBcIikudHJpbSgpXG5cbiAgICBjb25zdCBjbGVhblVzZXJFbnRlcmVkVGV4dCA9IHNhZmVTdHJpbmdGdW5jdGlvbih0ZXh0Q2xlYW5GdW5jdGlvbiwgdGV4dEZpbHRlcmVkKVxuICAgIGNvbnN0IHRleHRUcmltbWVkID0gbG93ZXJjYXNlS2V5d29yZHNcbiAgICAgID8gY2xlYW5Vc2VyRW50ZXJlZFRleHQudG9Mb3dlckNhc2UoKS50cmltKClcbiAgICAgIDogY2xlYW5Vc2VyRW50ZXJlZFRleHQudHJpbSgpXG5cbiAgICByZXR1cm4gdGV4dFRyaW1tZWRcbiAgfVxuXG4gIGZ1bmN0aW9uIG51bWJlck9mTWF0Y2hlcyhsaXN0SXRlbSwgc2VhcmNoV29yZHMpIHtcbiAgICBpZiAoIWxpc3RJdGVtKSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIGNvbnN0IGl0ZW
411LZXl3b3JkcyA9IGxpc3RJdGVtLmtleXdvcmRzXG5cbiAgICBsZXQgbWF0Y2hlcyA9IDBcbiAgICBzZWFyY2hXb3Jkcy5mb3JFYWNoKChzZWFyY2hXb3JkKSA9PiB7XG4gICAgICBpZiAoaXRlbUtleXdvcmRzLmluY2x1ZGVzKHNlYXJjaFdvcmQpKSB7XG4gICAgICAgIG1hdGNoZXMrK1xuICAgICAgfVxuICAgIH0pXG5cbiAgICByZXR1cm4gbWF0Y2hlc1xuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2VhcmNoKCkge1xuICAgIGxldCB0aW1lcklkXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICB0aW1lcklkID0gYEF1dG9jb21wbGV0ZSBzZWFyY2ggJHtpbnB1dElkID8gYChpZDogJHtpbnB1dElkfSlgIDogXCJcIn1gXG4gICAgICBjb25zb2xlLnRpbWUodGltZXJJZClcbiAgICAgIGNvbnNvbGUubG9nKFwiU2VhcmNoaW5nIHVzZXIgZW50ZXJlZCB0ZXh0OiAnXCIgKyB0ZXh0ICsgXCInXCIpXG4gICAgfVxuXG4gICAgbGV0IHRleHRGaWx0ZXJlZCA9IHByZXBhcmVVc2VyRW50ZXJlZFRleHQodGV4dClcbiAgICBpZiAobWluQ2hhcmFjdGVyc1RvU2VhcmNoID4gMSAmJiB0ZXh0RmlsdGVyZWQubGVuZ3RoIDwgbWluQ2hhcmFjdGVyc1RvU2VhcmNoKSB7XG4gICAgICB0ZXh0RmlsdGVyZWQgPSBcIlwiXG4gICAgfVxuICAgIGZpbHRlcmVkVGV4dExlbmd0aCA9IHRleHRGaWx0ZXJlZC5sZW5ndGhcblxuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJDaGFuZ2VkIHVzZXIgZW50ZXJlZCB0ZXh0ICdcIiArIHRleHQgKyBcIicgaW50byAnXCIgKyB0ZXh0RmlsdGVyZWQgKyBcIidcIilcbiAgICB9XG5cbiAgICAvLyBpZiBubyBzZWFyY2ggdGV4dCBsb2FkIGFsbCBpdGVtc1xuICAgIGlmICh0ZXh0RmlsdGVyZWQgPT09IFwiXCIpIHtcbiAgICAgIGlmIChzZWFyY2hGdW5jdGlvbikge1xuICAgICAgICAvLyB3ZSB3aWxsIG5lZWQgdG8gcmVydW4gdGhlIHNlYXJjaFxuICAgICAgICBpdGVtcyA9IFtdXG4gICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiVXNlciBlbnRlcmVkIHRleHQgaXMgZW1wdHkgY2xlYXIgbGlzdCBvZiBpdGVtc1wiKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWx0ZXJlZExpc3RJdGVtcyA9IGxpc3RJdGVtc1xuICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlVzZXIgZW50ZXJlZCB0ZXh0IGlzIGVtcHR5IHNldCB0aGUgbGlzdCBvZiBpdGVtcyB0byBhbGwgaXRlbXNcIilcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNsb3NlSWZNaW5DaGFyc1RvU2VhcmNoUmVhY2hlZCgpKSB7XG4gICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgIGNvbnNvbGUudGltZUVuZCh0aW1lcklkKVxuICAgICAgICB9XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghc2VhcmNoRnVuY3Rpb24pIHtcbiAgICAgIC8vIGludGVybmFsIHNlYXJjaFxuICAgICAgcHJvY2Vzc0xpc3RJdGVtcyh0ZXh0RmlsdGVyZWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGV4dGVybmFsIHNlYXJjaCB3aGljaCBwcm92aWRlcyBpdGVtc1xuICAgICAgbGFzdFJlcXVlc3RJZCA9IGxhc3RSZXF1ZXN0SWQgKyAxXG4gICAgICBjb25zdCBjdXJyZW50UmVxdWVzdElkID0gbGFzdFJlcXVlc3RJZFxuICAgICAgbG9hZGluZyA9IHRydWVcblxuICAgICAgLy8gc2VhcmNoRnVuY3Rpb24gaXMgYSBnZW5lcmF0b3JcbiAgICAgIGlmIChzZWFyY2hGdW5jdGlvbi5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25cIikge1xuICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHNlYXJjaEZ1bmN0aW9uKHRleHRGaWx0ZXJlZCwgbWF4SXRlbXNUb1Nob3dJbkxpc3QpKSB7XG4gICAgICAgICAgLy8gYSBjaHVuayBvZiBhbiBvbGQgcmVzcG9uc2U6IHRocm93IGl0IGF3YXlcbiAgICAgICAgICBpZiAoY3VycmVudFJlcXVlc3RJZCA8IGxhc3RSZXNwb25zZUlkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBhIGNodW5rIGZvciBhIG5ldyByZXNwb25zZTogcmVzZXQgdGhlIGl0ZW0gbGlzdFxuICAgICAgICAgIGlmIChjdXJyZW50UmVxdWVzdElkID4gbGFzdFJlc3BvbnNlSWQpIHtcbiAgICAgICAgICAgIGl0ZW1zID0gW11cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsYXN0UmVzcG9uc2VJZCA9IGN1cnJlbnRSZXF1ZXN0SWRcbiAgICAgICAgICBpdGVtcyA9IFsuLi5pdGVtcywgLi4uY2h1bmtdXG4gICAgICAgICAgcHJvY2Vzc0xpc3RJdGVtcyh0ZXh0RmlsdGVyZWQpXG4gICAgICAgIH1cblxuICAgICAgICAvLyB0aGVyZSB3YXMgbm90aGluZyBpbiB0aGUgY2h1bmtcbiAgICAgICAgaWYgKGxhc3RSZXNwb25zZUlkIDwgY3VycmVudFJlcXVlc3RJZCkge1xuICAgICAgICAgIGxhc3RSZXNwb25zZUlkID0gY3VycmVudFJlcXVlc3RJZFxuICAgICAgICAgIGl0ZW1zID0gW11cbiAgICAgICAgICBwcm9jZXNzTGlzdEl0ZW1zKHRleHRGaWx0ZXJlZClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBzZWFyY2hGdW5jdGlvbiBpcyBhIHJlZ3VsYXIgZnVuY3Rpb25cbiAgICAgIGVsc2Uge1xuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgc2VhcmNoRnVuY3Rpb24odGV4dEZpbHRlcmVkLCBtYXhJdGVtc1RvU2hvd0luTGlzdClcblxuICAgICAgICAvLyBJZiBhIHJlc3BvbnNlIHRvIGEgbmV3ZXIgcmVxdWVzdCBoYXMgYmVlbiByZWNlaXZlZFxuICAgICAgICAvLyB3aGlsZSByZXNwb25zZXMgdG8gdGhpcyByZXF1ZXN0IHdlcmUgYmVpbmcgbG9hZGVkLFxuICAgICAgICAvLyB0aGVuIHdlIGNhbiBqdXN0IHRocm93IGF3YXkgdGhpcyBvdXRkYXRlZCByZXN1bHRzLlxuICAgICAgICBpZiAoY3VycmVudFJlcXVlc3RJZCA8IGxhc3RSZXNwb25zZUlkKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cblxuICAgICAgICBsYXN0UmVzcG9uc2VJZCA9IGN1cnJlbnRSZXF1ZXN0SWRcbiAgICAgICAgaXRlbXMgPSByZXN1bHRcbiAgICAgICAgcHJvY2Vzc0xpc3RJdGVtcyh0ZXh0RmlsdGVyZWQpXG4gICAgICB9XG5cbiAgICAgIGxvYWRpbmcgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS50aW1lRW5kKHRpbWVySWQpXG4gICAgICBjb25zb2xlLmxvZyhcIlNlYXJjaCBmb3VuZCBcIiArIGZpbHRlcmVkTGlzdEl0ZW1zLmxlbmd0aCArIFwiIGl0ZW1zXCIpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVmYXVsdEl0ZW1GaWx0ZXJGdW5jdGlvbihsaXN0SXRlbSwgc2VhcmNoV29yZHMpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gbnVtYmVyT2ZNYXRjaGVzKGxpc3RJdGVtLCBzZWFyY2hXb3JkcylcbiAgICBpZiAobWF0Y2hBbGxLZXl3b3Jkcykge1xuICAgICAgcmV0dXJuIG1hdGNoZXMgPj0gc2VhcmNoV29yZHMubGVuZ3RoXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybi
41BtYXRjaGVzID4gMFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRlZmF1bHRJdGVtU29ydEZ1bmN0aW9uKG9iajEsIG9iajIsIHNlYXJjaFdvcmRzKSB7XG4gICAgcmV0dXJuIG51bWJlck9mTWF0Y2hlcyhvYmoyLCBzZWFyY2hXb3JkcykgLSBudW1iZXJPZk1hdGNoZXMob2JqMSwgc2VhcmNoV29yZHMpXG4gIH1cblxuICBmdW5jdGlvbiBwcm9jZXNzTGlzdEl0ZW1zKHRleHRGaWx0ZXJlZCkge1xuICAgIC8vIGNsZWFucywgZmlsdGVycywgb3JkZXJzLCBhbmQgaGlnaGxpZ2h0cyB0aGUgbGlzdCBpdGVtc1xuICAgIHByZXBhcmVMaXN0SXRlbXMoKVxuXG4gICAgY29uc3QgdGV4dEZpbHRlcmVkV2l0aG91dEFjY2VudHMgPSBpZ25vcmVBY2NlbnRzID8gcmVtb3ZlQWNjZW50cyh0ZXh0RmlsdGVyZWQpIDogdGV4dEZpbHRlcmVkXG4gICAgY29uc3Qgc2VhcmNoV29yZHMgPSB0ZXh0RmlsdGVyZWRXaXRob3V0QWNjZW50cy5zcGxpdCgvXFxzKy9nKS5maWx0ZXIoKHdvcmQpID0+IHdvcmQgIT09IFwiXCIpXG5cbiAgICAvLyBsb2NhbCBzZWFyY2hcbiAgICBsZXQgdGVtcGZpbHRlcmVkTGlzdEl0ZW1zXG4gICAgaWYgKGxvY2FsRmlsdGVyaW5nKSB7XG4gICAgICBpZiAoaXRlbUZpbHRlckZ1bmN0aW9uKSB7XG4gICAgICAgIHRlbXBmaWx0ZXJlZExpc3RJdGVtcyA9IGxpc3RJdGVtcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICAgICAgaXRlbUZpbHRlckZ1bmN0aW9uKGl0ZW0uaXRlbSwgc2VhcmNoV29yZHMpXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRlbXBmaWx0ZXJlZExpc3RJdGVtcyA9IGxpc3RJdGVtcy5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICAgICAgZGVmYXVsdEl0ZW1GaWx0ZXJGdW5jdGlvbihpdGVtLCBzZWFyY2hXb3JkcylcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAobG9jYWxTb3J0aW5nKSB7XG4gICAgICAgIGlmIChpdGVtU29ydEZ1bmN0aW9uKSB7XG4gICAgICAgICAgdGVtcGZpbHRlcmVkTGlzdEl0ZW1zID0gdGVtcGZpbHRlcmVkTGlzdEl0ZW1zLnNvcnQoKGl0ZW0xLCBpdGVtMikgPT5cbiAgICAgICAgICAgIGl0ZW1Tb3J0RnVuY3Rpb24oaXRlbTEuaXRlbSwgaXRlbTIuaXRlbSwgc2VhcmNoV29yZHMpXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChzb3J0QnlNYXRjaGVkS2V5d29yZHMpIHtcbiAgICAgICAgICAgIHRlbXBmaWx0ZXJlZExpc3RJdGVtcyA9IHRlbXBmaWx0ZXJlZExpc3RJdGVtcy5zb3J0KChpdGVtMSwgaXRlbTIpID0+XG4gICAgICAgICAgICAgIGRlZmF1bHRJdGVtU29ydEZ1bmN0aW9uKGl0ZW0xLCBpdGVtMiwgc2VhcmNoV29yZHMpXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRlbXBmaWx0ZXJlZExpc3RJdGVtcyA9IGxpc3RJdGVtc1xuICAgIH1cblxuICAgIGNvbnN0IGhsZmlsdGVyID0gaGlnaGxpZ2h0RmlsdGVyKHNlYXJjaFdvcmRzLCBcImxhYmVsXCIpXG4gICAgZmlsdGVyZWRMaXN0SXRlbXMgPSB0ZW1wZmlsdGVyZWRMaXN0SXRlbXMubWFwKGhsZmlsdGVyKVxuICAgIGNsb3NlSWZNaW5DaGFyc1RvU2VhcmNoUmVhY2hlZCgpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIC8vICQ6IHRleHQsIHNlYXJjaCgpO1xuXG4gIGZ1bmN0aW9uIGFmdGVyQ3JlYXRlKGNyZWF0ZWRJdGVtKSB7XG4gICAgbGV0IGxpc3RJdGVtXG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcImNyZWF0ZWRJdGVtXCIsIGNyZWF0ZWRJdGVtKVxuICAgIH1cbiAgICBpZiAoXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIGNyZWF0ZWRJdGVtKSB7XG4gICAgICBwcmVwYXJlTGlzdEl0ZW1zKClcbiAgICAgIGZpbHRlcmVkTGlzdEl0ZW1zID0gbGlzdEl0ZW1zXG4gICAgICBsZXQgaW5kZXggPSBmaW5kSXRlbUluZGV4KGNyZWF0ZWRJdGVtLCBmaWx0ZXJlZExpc3RJdGVtcylcblxuICAgICAgLy8gaWYgdGhlIGl0ZW1zIGFycmF5IHdhcyBub3QgdXBkYXRlZCwgYWRkIHRoZSBjcmVhdGVkIGl0ZW0gbWFudWFsbHlcbiAgICAgIGlmIChpbmRleCA8PSAwKSB7XG4gICAgICAgIGl0ZW1zID0gW2NyZWF0ZWRJdGVtXVxuICAgICAgICBwcmVwYXJlTGlzdEl0ZW1zKClcbiAgICAgICAgZmlsdGVyZWRMaXN0SXRlbXMgPSBsaXN0SXRlbXNcbiAgICAgICAgaW5kZXggPSAwXG4gICAgICB9XG5cbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIGhpZ2hsaWdodEluZGV4ID0gaW5kZXhcbiAgICAgICAgbGlzdEl0ZW0gPSBmaWx0ZXJlZExpc3RJdGVtc1toaWdobGlnaHRJbmRleF1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxpc3RJdGVtXG4gIH1cblxuICBmdW5jdGlvbiBzZWxlY3RMaXN0SXRlbShsaXN0SXRlbSkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJzZWxlY3RMaXN0SXRlbVwiLCBsaXN0SXRlbSlcbiAgICB9XG4gICAgaWYgKFwidW5kZWZpbmVkXCIgPT09IHR5cGVvZiBsaXN0SXRlbSAmJiBjcmVhdGUpIHtcbiAgICAgIC8vIGFsbG93IHVuZGVmaW5lZCBpdGVtcyBpZiBjcmVhdGUgaXMgZW5hYmxlZFxuICAgICAgY29uc3QgY3JlYXRlZEl0ZW0gPSBvbkNyZWF0ZSh0ZXh0KVxuICAgICAgaWYgKFwidW5kZWZpbmVkXCIgIT09IHR5cGVvZiBjcmVhdGVkSXRlbSkge1xuICAgICAgICBpZiAodHlwZW9mIGNyZWF0ZWRJdGVtLnRoZW4gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIGNyZWF0ZWRJdGVtLnRoZW4oKG5ld0l0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChcInVuZGVmaW5lZFwiICE9PSB0eXBlb2YgbmV3SXRlbSkge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMaXN0SXRlbSA9IGFmdGVyQ3JlYXRlKG5ld0l0ZW0pXG4gICAgICAgICAgICAgIGlmIChcInVuZGVmaW5lZFwiICE9PSB0eXBlb2YgbmV3TGlzdEl0ZW0pIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RMaXN0SXRlbShuZXdMaXN0SXRlbSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsaXN0SXRlbSA9IGFmdGVyQ3JlYXRlKGNyZWF0ZWRJdGVtKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFwidW5kZWZpbmVkXCIgPT09IHR5cGVvZiBsaXN0SXRlbSkge1xuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBsaXN0SXRlbSBpcyB1bmRlZmluZWQuIENhbiBub3Qgc2VsZWN0LmApXG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAobG9ja2VkKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1NlbGVjdGVkSXRlbSA9IGxpc3RJdGVtLml0ZW1cbiAgICBpZiAoYmVmb3JlQ2hhbmdlKHNlbGVjdGVkSXRlbSwgbmV3U2VsZWN0ZWRJdGVtKSkge1xuICAgICAgLy8gc2ltcGxlIHNlbGVjdGlvblxuICAgICAgaWYgKCFtdWx0aXBsZSkge1xuICAgICAgICBzZWxlY3RlZEl0ZW
410gPSB1bmRlZmluZWQgLy8gdHJpZ2dlcnMgY2hhbmdlIGV2ZW4gaWYgdGhlIHRoZSBzYW1lIGl0ZW0gaXMgc2VsZWN0ZWRcbiAgICAgICAgc2VsZWN0ZWRJdGVtID0gbmV3U2VsZWN0ZWRJdGVtXG4gICAgICB9XG4gICAgICAvLyBmaXJzdCBzZWxlY3Rpb24gb2YgbXVsdGlwbGUgb25lc1xuICAgICAgZWxzZSBpZiAoIXNlbGVjdGVkSXRlbSkge1xuICAgICAgICBzZWxlY3RlZEl0ZW0gPSBbbmV3U2VsZWN0ZWRJdGVtXVxuICAgICAgfVxuICAgICAgLy8gc2VsZWN0aW5nIHNvbWV0aGluZyBhbHJlYWR5IHNlbGVjdGVkID0+IHVuc2VsZWN0IGl0XG4gICAgICBlbHNlIGlmIChzZWxlY3RlZEl0ZW0uaW5jbHVkZXMobmV3U2VsZWN0ZWRJdGVtKSkge1xuICAgICAgICBzZWxlY3RlZEl0ZW0gPSBzZWxlY3RlZEl0ZW0uZmlsdGVyKChpKSA9PiBpICE9PSBuZXdTZWxlY3RlZEl0ZW0pXG4gICAgICB9XG4gICAgICAvLyBhZGRzIHRoZSBlbGVtZW50IHRvIHRoZSBzZWxlY3Rpb25cbiAgICAgIGVsc2Uge1xuICAgICAgICBzZWxlY3RlZEl0ZW0gPSBbLi4uc2VsZWN0ZWRJdGVtLCBuZXdTZWxlY3RlZEl0ZW1dXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBmdW5jdGlvbiBzZWxlY3RJdGVtKCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJzZWxlY3RJdGVtXCIsIGhpZ2hsaWdodEluZGV4KVxuICAgIH1cbiAgICBjb25zdCBsaXN0SXRlbSA9IGZpbHRlcmVkTGlzdEl0ZW1zW2hpZ2hsaWdodEluZGV4XVxuICAgIGlmIChzZWxlY3RMaXN0SXRlbShsaXN0SXRlbSkpIHtcbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcInNlbGVjdExpc3RJdGVtIHRydWUsIGNsb3NpbmdcIilcbiAgICAgIH1cbiAgICAgIGNsb3NlKClcbiAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICB0ZXh0ID0gXCJcIlxuICAgICAgICBpbnB1dC5mb2N1cygpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcInNlbGVjdExpc3RJdGVtIGZhbHNlLCBub3QgY2xvc2luZ1wiKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHVwKCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJ1cFwiKVxuICAgIH1cblxuICAgIG9wZW4oKVxuICAgIGlmIChoaWdobGlnaHRJbmRleCA+IDApIHtcbiAgICAgIGhpZ2hsaWdodEluZGV4LS1cbiAgICB9XG5cbiAgICBoaWdobGlnaHQoKVxuICB9XG5cbiAgZnVuY3Rpb24gZG93bigpIHtcbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiZG93blwiKVxuICAgIH1cblxuICAgIG9wZW4oKVxuICAgIGlmIChoaWdobGlnaHRJbmRleCA8IGZpbHRlcmVkTGlzdEl0ZW1zLmxlbmd0aCAtIDEpIHtcbiAgICAgIGhpZ2hsaWdodEluZGV4KytcbiAgICB9XG5cbiAgICBoaWdobGlnaHQoKVxuICB9XG5cbiAgZnVuY3Rpb24gaGlnaGxpZ2h0KCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJoaWdobGlnaHRcIilcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyeSA9IFwiLnNlbGVjdGVkXCJcbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiU2VhY2hpbmcgRE9NIGVsZW1lbnQ6IFwiICsgcXVlcnkgKyBcIiBpbiBcIiArIGxpc3QpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtFbGVtZW50fSBlbFxuICAgICAqL1xuICAgIGNvbnN0IGVsID0gbGlzdCAmJiBsaXN0LnF1ZXJ5U2VsZWN0b3IocXVlcnkpXG4gICAgaWYgKGVsKSB7XG4gICAgICBpZiAodHlwZW9mIGVsLnNjcm9sbEludG9WaWV3SWZOZWVkZWQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlNjcm9sbGluZyBzZWxlY3RlZCBpdGVtIGludG8gdmlld1wiKVxuICAgICAgICB9XG4gICAgICAgIGVsLnNjcm9sbEludG9WaWV3SWZOZWVkZWQoKVxuICAgICAgfSBlbHNlIGlmIChlbC5zY3JvbGxJbnRvVmlldyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiU2Nyb2xsaW5nIHNlbGVjdGVkIGl0ZW0gaW50byB2aWV3XCIpXG4gICAgICAgIH1cbiAgICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgXCJDb3VsZCBub3Qgc2Nyb2xsIHNlbGVjdGVkIGl0ZW0gaW50byB2aWV3LCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiU2VsZWN0ZWQgaXRlbSBub3QgZm91bmQgdG8gc2Nyb2xsIGludG8gdmlld1wiKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTGlzdEl0ZW1DbGljayhsaXN0SXRlbSkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJvbkxpc3RJdGVtQ2xpY2tcIilcbiAgICB9XG5cbiAgICBpZiAoc2VsZWN0TGlzdEl0ZW0obGlzdEl0ZW0pKSB7XG4gICAgICBjbG9zZSgpXG4gICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgdGV4dCA9IFwiXCJcbiAgICAgICAgaW5wdXQuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRG9jdW1lbnRDbGljayhlKSB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIm9uRG9jdW1lbnRDbGlja1wiKVxuICAgIH1cbiAgICBpZiAoZS5jb21wb3NlZFBhdGgoKS5zb21lKChwYXRoKSA9PiBwYXRoLmNsYXNzTGlzdCAmJiBwYXRoLmNsYXNzTGlzdC5jb250YWlucyh1bmlxdWVJZCkpKSB7XG4gICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJvbkRvY3VtZW50Q2xpY2sgaW5zaWRlXCIpXG4gICAgICB9XG4gICAgICAvLyByZXNldExpc3RUb0FsbEl0ZW1zQW5kT3BlbigpO1xuICAgICAgaGlnaGxpZ2h0KClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwib25Eb2N1bWVudENsaWNrIG91dHNpZGVcIilcbiAgICAgIH1cbiAgICAgIGNsb3NlKClcbiAgICB9XG4gI
41H1cblxuICBmdW5jdGlvbiBvbktleURvd24oZSkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJvbktleURvd25cIilcbiAgICB9XG5cbiAgICBsZXQga2V5ID0gZS5rZXlcbiAgICBpZiAoa2V5ID09PSBcIlRhYlwiICYmIGUuc2hpZnRLZXkpIGtleSA9IFwiU2hpZnRUYWJcIlxuICAgIGNvbnN0IGZubWFwID0ge1xuICAgICAgVGFiOiBvcGVuZWQgPyBjbG9zZSA6IG51bGwsXG4gICAgICBTaGlmdFRhYjogb3BlbmVkID8gY2xvc2UgOiBudWxsLFxuICAgICAgQXJyb3dEb3duOiBkb3duLmJpbmQodGhpcyksXG4gICAgICBBcnJvd1VwOiB1cC5iaW5kKHRoaXMpLFxuICAgICAgRXNjYXBlOiBvbkVzYy5iaW5kKHRoaXMpLFxuICAgICAgQmFja3NwYWNlOiBtdWx0aXBsZSAmJiBoYXNTZWxlY3Rpb24gJiYgIXRleHQgPyBvbkJhY2tzcGFjZS5iaW5kKHRoaXMpIDogbnVsbCxcbiAgICB9XG4gICAgY29uc3QgZm4gPSBmbm1hcFtrZXldXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBmbihlKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uS2V5UHJlc3MoZSkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJvbktleVByZXNzXCIpXG4gICAgfVxuXG4gICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uRW50ZXIoZSlcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbkVudGVyKGUpIHtcbiAgICBpZiAob3BlbmVkKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIHNlbGVjdEl0ZW0oKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uSW5wdXQoZSkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJvbklucHV0XCIpXG4gICAgfVxuXG4gICAgdGV4dCA9IGUudGFyZ2V0LnZhbHVlXG4gICAgaWYgKGlucHV0RGVsYXlUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQoaW5wdXREZWxheVRpbWVvdXQpXG4gICAgfVxuXG4gICAgaWYgKGRlbGF5KSB7XG4gICAgICBpbnB1dERlbGF5VGltZW91dCA9IHNldFRpbWVvdXQocHJvY2Vzc0lucHV0LCBkZWxheSlcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzc0lucHV0KClcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB1bnNlbGVjdEl0ZW0odGFnKSB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcInVuc2VsZWN0SXRlbVwiLCB0YWcpXG4gICAgfVxuICAgIHNlbGVjdGVkSXRlbSA9IHNlbGVjdGVkSXRlbS5maWx0ZXIoKGkpID0+IGkgIT09IHRhZylcbiAgICBpbnB1dC5mb2N1cygpXG4gIH1cblxuICBmdW5jdGlvbiBwcm9jZXNzSW5wdXQoKSB7XG4gICAgaWYgKHNlYXJjaCgpKSB7XG4gICAgICBoaWdobGlnaHRJbmRleCA9IDBcbiAgICAgIG9wZW4oKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uSW5wdXRDbGljaygpIHtcbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwib25JbnB1dENsaWNrXCIpXG4gICAgfVxuICAgIHJlc2V0TGlzdFRvQWxsSXRlbXNBbmRPcGVuKClcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRXNjKGUpIHtcbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwib25Fc2NcIilcbiAgICB9XG5cbiAgICAvL2lmICh0ZXh0KSByZXR1cm4gY2xlYXIoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKG9wZW5lZCkge1xuICAgICAgaW5wdXQuZm9jdXMoKVxuICAgICAgY2xvc2UoKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uQmFja3NwYWNlKGUpIHtcbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwib25CYWNrc3BhY2VcIilcbiAgICB9XG5cbiAgICB1bnNlbGVjdEl0ZW0oc2VsZWN0ZWRJdGVtW3NlbGVjdGVkSXRlbS5sZW5ndGggLSAxXSlcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRm9jdXNJbnRlcm5hbCgpIHtcbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwib25Gb2N1c1wiKVxuICAgIH1cblxuICAgIG9uRm9jdXMoKVxuXG4gICAgcmVzZXRMaXN0VG9BbGxJdGVtc0FuZE9wZW4oKVxuICB9XG5cbiAgZnVuY3Rpb24gb25CbHVySW50ZXJuYWwoKSB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIm9uQmx1clwiKVxuICAgIH1cblxuICAgIGlmIChjbG9zZU9uQmx1cikge1xuICAgICAgY2xvc2UoKVxuICAgIH1cblxuICAgIG9uQmx1cigpXG4gIH1cblxuICBmdW5jdGlvbiByZXNldExpc3RUb0FsbEl0ZW1zQW5kT3BlbigpIHtcbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwicmVzZXRMaXN0VG9BbGxJdGVtc0FuZE9wZW5cIilcbiAgICB9XG5cbiAgICBpZiAoc2VhcmNoRnVuY3Rpb24gJiYgIWxpc3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHNlYXJjaCgpXG4gICAgfSBlbHNlIGlmICghdGV4dCkge1xuICAgICAgZmlsdGVyZWRMaXN0SXRlbXMgPSBsaXN0SXRlbXNcbiAgICB9XG5cbiAgICBvcGVuKClcblxuICAgIC8vIGZpbmQgc2VsZWN0ZWQgaXRlbVxuICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcbiAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlNlYXJjaGluZyBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbTogXCIgKyBKU09OLnN0cmluZ2lmeShzZWxlY3RlZEl0ZW0pKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBpbmRleCA9IGZpbmRJdGVtSW5kZXgoc2VsZWN0ZWRJdGVtLCBmaWx0ZXJlZExpc3RJdGVtcylcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIGhpZ2hsaWdodEluZGV4ID0gaW5kZXhcbiAgICAgICAgaGlnaGxpZ2h0KClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBmaW5kSXRlbUluZGV4KGl0ZW0sIGl0ZW1zKSB7XG4gICAgaWYgKGRlYnVnKSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkZpbmRpbmcgaW5kZXggZm9yIGl0ZW1cIiwgaXRlbSlcbiAgICB9XG4gICAgbGV0IGluZGV4ID0gLTFcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBsaXN0SXRlbSA9IGl0ZW1zW2ldXG4gICAgICBpZiAoXCJ1bmRlZmluZWRcIiA9PT0gdHlwZW9mIGxpc3RJdGVtKSB7XG4gICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBsaXN0SXRlbSAke2l9IGlzIHVuZGVmaW5lZC4gU2tpcHBpbmcuYClcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiSXRlbSBcIiArIGkgKyBcIjogXCIgKyBKU09OLnN0cmluZ2lmeShsaXN0SXRlbSkpXG4gICAgICB9XG4gICAgICBpZiAoaXRlbSA9PT0gbGlzdEl0ZW0uaXRlbSkge1xuICAgICAgICBpbmRleCA9IGlcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiRm91bmQgaW5kZXggZm9yIGl0ZW06IFwiICsgaW5kZXgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJOb3QgZm91bmQgaW5kZXggZm9yIGl0ZW06IFwiICsgaXRlbSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBvcGVuKCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJvcGVuXCIpXG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgdGhlIHNlYXJjaCB0ZXh0IGhhcyBtb3JlIHRoYW4gdGhlIG1pbiBjaGFycyByZXF1aXJlZFxuICAgIGlmIChsb2NrZWQgfHwgbm90RW5vdWdoU2VhcmNoVGV4dCgpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRQb3NpdGlvbk9uTmV4dFVwZGF0ZSA9IHRydWVcblxuICAgIG9wZW5lZCA9IHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsb3NlKCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJjbG9zZVwiKVxuICAgIH1cbiAgICBvcGVuZWQgPSBmYWxzZVxuICAgIGxvYWRpbmcgPSBmYWxzZVxuXG4gICAgaWYgKCF0ZXh0ICYmIHNlbGVjdEZpcnN0SWZFbXB0eSkge1xuICAgICAgaGlnaGxpZ2h0SW5kZXggPSAwXG4gICAgICBzZWxlY3RJdGVtKClcbiAgICB9XG4gI
41H1cblxuICBmdW5jdGlvbiBub3RFbm91Z2hTZWFyY2hUZXh0KCkge1xuICAgIHJldHVybiAoXG4gICAgICBtaW5DaGFyYWN0ZXJzVG9TZWFyY2ggPiAwICYmXG4gICAgICBmaWx0ZXJlZFRleHRMZW5ndGggPCBtaW5DaGFyYWN0ZXJzVG9TZWFyY2ggJiZcbiAgICAgIC8vIFdoZW4gbm8gc2VhcmNoRnVuY3Rpb24gaXMgZGVmaW5lZCwgdGhlIG1lbnUgc2hvdWxkIGFsd2F5cyBvcGVuIHdoZW4gdGhlIGlucHV0IGlzIGZvY3VzZWRcbiAgICAgIChzZWFyY2hGdW5jdGlvbiB8fCBmaWx0ZXJlZFRleHRMZW5ndGggPiAwKVxuICAgIClcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsb3NlSWZNaW5DaGFyc1RvU2VhcmNoUmVhY2hlZCgpIHtcbiAgICBpZiAobm90RW5vdWdoU2VhcmNoVGV4dCgpKSB7XG4gICAgICBjbG9zZSgpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgIGlmIChkZWJ1Zykge1xuICAgICAgY29uc29sZS5sb2coXCJjbGVhclwiKVxuICAgIH1cblxuICAgIHRleHQgPSBcIlwiXG4gICAgc2VsZWN0ZWRJdGVtID0gbXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZFxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpbnB1dC5mb2N1cygpXG4gICAgfSlcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHRGaWx0ZXIoa2V5d29yZHMsIGZpZWxkKSB7XG4gICAgcmV0dXJuIChpdGVtKSA9PiB7XG4gICAgICBsZXQgbGFiZWwgPSBpdGVtW2ZpZWxkXVxuXG4gICAgICBjb25zdCBuZXdJdGVtID0gT2JqZWN0LmFzc2lnbih7IGhpZ2hsaWdodGVkOiB1bmRlZmluZWQgfSwgaXRlbSlcbiAgICAgIG5ld0l0ZW0uaGlnaGxpZ2h0ZWQgPSBsYWJlbFxuXG4gICAgICBjb25zdCBsYWJlbExvd2VyY2FzZSA9IGxhYmVsLnRvTG93ZXJDYXNlKClcbiAgICAgIGNvbnN0IGxhYmVsTG93ZXJjYXNlTm9BYyA9IGlnbm9yZUFjY2VudHMgPyByZW1vdmVBY2NlbnRzKGxhYmVsTG93ZXJjYXNlKSA6IGxhYmVsTG93ZXJjYXNlXG5cbiAgICAgIGlmIChrZXl3b3JkcyAmJiBrZXl3b3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25zID0gW11cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXdvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbGV0IGtleXdvcmQgPSBrZXl3b3Jkc1tpXVxuICAgICAgICAgIGlmIChpZ25vcmVBY2NlbnRzKSB7XG4gICAgICAgICAgICBrZXl3b3JkID0gcmVtb3ZlQWNjZW50cyhrZXl3b3JkKVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBrZXl3b3JkTGVuID0ga2V5d29yZC5sZW5ndGhcblxuICAgICAgICAgIGxldCBwb3MxID0gMFxuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIHBvczEgPSBsYWJlbExvd2VyY2FzZU5vQWMuaW5kZXhPZihrZXl3b3JkLCBwb3MxKVxuICAgICAgICAgICAgaWYgKHBvczEgPj0gMCkge1xuICAgICAgICAgICAgICBsZXQgcG9zMiA9IHBvczEgKyBrZXl3b3JkTGVuXG4gICAgICAgICAgICAgIHBvc2l0aW9ucy5wdXNoKFtwb3MxLCBwb3MyXSlcbiAgICAgICAgICAgICAgcG9zMSA9IHBvczJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IHdoaWxlIChwb3MxICE9PSAtMSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb3NpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGtleXdvcmRQYXR0ZXJucyA9IG5ldyBTZXQoKVxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwYWlyID0gcG9zaXRpb25zW2ldXG4gICAgICAgICAgICBjb25zdCBwb3MxID0gcGFpclswXVxuICAgICAgICAgICAgY29uc3QgcG9zMiA9IHBhaXJbMV1cblxuICAgICAgICAgICAgY29uc3Qga2V5d29yZFBhdHRlcm4gPSBsYWJlbExvd2VyY2FzZS5zdWJzdHJpbmcocG9zMSwgcG9zMilcbiAgICAgICAgICAgIGtleXdvcmRQYXR0ZXJucy5hZGQoa2V5d29yZFBhdHRlcm4pXG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGtleXdvcmRQYXR0ZXJuIG9mIGtleXdvcmRQYXR0ZXJucykge1xuICAgICAgICAgICAgLy8gRklYTUUgcHN0OiB3b3JrYXJvbmQgZm9yIHdyb25nIHJlcGxhY2VtZW50IDxiPiB0YWdzXG4gICAgICAgICAgICBpZiAoa2V5d29yZFBhdHRlcm4gPT09IFwiYlwiKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKFwiKFwiICsga2V5d29yZFBhdHRlcm4gKyBcIilcIiwgXCJpZ1wiKVxuXG4gICAgICAgICAgICBjb25zdCBuZXdIaWdobGlnaHRlZCA9IG5ld0l0ZW0uaGlnaGxpZ2h0ZWQucmVwbGFjZShyZWcsIFwiPGI+JDE8L2I+XCIpXG4gICAgICAgICAgICBuZXdJdGVtLmhpZ2hsaWdodGVkID0gbmV3SGlnaGxpZ2h0ZWRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ld0l0ZW1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZW1vdmVBY2NlbnRzKHN0cikge1xuICAgIHJldHVybiBzdHIubm9ybWFsaXplKFwiTkZEXCIpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csIFwiXCIpXG4gIH1cblxuICBmdW5jdGlvbiBpc0NvbmZpcm1lZChsaXN0SXRlbSkge1xuICAgIGlmICghc2VsZWN0ZWRJdGVtKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICByZXR1cm4gc2VsZWN0ZWRJdGVtLmluY2x1ZGVzKGxpc3RJdGVtKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGlzdEl0ZW0gPT09IHNlbGVjdGVkSXRlbVxuICAgIH1cbiAgfVxuXG4gIGxldCBkcmFnZ2luZ092ZXIgPSBmYWxzZVxuXG4gIGZ1bmN0aW9uIGRyYWdzdGFydChldmVudCwgaW5kZXgpIHtcbiAgICBpZiAob3JkZXJhYmxlU2VsZWN0aW9uKSB7XG4gICAgICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShcInNvdXJjZVwiLCBpbmRleClcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkcmFnb3ZlcihldmVudCwgaW5kZXgpIHtcbiAgICBpZiAob3JkZXJhYmxlU2VsZWN0aW9uKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICBkcmFnZ2luZ092ZXIgPSBpbmRleFxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRyYWdsZWF2ZShldmVudCwgaW5kZXgpIHtcbiAgICBpZiAob3JkZXJhYmxlU2VsZWN0aW9uKSB7XG4gICAgICBkcmFnZ2luZ092ZXIgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGRyb3AoZXZlbnQsIGluZGV4KSB7XG4gICAgaWYgKG9yZGVyYWJsZVNlbGVjdGlvbikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgZHJhZ2dpbmdPdmVyID0gZmFsc2VcbiAgICAgIGxldCBmcm9tID0gcGFyc2VJbnQoZXZlbnQuZGF0YVRyYW5zZmVyLmdldERhdGEoXCJzb3VyY2VcIikpXG4gICAgICBsZXQgdG8gPSBpbmRleFxuICAgICAgaWYgKGZyb20gIT0gdG8pIHtcbiAgICAgICAgbW92ZVNlbGVjdGVkSXRlbShmcm9tLCB0bylcbiAgICAgIH1cbiAgICB9XG4gI
41H1cblxuICBmdW5jdGlvbiBtb3ZlU2VsZWN0ZWRJdGVtKGZyb20sIHRvKSB7XG4gICAgbGV0IG5ld1NlbGVjdGlvbiA9IFsuLi5zZWxlY3RlZEl0ZW1dXG4gICAgaWYgKGZyb20gPCB0bykge1xuICAgICAgbmV3U2VsZWN0aW9uLnNwbGljZSh0byArIDEsIDAsIG5ld1NlbGVjdGlvbltmcm9tXSlcbiAgICAgIG5ld1NlbGVjdGlvbi5zcGxpY2UoZnJvbSwgMSlcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3U2VsZWN0aW9uLnNwbGljZSh0bywgMCwgbmV3U2VsZWN0aW9uW2Zyb21dKVxuICAgICAgbmV3U2VsZWN0aW9uLnNwbGljZShmcm9tICsgMSwgMSlcbiAgICB9XG4gICAgc2VsZWN0ZWRJdGVtID0gbmV3U2VsZWN0aW9uXG4gIH1cblxuICBmdW5jdGlvbiBzZXRTY3JvbGxBd2FyZUxpc3RQb3NpdGlvbigpIHtcbiAgICBjb25zdCB7IGhlaWdodDogdmlld1BvcnRIZWlnaHQgfSA9IHdpbmRvdy52aXN1YWxWaWV3cG9ydFxuICAgIGNvbnN0IHsgYm90dG9tOiBpbnB1dEJ1dHRvbSwgaGVpZ2h0OiBpbnB1dEhlaWdodCB9ID0gaW5wdXRDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCB7IGhlaWdodDogbGlzdEhlaWdodCB9ID0gbGlzdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuXG4gICAgaWYgKGlucHV0QnV0dG9tICsgbGlzdEhlaWdodCA+IHZpZXdQb3J0SGVpZ2h0KSB7XG4gICAgICBsaXN0LnN0eWxlLnRvcCA9IGAtJHtpbnB1dEhlaWdodCArIGxpc3RIZWlnaHR9cHhgXG4gICAgfSBlbHNlIHtcbiAgICAgIGxpc3Quc3R5bGUudG9wID0gXCIwcHhcIlxuICAgIH1cbiAgfVxuPC9zY3JpcHQ+XG48ZGl2XG4gIGNsYXNzPVwie2NsYXNzTmFtZSA/IGNsYXNzTmFtZSA6ICcnfSBhdXRvY29tcGxldGUgc2VsZWN0IGlzLWZ1bGx3aWR0aCB7dW5pcXVlSWR9XCJcbiAgY2xhc3M6aGlkZS1hcnJvdz17aGlkZUFycm93IHx8ICFpdGVtcy5sZW5ndGh9XG4gIGNsYXNzOmlzLW11bHRpcGxlPXttdWx0aXBsZX1cbiAgY2xhc3M6c2hvdy1jbGVhcj17Y2xlYXJhYmxlfVxuICBjbGFzczppcy1sb2FkaW5nPXtzaG93TG9hZGluZ0luZGljYXRvciAmJiBsb2FkaW5nfVxuPlxuICA8c2VsZWN0IG5hbWU9e3NlbGVjdE5hbWV9IGlkPXtzZWxlY3RJZH0ge211bHRpcGxlfT5cbiAgICB7I2lmICFtdWx0aXBsZSAmJiBoYXNTZWxlY3Rpb259XG4gICAgICA8b3B0aW9uIHZhbHVlPXt2YWx1ZUZ1bmN0aW9uKHNlbGVjdGVkSXRlbSwgdHJ1ZSl9IHNlbGVjdGVkPlxuICAgICAgICB7c2FmZUxhYmVsRnVuY3Rpb24oc2VsZWN0ZWRJdGVtKX1cbiAgICAgIDwvb3B0aW9uPlxuICAgIHs6ZWxzZSBpZiBtdWx0aXBsZSAmJiBoYXNTZWxlY3Rpb259XG4gICAgICB7I2VhY2ggc2VsZWN0ZWRJdGVtIGFzIGl9XG4gICAgICAgIDxvcHRpb24gdmFsdWU9e3ZhbHVlRnVuY3Rpb24oaSwgdHJ1ZSl9IHNlbGVjdGVkPlxuICAgICAgICAgIHtzYWZlTGFiZWxGdW5jdGlvbihpKX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICB7L2VhY2h9XG4gICAgey9pZn1cbiAgPC9zZWxlY3Q+XG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXJcIiBiaW5kOnRoaXM9e2lucHV0Q29udGFpbmVyfT5cbiAgICB7I2lmIG11bHRpcGxlICYmIGhhc1NlbGVjdGlvbn1cbiAgICAgIHsjZWFjaCBzZWxlY3RlZEl0ZW0gYXMgdGFnSXRlbSwgaSAodmFsdWVGdW5jdGlvbih0YWdJdGVtLCB0cnVlKSl9XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkcmFnZ2FibGU9e3RydWV9XG4gICAgICAgICAgYW5pbWF0ZTpmbGlwPXt7IGR1cmF0aW9uOiAyMDAgfX1cbiAgICAgICAgICB0cmFuc2l0aW9uOmZhZGU9e3sgZHVyYXRpb246IDIwMCB9fVxuICAgICAgICAgIG9uOmRyYWdzdGFydD17KGV2ZW50KSA9PiBkcmFnc3RhcnQoZXZlbnQsIGkpfVxuICAgICAgICAgIG9uOmRyYWdvdmVyPXsoZXZlbnQpID0+IGRyYWdvdmVyKGV2ZW50LCBpKX1cbiAgICAgICAgICBvbjpkcmFnbGVhdmU9eyhldmVudCkgPT4gZHJhZ2xlYXZlKGV2ZW50LCBpKX1cbiAgICAgICAgICBvbjpkcm9wPXsoZXZlbnQpID0+IGRyb3AoZXZlbnQsIGkpfVxuICAgICAgICAgIGNsYXNzOmlzLWFjdGl2ZT17ZHJhZ2dpbmdPdmVyID09PSBpfVxuICAgICAgICA+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInRhZ1wiIGxhYmVsPXtzYWZlTGFiZWxGdW5jdGlvbih0YWdJdGVtKX0gaXRlbT17dGFnSXRlbX0ge3Vuc2
41VsZWN0SXRlbX0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFncyBoYXMtYWRkb25zXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFnXCI+e3NhZmVMYWJlbEZ1bmN0aW9uKHRhZ0l0ZW0pfTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhZyBpcy1kZWxldGVcIlxuICAgICAgICAgICAgICAgIG9uOmNsaWNrfHByZXZlbnREZWZhdWx0PXt1bnNlbGVjdEl0ZW0odGFnSXRlbSl9XG4gICAgICAgICAgICAgICAgb246a2V5cHJlc3N8cHJldmVudERlZmF1bHQ9eyhlKSA9PiB7ZS5rZXkgPT0gXCJFbnRlclwiICYmIHVuc2VsZWN0SXRlbSh0YWdJdGVtKX19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgey9lYWNofVxuICAgIHsvaWZ9XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cIntpbnB1dENsYXNzTmFtZSA/IGlucHV0Q2xhc3NOYW1lIDogJyd9IHtub0lucHV0U3R5bGVzXG4gICAgICAgID8gJydcbiAgICAgICAgOiAnaW5wdXQgYXV0b2NvbXBsZXRlLWlucHV0J31cIlxuICAgICAgaWQ9e2lucHV0SWQgPyBpbnB1dElkIDogXCJcIn1cbiAgICAgIGF1dG9jb21wbGV0ZT17aHRtbDVhdXRvY29tcGxldGUgPyBcIm9uXCIgOiBhdXRvY29tcGxldGVPZmZWYWx1ZX1cbiAgICAgIHtwbGFjZWhvbGRlcn1cbiAgICAgIHtuYW1lfVxuICAgICAge2Rpc2FibGVkfVxuICAgICAge3JlcXVpcmVkfVxuICAgICAge3RpdGxlfVxuICAgICAgcmVhZG9ubHk9e3JlYWRvbmx5IHx8IGxvY2tlZH1cbiAgICAgIHt0YWJpbmRleH1cbiAgICAgIGJpbmQ6dGhpcz17aW5wdXR9XG4gICAgICBiaW5kOnZhbHVlPXt0ZXh0fVxuICAgICAgb246aW5wdXQ9e29uSW5wdXR9XG4gICAgICBvbjpmb2N1cz17b25Gb2N1c0ludGVybmFsfVxuICAgICAgb246Ymx1cj17b25CbHVySW50ZXJuYWx9XG4gICAgICBvbjprZXlkb3duPXtvbktleURvd259XG4gICAgICBvbjpjbGljaz17b25JbnB1dENsaWNrfVxuICAgICAgb246a2V5cHJlc3M9e29uS2V5UHJlc3N9XG4gICAgICBvbjpkcmFnb3Zlcj17KGV2ZW50KSA9PiBkcmFnb3ZlcihldmVudCwgc2VsZWN0ZWRJdGVtLmxlbmd0aCAtIDEpfVxuICAgICAgb246ZHJvcD17KGV2ZW50KSA9PiBkcm9wKGV2ZW50LCBzZWxlY3RlZEl0ZW0ubGVuZ3RoIC0gMSl9XG4gICAgICB7Li4uJCRyZXN0UHJvcHN9XG4gICAgLz5cbiAgICB7I2lmIGNsZWFyYWJsZX1cbiAgICAgIDxzcGFuXG4gICAgICAgIG9uOmNsaWNrPXtjbGVhcn1cbiAgICAgICAgb246a2V5cHJlc3M9eyhlKSA9PiB7ZS5rZXkgPT0gXCJFbnRlclwiICYmIGNsZWFyKCl9fVxuICAgICAgICBjbGFzcz1cImF1dG9jb21wbGV0ZS1jbGVhci1idXR0b25cIlxuICAgICAgICA+e0BodG1sIGNsZWFyVGV4dH08L3NwYW4+XG4gICAgey9pZn1cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cIntkcm9wZG93bkNsYXNzTmFtZSA/IGRyb3Bkb3duQ2xhc3NOYW1lIDogJyd9IGF1dG9jb21wbGV0ZS1saXN0IHtzaG93TGlzdCA/ICcnIDogJ2hpZGRlbid9XG4gICAgaXMtZnVsbHdpZHRoXCJcbiAgICBiaW5kOnRoaXM9e2xpc3R9XG4gID5cbiAgICB7I2lmIGZpbHRlcmVkTGlzdEl0ZW1zICYmIGZpbHRlcmVkTGlzdEl0ZW1zLmxlbmd0aCA+IDB9XG4gICAgICA8c2xvdCBuYW1lPVwiZHJvcGRvd24taGVhZGVyXCIgbmJJdGVtcz17ZmlsdGVyZWRMaXN0SXRlbXMubGVuZ3RofSB7bWF4SXRlbXNUb1Nob3dJbkxpc3R9IC8+XG5cbiAgICAgIHsjZWFjaCBmaWx0ZXJlZExpc3RJdGVtcyBhcyBsaXN0SXRlbSwgaX1cbiAgICAgICAgeyNpZiBsaXN0SXRlbSAmJiAobWF4SXRlbXNUb1Nob3dJbkxpc3QgPD0gMCB8fCBpIDwgbWF4SXRlbXNUb1Nob3dJbkxpc3QpfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYXV0b2NvbXBsZXRlLWxpc3QtaXRlbVwiXG4gICAgICAgICAgICBjbGFzczpzZWxlY3RlZD17aSA9PT0gaGlnaGxpZ2h0SW5kZXh9XG4gICAgICAgICAgICBjbGFzczpjb25maXJtZWQ9e2lzQ29uZmlybWVkKGxpc3RJdGVtLml0ZW0pfVxuICAgICAgICAgICAgb246Y2xpY2s9eygpID0+IG9uTGlzdEl0ZW1DbGljayhsaXN0SXRlbSl9XG4gICAgICAgICAgICBvbjprZXlwcmVzcz17KGUpID0+IHtlLmtleSA9PSBcIkVudGVyXCIgJiYgb25MaXN0SXRlbUNsaWNrKGxpc3RJdGVtKX19XG4gICAgICAgICAgICBvbjpwb2ludGVyZW50ZXI9eygpID0+IHtcbiAgICAgICAgICAgICAgaGlnaGxpZ2h0SW5kZXggPSBpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgIG5hbWU9XCJpdGVtXCJcbiAgICAgICAgICAgICAgaXRlbT17bGlzdEl0ZW0uaXRlbX1cbiAgICAgICAgICAgICAgbGFiZWw9e2xpc3RJdGVtLmhpZ2hsaWdodGVkID8gbGlzdEl0ZW0uaGlnaGxpZ2h0ZWQgOiBsaXN0SXRlbS5sYWJlbH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyNpZiBsaXN0SXRlbS5oaWdobGlnaHRlZH1cbiAgICAgICAgICAgICAgICB7QGh0bWwgbGlzdEl0ZW0uaGlnaGxpZ2h0ZWR9XG4gICAgICAgICAgICAgIHs6ZWxzZX1cbiAgICAgICAgICAgICAgICB7QGh0bWwgbGlzdEl0ZW0ubGFiZWx9XG4gICAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgICA8L3Nsb3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIHsvaWZ9XG4gICAgICB7L2VhY2h9XG5cbiAgICAgIDxzbG90IG5hbWU9XCJkcm9wZG93bi1mb290ZXJcIiBuYkl0ZW1zPXtmaWx0ZXJlZExpc3RJdGVtcy5sZW5ndGh9IHttYXhJdGVtc1RvU2hvd0luTGlzdH0+XG4gICAgICAgIHsjaWYgbWF4SXRlbXNUb1Nob3dJbkxpc3QgPiAwICYmIGZpbHRlcmVkTGlzdEl0ZW1zLmxlbmd0aCA+IG1heEl0ZW1zVG9TaG93SW5MaXN0fVxuICAgICAgICAgIHsjaWYgbW9yZUl0ZW1zVGV4dH1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtbGlzdC1pdGVtLW5vLXJlc3VsdHNcIj5cbiAgICAgICAgICAgICAgLi4ue2ZpbHRlcmVkTGlzdEl0ZW1zLmxlbmd0aCAtIG1heEl0ZW1zVG9TaG93SW5MaXN0fVxuICAgICAgICAgICAgICB7bW9yZUl0ZW1zVGV4dH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgI
41HsvaWZ9XG4gICAgICAgIHsvaWZ9XG4gICAgICA8L3Nsb3Q+XG4gICAgezplbHNlIGlmIGxvYWRpbmcgJiYgbG9hZGluZ1RleHR9XG4gICAgICA8ZGl2IGNsYXNzPVwiYXV0b2NvbXBsZXRlLWxpc3QtaXRlbS1sb2FkaW5nXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJsb2FkaW5nXCIge2xvYWRpbmdUZXh0fT57bG9hZGluZ1RleHR9PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgezplbHNlIGlmIGNyZWF0ZX1cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJhdXRvY29tcGxldGUtbGlzdC1pdGVtLWNyZWF0ZVwiXG4gICAgICAgIG9uOmNsaWNrPXtzZWxlY3RJdGVtfVxuICAgICAgICBvbjprZXlwcmVzcz17KGUpID0+IHtlLmtleSA9PSBcIkVudGVyXCIgJiYgc2VsZWN0SXRlbSgpfX1cbiAgICAgID5cbiAgICAgICAgPHNsb3QgbmFtZT1cImNyZWF0ZVwiIHtjcmVhdGVUZXh0fT57Y3JlYXRlVGV4dH08L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICB7OmVsc2UgaWYgbm9SZXN1bHRzVGV4dH1cbiAgICAgIDxkaXYgY2xhc3M9XCJhdXRvY29tcGxldGUtbGlzdC1pdGVtLW5vLXJlc3VsdHNcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cIm5vLXJlc3VsdHNcIiB7bm9SZXN1bHRzVGV4dH0+e25vUmVzdWx0c1RleHR9PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgey9pZn1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPHN2ZWx0ZTp3aW5kb3cgb246Y2xpY2s9e29uRG9jdW1lbnRDbGlja30gb246c2Nyb2xsPXsoKSA9PiBzZXRQb3NpdGlvbk9uTmV4dFVwZGF0ZSA9IHRydWV9IC8+XG5cbjxzdHlsZT5cbiAgLmF1dG9jb21wbGV0ZSB7XG4gICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIGhlaWdodDogMi4yNWVtO1xuICB9XG5cbiAgLmF1dG9jb21wbGV0ZTpub3QoLmhpZGUtYXJyb3cpOm5vdCguaXMtbG9hZGluZyk6OmFmdGVyIHtcbiAgICBib3JkZXI6IDNweCBzb2xpZDtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIGJvcmRlci10b3A6IDA7XG4gICAgY29udGVudDogXCIgXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwLjYyNWVtO1xuICAgIG1hcmdpbi10b3A6IC0wLjQzNzVlbTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgIHdpZHRoOiAwLjYyNWVtO1xuICAgIGJvcmRlci1jb2xvcjogIzMyNzNkYztcbiAgICByaWdodDogMS4xMjVlbTtcbiAgICB6LWluZGV4OiA0O1xuICB9XG5cbiAgLmF1dG9jb21wbGV0ZS5zaG93LWNsZWFyOm5vdCguaGlkZS1hcnJvdyk6OmFmdGVyIHtcbiAgICByaWdodDogMi4zZW07XG4gIH1cblxuICAuYXV0b2NvbXBsZXRlICoge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgLmF1dG9jb21wbGV0ZS1pbnB1dCB7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgcGFkZGluZzogNXB4IDExcHg7XG4gIH1cblxuICAuYXV0b2NvbXBsZXRlOm5vdCguaGlkZS1hcnJvdykgLmF1dG9jb21wbGV0ZS1pbnB1dCB7XG4gICAgcGFkZGluZy1yaWdodDogMmVtO1xuICB9XG4gIC5hdXRvY29tcGxldGUuc2hvdy1jbGVhcjpub3QoLmhpZGUtYXJyb3cpIC5hdXRvY29tcGxldGUtaW5wdXQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDMuMmVtO1xuICB9XG4gIC5hdXRvY29tcGxldGUuaGlkZS1hcnJvdy5zaG93LWNsZWFyIC5hdXRvY29tcGxldGUtaW5wdXQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDJlbTtcbiAgfVxuXG4gIC5hdXRvY29tcGxldGUtbGlzdCB7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB6LWluZGV4OiA5OTtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgdG9wOiAwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzk5OTtcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDE1ICogKDFyZW0gKyAxMHB4KSArIDE1cHgpO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICB9XG4gIC5hdXRvY29tcGxldGUtbGlzdDplbXB0eSB7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICAuYXV0b2NvbXBsZXRlLWxpc3QtaXRlbSB7XG4gICAgcGFkZGluZzogNXB4IDE1cHg7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICB9XG5cbiAgLmF1dG9jb21wbGV0ZS1saXN0LWl0ZW0uY29uZmlybWVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzg5ZmVkO1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG4gIC5hdXRvY29tcGxldGUtbGlzdC1pdGVtLnNlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmU2OWUyO1xuICAgIGNvbG9yOiAjZmZmO1xuICB9XG4gIC5hdXRvY29tcGxldGUtbGlzdC1pdGVtLW5vLXJlc3VsdHMge1xuICAgIHBhZGRpbmc6IDVweCAxNXB4O1xuICAgIGNvbG9yOiAjOTk5O1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICB9XG4gIC5hdXRvY29tcGxldGUtbGlzdC1pdGVtLWNyZWF0ZSB7XG4gICAgcGFkZGluZzogNXB4IDE1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gIH1cbiAgLmF1dG9jb21wbGV0ZS1saXN0LWl0ZW0tbG9hZGluZyB7XG4gICAgcGFkZGluZzogNXB4IDE1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gIH1cblxuICAuYXV0b2NvbXBsZXRlLWxpc3QuaGlkZGVuIHtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cblxuICAuYXV0b2NvbXBsZXRlLnNob3ctY2xlYXIgLmF1dG9jb21wbGV0ZS1jbGVhci1idXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAwLjFlbTtcbiAgICBwYWRkaW5nOiAwLjNlbSAwLjZlbTtcbiAgICB0b3A6IDUwJTtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB6LWluZGV4OiA0O1xuICB9XG5cbiAgLmF1dG9jb21wbGV0ZTpub3QoLnNob3ctY2xlYXIpIC5hdXRvY29tcGxldGUtY2xlYXItYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmF1dG9jb21wbGV0ZSBzZWxlY3Qge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAuYXV0b2NvbXBsZXRlLmlzLW11bHRpcGxlIC5pbnB1dC1jb250YWluZXIge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgxMCwgMTAsIDEwLCAwLjEpO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYjViNWI1O1xuICAgIHBhZGRpbmctbGVmdDogMC40ZW07XG4gICAgcGFkZGluZy1yaWdodDogMC40ZW07XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgfVxuXG4gIC5hdXRvY29tcGxldGUuaXMtbXVsdGlwbGUgLnRhZyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXJnaW4tdG9wOiAwLjVlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjNlbTtcbiAgfVxuXG4gIC5hdXRvY29tcGxldGUuaXMtbXVsdGlwbGUgLnRhZy5pcy1kZWxldGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC5hdXRvY29tcGxldGUuaXMtbXVsdGlwbGUgLnRhZ3Mge1xuICAgIG1hcmdpbi1yaWdodDogMC4zZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC5hdXRvY29tcGxldGUuaXMtbXVsdGlwbGUgLmF1dG9jb21wbGV0ZS1pbnB1dCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbGV4OiAxIDEgNTBweDtcbiAgICBtaW4td2lkdGg6IDNlbTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IHticGNvbmZpZ30gZnJvbSAnQGxheW91dC9icC1saWIuanMnO1xuICBpbXBvcnQgQXV0b2NvbXBsZXRlIGZyb20gJ3NpbXBsZS1zdmVsdGUtYXV0b2NvbXBsZXRlJztcbiAgaW1wb3J0IEhlYWRsaW5lIGZyb20gJ0BsYXlvdXQvY29tcG9uZW50cy9mbGV4L0hlYWRsaW5lLnN2ZWx0ZSc7XG5cbiAgY29uc3Qgc2VhcmNoX3VybCA9ICcvZXMvc2VhcmNoJztcbiAgY29uc3Qgc2VhcmNoX29wdCA9IHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICB
41BY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICdBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4nOiAnKicsXG4gICAgICAnQ2FjaGUtQ29udHJvbCc6ICduby1jYWNoZSwgbm8tc3RvcmUnLFxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIFByYWdtYTogJ25vLWNhY2hlJyxcbiAgICB9LFxuICAgIGJvZHk6IG51bGwsXG4gIH07XG5cbiAgbGV0IHNlbGVjdGVkRHN0ID0gbnVsbDtcbiAgbGV0IHNlbGVjdGVkU3RyID0gbnVsbDtcbiAgbGV0IHNlbGVjdGVkSG5yID0gbnVsbDtcblxuICAkOiBjdXJyZW50RHN0ID0gbnVsbDtcbiAgJDogZm91bmREc3RzID0gW107XG5cbiAgJDoge1xuICAgIGlmIChjdXJyZW50RHN0ICE9PSBzZWxlY3RlZERzdCkge1xuICAgICAgY3VycmVudERzdCA9IHNlbGVjdGVkRHN0O1xuICAgICAgc2VsZWN0ZWRTdHIgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gICQ6IG1haW5kc3QgPSBjdXJyZW50RHN0ICYmIGN1cnJlbnREc3QuZHN0ID8gY3VycmVudERzdC5kc3Quc2hpZnQoKSA6IG51bGw7XG4gICQ6IGRzdHMgPSBjdXJyZW50RHN0ICYmIGN1cnJlbnREc3QuZHN0ID8gY3VycmVudERzdC5kc3QgOiBudWxsO1xuICAkOiBoYXNfc3RyZWV0cyA9ICEhKGN1cnJlbnREc3QgJiYgY3VycmVudERzdC5zdHJlZXRzID4gMCk7XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0R21kRGF0YShxdWVyeVN0cikge1xuICAgIHNlYXJjaF9vcHQuYm9keSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHR5cGU6ICdhY2dtZCcsXG4gICAgICBxOiBxdWVyeVN0cixcbiAgICB9KTtcblxuICAgIGxldCByZXNwID0gYXdhaXQgZmV0Y2goc2VhcmNoX3VybCwgc2VhcmNoX29wdCk7XG4gICAgbGV0IGpzb24gPSBhd2FpdCByZXNwLmpzb24oKTtcblxuICAgIGxldCBkYXRhID0gW107XG4gICAgaWYgKHJlc3Aub2spIHtcbiAgICAgIGpzb24uaGl0cy5oaXRzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGRzdHMgPSBbXTtcbiAgICAgICAgZW50cnkuX3NvdXJjZS5kc3QuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRzdCA9IHtcbiAgICAgICAgICAgIHRpdGxlOiBlLmRzdGRlc2MsXG4gICAgICAgICAgICBwbHo6IGUuZHN0cGx6LFxuICAgICAgICAgICAgZ21kOiBlLmRzdGdtZGt0LFxuICAgICAgICAgICAgc3RyOiBlLmRzdHN0ciArICcgJyArIGUuZHN0aG5yLFxuICAgICAgICAgICAgdGVsOiBlLmRzdHRlbGUsXG4gICAgICAgICAgICBmYXg6IGUuZHN0dGVsZixcbiAgICAgICAgICAgIGVtYzogYnBjb25maWcuZm9ybXMuY29udGFjdC5kc3QgKyBlLmRzdG9nMnMsXG4gICAgICAgICAgICBkc3M6IChlLnBhZ2UpID8gYnBjb25maWcuY2F0ZWdvcmllcy5kc3QgKyBlLmRzdG9nMnMgKyAnLmh0bWwnIDogJydcbiAgICAgICAgICB9O1xuICAgICAgICAgIGRzdHMucHVzaChkc3QpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBFaW5zYXR6b3J0IHp1c2FtbWVuc3RlbGxlblxuICAgICAgICBsZXQgcGx6ID1cbiAgICAgICAgICBlbnRyeS5fc291cmNlLnBseiA9PT0gOTk5OTkgfHwgZW50cnkuX3NvdXJjZS5wbHogPT09IG51bGxcbiAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgIDogZW50cnkuX3NvdXJjZS5wbHo7XG4gICAgICAgIGxldCBvcnRwbHogPSBwbHo7XG5cbiAgICAgICAgbGV0IGdtZCA9IGVudHJ5Ll9zb3VyY2UuZ21kO1xuICAgICAgICBsZXQgZ2R0ID0gZW50cnkuX3NvdXJjZS5nZHQ7XG5cbiAgICAgICAgaWYgKGVudHJ5LnhoaWdobGlnaHQpIHtcbiAgICAgICAgICBvcnRwbHogPSBlbnRyeS5oaWdobGlnaHQucGx6ID8gZW50cnkuaGlnaGxpZ2h0LnBselswXSA6IHBsejtcbiAgICAgICAgICBnbWQgPSBlbnRyeS5oaWdobGlnaHQuZ21kXG4gICAgICAgICAgICA/IGVudHJ5LmhpZ2hsaWdodC5nbWRbMF1cbiAgICAgICAgICAgIDogZW50cnkuX3NvdXJjZS5nbWQ7XG4gICAgICAgICAgZ2R0ID0gZW50cnkuaGlnaGxpZ2h0LmdkdFxuICAgICAgICAgICAgPyBlbnRyeS5oaWdobGlnaHQuZ2R0WzBdXG4gICAgICAgICAgICA6IGVudHJ5Ll9zb3VyY2UuZ2R0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFiZWwgPSBvcnRwbHogKyAnICcgKyBnbWQgKyAnICcgKyBnZHQ7XG4gICAgICAgIGNvbnN0IG9ydCA9IHtcbiAgICAgICAgICBrZXk6IGVudHJ5Ll9zb3VyY2Uua2V5LFxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgICAgICBnbWQ6IGVudHJ5Ll9zb3VyY2UuZ21kLFxuICAgICAgICAgIGdkdDogZW50cnkuX3NvdXJjZS5nZHQsXG4gICAgICAgICAgZ21kZ2R0OiBlbnRyeS5fc291cmNlLmdtZGdkdCxcbiAgICAgICAgICBkc3Q6IGRzdHMsXG4gICAgICAgICAgc3RyZWV0czogZW50cnkuX3NvdXJjZS5kc3RzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGRhdGEucHVzaChvcnQpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldFN0ckRhdGEoKSB7XG4gICAgY29uc3Qgc2VhcmNoT2JqID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZ21kOiBjdXJyZW50RHN0LmtleSxcbiAgICAgIHN0cjogc2VsZWN0ZWRTdHIsXG4gICAgICBobnI6IHNlbGVjdGVkSG5yLFxuICAgIH0pO1xuXG4gICAgc2VhcmNoX29wdC5ib2R5ID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdHlwZTogJ2Fjc3RyMicsXG4gICAgICBxOiBzZWFyY2hPYmosXG4gICAgfSk7XG5cbiAgICBsZXQgcmVzcCA9IGF3YWl0IGZldGNoKHNlYXJjaF91cmwsIHNlYXJjaF9vcHQpO1xuICAgIGxldCBqc29uID0gYXdhaXQgcmVzcC5qc29uKCk7XG5cbiAgICBsZXQgZGF0YSA9IFtdO1xuICAgIGlmIChyZXNwLm9rKSB7XG4gICAgICBqc29uLmhpdHMuaGl0cy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBkc3QgPSB7XG4gICAgICAgICAgdGl0bGU6IGVudHJ5Ll9zb3VyY2UuZHN0ZGVzYyxcbiAgICAgICAgICBwbHo6IGVudHJ5Ll9zb3VyY2UuZHN0cGx6LFxuICAgICAgICAgIGdtZDogZW50cnkuX3NvdXJjZS5kc3RnbWRrdCxcbiAgICAgICAgICBzdHI6IGVudHJ5Ll9zb3VyY2UuZHN0c3RyICsgJyAnICsgZW50cnkuX3NvdXJjZS5kc3Roc25yLFxuICAgICAgICAgI
41HRlbDogZW50cnkuX3NvdXJjZS5kc3R0ZWxlLFxuICAgICAgICAgIGZheDogZW50cnkuX3NvdXJjZS5kc3R0ZWxmLFxuICAgICAgICAgIGVtYzogYnBjb25maWcuZm9ybXMuY29udGFjdC5kc3QgKyBlbnRyeS5fc291cmNlLmRzdG9nMnMsXG4gICAgICAgICAgZHNzOiAoZW50cnkuX3NvdXJjZS5wYWdlKSA/IGJwY29uZmlnLmNhdGVnb3JpZXMuZHN0ICsgZW50cnkuX3NvdXJjZS5kc3RvZzJzICsgJy5odG1sJyA6ICcnXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHN0cmVldHMgPSBbXTtcbiAgICAgICAgZW50cnkuaW5uZXJfaGl0cy5kc3RzdHJlZXRzLmhpdHMuaGl0cy5mb3JFYWNoKChzdHJlZXQpID0+IHtcbiAgICAgICAgICBjb25zdCBoc25ydiA9IHN0cmVldC5fc291cmNlLnNrYWhzbnJ2XG4gICAgICAgICAgICA/IHBhcnNlSW50KHN0cmVldC5fc291cmNlLnNrYWhzbnJ2KVxuICAgICAgICAgICAgOiAwO1xuICAgICAgICAgIGNvbnN0IGhzbnJiID1cbiAgICAgICAgICAgIGhzbnJ2ICYmIHN0cmVldC5fc291cmNlLnNrYWhzbnJiXG4gICAgICAgICAgICAgID8gcGFyc2VJbnQoc3RyZWV0Ll9zb3VyY2Uuc2thaHNucmIpXG4gICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICBjb25zdCBoc25yID0gaHNucnYgPiAwICYmIGhzbnJiID4gMCA/ICcgJyArIGhzbnJ2ICsgJyAtICcgKyBoc25yYiA6ICcnO1xuXG4gICAgICAgICAgbGV0IHN0cl9uYW1lID1cbiAgICAgICAgICAgIHN0cmVldC5fc291cmNlLnNrYXBsenMgK1xuICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgIHN0cmVldC5oaWdobGlnaHRbXCJkc3RzdHJlZXRzLnNrYWtsYXJ0XCJdWzBdXG4gICAgICAgICAgICAgID8gc3RyZWV0LmhpZ2hsaWdodFtcImRzdHN0cmVldHMuc2tha2xhcnRcIl1bMF1cbiAgICAgICAgICAgICAgOiBzdHJlZXQuX3NvdXJjZS5za2FrbGFydDtcbiAgICAgICAgICBzdHJfbmFtZSArPSBoc25yO1xuXG4gICAgICAgICAgc3RyZWV0cy5wdXNoKHtcbiAgICAgICAgICAgIHR4dDogc3RyX25hbWUudHJpbSgpLFxuICAgICAgICAgICAga2V5OiBzdHJlZXQuX3NvdXJjZS5za2FrbGFydCxcbiAgICAgICAgICAgIHBsejogc3RyZWV0Ll9zb3VyY2Uuc2thcGx6cyxcbiAgICAgICAgICAgIGhzbnJ2OiBoc25ydixcbiAgICAgICAgICAgIGhzbnJiOiBoc25yYixcbiAgICAgICAgICAgIGhzbnI6IGhzbnJ2ID4gMCAmJiBoc25yYiA+IDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRhdGEucHVzaCh7XG4gICAgICAgICAgc2thOiBzdHJlZXRzLFxuICAgICAgICAgIGRzdDogZHN0XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGZvdW5kRHN0cyA9IGRhdGE7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVzIHd1cmRlIGF1ZiBlaW5lIFN0cmHDn2UgZ2VrbGlja3RcbiAgICovXG4gICBmdW5jdGlvbiBzdHJDbGlja2VkKCkge1xuICAgIHNlbGVjdGVkU3RyID0gdGhpcy5kYXRhc2V0LmtleTtcbiAgICBpZiAodGhpcy5kYXRhc2V0LnZvbiA9PT0gdGhpcy5kYXRhc2V0LmJpcykge1xuICAgICAgc2VsZWN0ZWRIbnIgPSB0aGlzLmRhdGFzZXQudm9uXG4gICAgfVxuICAgIGdldFN0ckRhdGEoKTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLWhucicpLmZvY3VzKCk7XG4gIH1cbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwiY29tcG9uZW50LXNlYXJjaC1kc3QgZ3JpZCBncmlkLWNvbHMtMSBnYXAtOFwiPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgtbm9kZSBtci00IHRleHQtMnhsIHRleHQtYnAtYmx1ZSBkYXJrOnRleHQtd2hpdGVcIj5cbiAgICAgIDxpXG4gICAgICAgIGNsYXNzPVwiZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzcy1sb2NhdGlvblwiXG4gICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgID48L2k+XG4gICAgPC9kaXY+XG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgc2VhcmNoRnVuY3Rpb249e2dldEdtZERhdGF9XG4gICAgICBjbGFzc05hbWU9XCJmbGV4LTEgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIHB4LTIgYmctd2hpdGUgZGFyazpiZy1ibGFjayB0ZXh0LWJsYWNrIGRhcms6dGV4dC13aGl0ZSBmb250LXNhbnMgcm91bmRlZC1ub25lIGJvcmRlciBib3JkZXItYnAtZ3JheS1taWRkbGUgZm9ybS1pbnB1dFwiXG4gICAgICBpbnB1dENsYXNzTmFtZT1cInctZnVsbCBkYXJrOmJnLWJsYWNrIGRhcms6dGV4dC13aGl0ZSBibG9jayBmb2N1czpvdXRsaW5lLW5vbmUgcC0wIGJvcmRlci0wIGZvbnQtaW5oZXJpdCB0ZXh0LWJhc2VcIlxuICAgICAgbm9JbnB1dFN0eWxlcz17dHJ1ZX1cbiAgICAgIGxvY2FsRmlsdGVyaW5nPXtmYWxzZX1cbiAgICAgIHNob3dMb2FkaW5nSW5kaWNhdG9yPXt0cnVlfVxuICAgICAgaGlkZUFycm93PXt0cnVlfVxuICAgICAgbGFiZWxGaWVsZE5hbWU9XCJsYWJlbFwiXG4gICAgICB2YWx1ZUZpZWxkTmFtZT1cImtleVwiXG4gICAgICBkZWxheT1cIjIwMFwiXG4gICAgICBwbGFjZWhvbGRlcj1cIkdlbWVpbmRlLCBHZW1laW5kZXRlaWwsIFN0YWR0XCJcbiAgICAgIGJpbmQ6c2VsZWN0ZWRJdGVtPXtzZWxlY3RlZERzdH1cbiAgICA+XG4gICAgICA8ZGl2IHNsb3Q9XCJpdGVtXCIgbGV0Oml0ZW0gbGV0OmxhYmVsPntAaHRtbCBsYWJlbH08L2Rpdj5cbiAgICAgIDxkaXYgc2xvdD1cImxvYWRpbmdcIj48c3Bhbj5FaW5lbiBrbGVpbmVuIE1vbWVudCBiaXR0ZS4uLjwvc3Bhbj48L2Rpdj5cbiAgICAgIDxkaXYgc2xvdD1cIm5vLXJlc3VsdHNcIj48c3Bhbj5LZWluZSBFaW50csOkZ2UgZ2VmdW5kZW48L3NwYW4+PC9kaXY+XG4gICAgPC9BdXRvY29tcGxldGU+XG4gIDwvZGl2PlxuXG4gIHsjaWYgY3VycmVudERzdH1cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBnYXAtOFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICA8SGVhZGxpbmUgdGl0bGU9XCJEaWVuc3RzdGVsbGVcIiBicGJvcmRlciBzaXplPVwiaDVcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBnYXAtOFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LTFcIj57Y3VycmVudERzdC
415sYWJlbH08L2Rpdj5cbiAgICAgICAgICB7I2lmIGhhc19zdHJlZXRzfVxuICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTBcIj5cbiAgICAgICAgICAgICAgRsO8ciB7Y3VycmVudERzdC5sYWJlbH0gc2luZCBtZWhyZXJlIFBvbGl6ZWlkaWVuc3RzdGVsbGVuIHp1c3TDpG5kaWcuPGJyXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIFN1Y2hlbiBTaWUgbWl0IGVpbmVtIFN0cmHDn2VubmFtZW4gd2VpdGVyIG9kZXIgd2VuZGVuIFNpZSBzaWNoIGFuIGRpZXNlXG4gICAgICAgICAgICAgIFBvbGl6ZWlkaWVuc3RzdGVsbGUuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgey9pZn1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWRzdFwiPlxuICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgIDxsaT57bWFpbmRzdC50aXRsZX08L2xpPlxuICAgICAgICAgICAgPGxpPnttYWluZHN0LnN0cn08L2xpPlxuICAgICAgICAgICAgPGxpPnttYWluZHN0LnBsen0ge21haW5kc3QuZ21kfTwvbGk+XG4gICAgICAgICAgICA8bGk+PGkgY2xhc3M9XCJtci0xIGZhLXNvbGlkIGZhLXBob25lIHctWzIwcHhdXCI+PC9pPnttYWluZHN0LnRlbH08L2xpPlxuICAgICAgICAgICAgPGxpPjxpIGNsYXNzPVwibXItMSBmYS1zb2xpZCBmYS1mYXggdy1bMjBweF1cIj48L2k+e21haW5kc3QuZmF4fTwvbGk+XG4gICAgICAgICAgICB7I2lmIG1haW5kc3QuZW1jICYmIG1haW5kc3QuZW1jLmxlbmd0aH1cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9e21haW5kc3QuZW1jfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgY2xhc3M9XCJ0ZXh0LWJwLWJsdWUgaG92ZXI6dW5kZXJsaW5lXCJcbiAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJtci0xIGZhLXNvbGlkIGZhLWVudmVsb3BlIHBvaW50ZXItZXZlbnRzLW5vbmUgdy1bMjBweF1cIj48L2k+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5Lb250YWt0PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgICB7I2lmIG1haW5kc3QuZHNzICYmIG1haW5kc3QuZHNzLmxlbmd0aH1cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9e21haW5kc3QuZHNzfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgY2xhc3M9XCJ0ZXh0LWJwLWJsdWUgaG92ZXI6dW5kZXJsaW5lXCJcbiAgICAgICAgICAgICAgICA+PGkgY2xhc3M9XCJtci0xIGZhLXNvbGlkIGZhLWxpbmsgcG9pbnRlci1ldmVudHMtbm9uZSB3LVsyMHB4XVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPldlaXRlcmUgSW5mb3JtYXRpb25lbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB7L2lmfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsjaWYgaGFzX3N0cmVldHN9XG4gICAgICAgIDxkZXRhaWxzIGNsYXNzPVwiZHVyYXRpb24tNTAwXCIgb3Blbj17dHJ1ZX0+XG4gICAgICAgICAgPHN1bW1hcnlcbiAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYm9yZGVyLXQgYm9yZGVyLWJwLWdyYXktbWlkZGxlIGJnLWluaGVyaXQgcHQtMlwiXG4gICAgICAgICAgICA+U3VjaGUgbmFjaCBTdHJhw59lXG4gICAgICAgICAgPC9zdW1tYXJ5PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgbXQtMiBncmlkIGdyaWQtY29scy0xIGdhcC04XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLThcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaCBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleC1ub2RlIG1yLTQgdGV4dC0yeGwgdGV4dC1icC1ibHVlIGRhcms6dGV4dC13aGl0ZVwiXG4gICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwiZmEtc29saWQgZmEtcm9hZFwiIHJvbGU9XCJwcmVzZW50YXRpb25cIiB0YWJpbmRleD1cIi0xXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJzZWFyY2gtc3RyXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInAtMiBib3JkZXIgYmctd2hpdGUgZGFyazpiZy1ibGFjayB0ZXh0LWJsYWNrIGRhcms6dGV4dC13aGl0ZSBmb250LXNhbnMgYm9yZGVyLWJwLWdyYXktbWlkZGxlIHBsYWNlaG9sZGVyOnRleHQtYnAtZ3JheS1kYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTdHJhw59lXCJcbiAgICAgICAgICAgICAgICAgICAgYmluZDp2YWx1ZT17c2VsZWN0ZWRTdHJ9XG4gICAgICAgICAgICAgICAgICAgIG9uOmlucHV0PXtnZXRTdHJEYXRhfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBpZD1cInNlYXJjaC1obnJcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC0yIGJvcmRlciBib3JkZXItcy0wIGJnLXdoaXRlIGRhcms6YmctYmxhY2sgdGV4dC1ibGFjayBkYXJrOnRleHQtd2hpdGUgZm9udC1zYW5zIGJvcmRlci1icC1ncmF5LW1pZGRsZSBwbGFjZWhvbGRlcjp0ZXh0LWJwLWdyYXktZGFyayBtYXgtdy1bODBweF1cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkhhdXMgTnIuXCJcbiAgICAgICAgICAgICAgICAgICAgYmluZDp2YWx1ZT17c2VsZWN0ZWRIbnJ9XG4gICAgICAgICAgICAgICAgICAgIG9uOmlucHV0PXtnZXRTdHJEYXRhfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgeyNpZiBmb3VuZERzdHMubGVuZ3RofVxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBncmlkIGdyaWQtY29scy0yIGdhcC00XCI+XG4gICAgICAgICAgICAgI
41HsjZWFjaCBmb3VuZERzdHMgYXMgZW50cnl9XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtc2thXCI+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgeyNlYWNoIGVudHJ5LnNrYSBhcyBza2F9XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtYnAtYmx1ZSBob3Zlcjp1bmRlcmxpbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgb246Y2xpY2t8cHJldmVudERlZmF1bHQ9e3N0ckNsaWNrZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLWtleT17c2thLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtcGx6PXtza2EucGx6fVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS12b249e3NrYS5oc25ydn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtYmlzPXtza2EuaHNucmJ9XG4gICAgICAgICAgICAgICAgICAgICAgPntAaHRtbCBza2EudHh0fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgey9lYWNofVxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWRzdFwiPlxuICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgIDxsaT57ZW50cnkuZHN0LnRpdGxlfTwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGk+e2VudHJ5LmRzdC5zdHJ9PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT57ZW50cnkuZHN0LnBsen0ge2VudHJ5LmRzdC5nbWR9PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT48aSBjbGFzcz1cIm1yLTEgZmEtc29saWQgZmEtcGhvbmUgcG9pbnRlci1ldmVudHMtbm9uZSB3LVsyMHB4XVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj48L2k+e2VudHJ5LmRzdC50ZWx9PC9saT5cbiAgICAgICAgICAgICAgICAgIDxsaT48aSBjbGFzcz1cIm1yLTEgZmEtc29saWQgZmEtZmF4IHBvaW50ZXItZXZlbnRzLW5vbmUgdy1bMjBweF1cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9pPntlbnRyeS5kc3QuZmF4fTwvbGk+XG4gICAgICAgICAgICAgICAgICB7I2lmIGVudHJ5LmRzdC5lbWMgJiYgZW50cnkuZHN0LmVtYy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7ZW50cnkuZHN0LmVtY31cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgY2xhc3M9XCJ0ZXh0LWJwLWJsdWUgaG92ZXI6dW5kZXJsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwibXItMSBmYS1zb2xpZCBmYS1lbnZlbG9wZSBwb2ludGVyLWV2ZW50cy1ub25lIHctWzIwcHhdXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Lb250YWt0IGF1Zm5laG1lbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgICAgICAgICB7I2lmIGVudHJ5LmRzdC5kc3MgJiYgZW50cnkuZHN0LmRzcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7ZW50cnkuZHN0LmRzc31cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgY2xhc3M9XCJ0ZXh0LWJwLWJsdWUgaG92ZXI6dW5kZXJsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgPjxpIGNsYXNzPVwibXItMSBmYS1zb2xpZCBmYS1saW5rIHBvaW50ZXItZXZlbnRzLW5vbmUgdy1bMjBweF1cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPldlaXRlcmUgSW5mb3JtYXRpb25lbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIHsvZWFjaH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgey9pZn1cblxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2RldGFpbHM+XG4gICAgICB7L2lmfVxuXG4gICAgICB7I2lmIGRzdHMgJiYgZHN0cy5sZW5ndGggPiAxfVxuICAgICAgICA8ZGV0YWlscyBjbGFzcz1cImR1cmF0aW9uLTUwMFwiIG9wZW49e2ZhbHNlfT5cbiAgICAgICAgICA8c3VtbWFyeVxuICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBib3JkZXItdCBib3JkZXItYnAtZ3JheS1taWRkbGUgYmctaW5oZXJpdCBwdC0yXCJcbiAgICAgICAgICAgID5XZWl0ZXJlIERpZW5zdHN0ZWxsZW46IHtkc3RzLmxlbmd0aH08L3N1bW1hcnlcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBnYXAtOFwiPlxuICAgICAgICAgICAgICB7I2VhY2ggZHN0cyBhcyBzdWJkc3R9XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICA8bGk+e3N1YmRzdC50aXRsZX08L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+e3N1YmRzdC5zdHJ9PC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPntzdWJkc3QucGx6fSB7c3ViZHN0LmdtZH08L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXItMSBmYS1zb2xpZCBmYS1waG9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2k+e3N1YmRzdC50ZWx9XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtci0xIGZhLXNvbGlkIGZhLWZheFwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgI
41HRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgID48L2k+e3N1YmRzdC5mYXh9XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIHsjaWYgc3ViZHN0LmVtYyAmJiBzdWJkc3QuZW1jLmxlbmd0aH1cbiAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPXtzdWJkc3QuZW1jfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJwLWJsdWUgaG92ZXI6dW5kZXJsaW5lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yLTEgZmEtc29saWQgZmEtZW52ZWxvcGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Lb250YWt0PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIHsvaWZ9XG4gICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB7L2VhY2h9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kZXRhaWxzPlxuICAgICAgey9pZn1cbiAgICA8L2Rpdj5cbiAgey9pZn1cbjwvZGl2PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cbiAgLnNlYXJjaCB7XG4gICAgOmdsb2JhbCguYXV0b2NvbXBsZXRlLWlucHV0KSB7XG4gICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICBib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICA6Z2xvYmFsKC5hdXRvY29tcGxldGUpIHtcbiAgICAgIGhlaWdodDogMi41cmVtICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgOmdsb2JhbCgucmVzdWx0LXNrYSBlbSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlM2MzMDA7XG4gIH1cblxuICA6Z2xvYmFsKC5hdXRvY29tcGxldGU6bm90KGh0bWwuZGFyayAuYXV0b2NvbXBsZXRlKTphZnRlcikge1xuICAgIGJvcmRlci1jb2xvcjogIzAwOGRjOSAhaW1wb3J0YW50O1xuICB9XG5cbiAgOmdsb2JhbChodG1sLmRhcmsgLmF1dG9jb21wbGV0ZTphZnRlcikge1xuICAgIGJvcmRlci1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCBJbWFnZSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9JbWFnZS5zdmVsdGUnXG4gIGltcG9ydCBIZWFkbGluZSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9IZWFkbGluZS5zdmVsdGUnXG4gIGltcG9ydCB7cGFnZWRhdGF9IGZyb20gJ0BsYXlvdXQvYnAtbGliLmpzJ1xuXG4gIGxldCBhY3Rpb25kYXRhXG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0RGF0YSgpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge21ldGhvZDogJ0dFVCcsIGhlYWRlcnM6IHsnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nfX1cbiAgICBjb25zdCBhY3Rpb25maWxlID0gKHBhZ2VkYXRhLmlzX3ByZXZpZXcpXG4gICAgICA/ICcvJyArIHBhZ2VkYXRhLm1pbml3ZWIgKyAnL3NzaS9hY3Rpb25zLmpzb24nXG4gICAgICA6ICcvc3NpL2FjdGlvbnMuanNvbidcblxuICAgIGxldCByZXNwID0gYXdhaXQgZmV0Y2goYWN0aW9uZmlsZSwgb3B0aW9ucylcblxuICAgIGlmIChyZXNwLm9rKSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVzcC5qc29uKClcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6ICdBa3Rpb25lbiB1bmQgUHJvZ3JhbW1lJyxcbiAgICAgICAgYWN0aW9uczogW11cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhY3Rpb25kYXRhID0gZ2V0RGF0YSgpXG48L3NjcmlwdD5cblxueyNhd2FpdCBhY3Rpb25kYXRhfVxuICA8cD5FaW5lbiBrbGVpbmVuIE1vbWVudCBiaXR0ZS4uLjwvcD5cbns6dGhlbiBkYXRhfVxuICB7I2lmIGRhdGEuYWN0aW9ucyAmJiBkYXRhLmFjdGlvbnMubGVuZ3RofVxuICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTJcIj5cbiAgICAgIDxIZWFkbGluZVxuICAgICAgICBvcmllbnRhdGlvbj1cInRleHQtY2VudGVyXCJcbiAgICAgICAgY3NzPVwiXCJcbiAgICAgICAgaWNvbj1cImZhcyBmYS1zdGFyXCJcbiAgICAgICAgdGl0bGU9XCJ7ZGF0YS50aXRsZX1cIlxuICAgICAgICBzaXplPVwiaDJcIlxuICAgICAgICBicGJvcmRlclxuICAgICAgICBicGJsdWVcbiAgICAgIC8+XG4gICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS00XCI+XG4gICAgICAgIHsjZWFjaCBkYXRhLmFjdGlvbnMgYXMgYWN0aW9ufVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24gcmVsYXRpdmUgaG92ZXI6c2hhZG93LWxnXCI+XG4gICAgICAgICAgICA8SW1hZ2Ugc2hhZG93IHsuLi5hY3Rpb259Lz5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgYWJzb2x1dGUgYm90dG9tLTAgcmlnaHQtMCBwLTIgYmctYnAtYmx1ZS1kYXJrIGRhcms6YmctYmxhY2sgb3BhY2l0eS03NSB0ZXh0LXdoaXRlIGhvdmVyOnNoYWRvdy1sZ1wiPlxuICAgICAgICAgICAgICB7YWN0aW9uLmFjdGlvbl90ZWFzZXJ9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgey9lYWNofVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIHsvaWZ9XG57OmNhdGNoIGVycm9yfVxuICA8cCBzdHlsZT1cImNvbG9yOiByZWRcIj57ZXJyb3IubWVzc2FnZX08L3A+XG57L2F3YWl0fVxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IHtzbG90ZGF0YSwgcGFnZWRhdGF9IGZyb20gJ0BsYXlvdXQvYnAtbGliLmpzJ1xuXG4gIGltcG9ydCBFcnJvclBhZ2UgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL3Rvb2xzL0Vycm9yUGFnZS5zdmVsdGUnXG5cbiAgaW1wb3J0IFNsb3QgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL21haW4vU2xvdC5zdmVsdGUnXG4gIGltcG9ydCBUaWxlTWVudSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvbWFpbi9UaWxlTWVudS5zdmVsdGUnXG4gIGltcG9ydCBIZWFkbGluZSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvZmxleC9IZWFkbGluZS5zdmVsdGUnXG4gIGltcG9ydCBUZXh0SW1hZ2UgZnJvbSAnQGxheW91dC9jb21wb25lbnRzL2ZsZXgvVGV4dEltYWdlLnN2ZWx0ZSdcbiAgaW1wb3J0IFNlYXJjaERzdCBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvc2VhcmNoL1NlYXJjaERzdC5zdmVsdGUnXG4gIGltcG9ydCBBY3Rpb25zTWVudSBmcm9tICdAbGF5b3V0L2NvbXBvbmVudHMvbWFpbi9BY3Rpb25zTWVudS5zdmVsdGUnXG5cbiAgY29uc3QgY29tcG9uZW50cyA9IFtcbiAgICB7aWQ6ICdkc3QnLCBjb21wb25lbnQ6IFNlYXJjaERzdH1cbiAgXVxuPC9zY3JpcHQ+XG5cbjxhcnRpY2xlIGlkPVwicmVhZHNwZWFrZXJfbGVzZW5cIiBjbGFzcz1cIm1haW4gZGFyazp0ZXh0LXdoaXRlIHB4LTIgbGc6cHgtMCBzcGFjZS15LTQgbGc6c3BhY2UteS04
41XCI+XG4gIHsjaWYgKCFwYWdlZGF0YS5taW5pd2ViX3Jvb3QpfVxuICAgIDxIZWFkbGluZSB0aXRsZT1cIntwYWdlZGF0YS50aXRsZX1cIiBvcmllbnRhdGlvbj1cIntwYWdlZGF0YS50aXRsZV9wb3N9XCIgYnBibHVlPVwie3BhZ2VkYXRhLmJwYmx1ZX1cIiBzaXplPVwiaDJcIi8+XG4gIHsvaWZ9XG5cbiAgeyNpZiAocGFnZWRhdGEuaXNfZXJyb3JfcGFnZSl9XG4gICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgZ2FwLThcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzbG90LWNvbC0xIGdyaWQgZ3JpZC1jb2xzLTEgZ2FwLThcIj5cbiAgICAgICAgPEVycm9yUGFnZSBjb2RlPVwie3BhZ2VkYXRhLmNvZGV9XCIvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIHs6ZWxzZX1cbiAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSB7c2xvdGRhdGEuY29scygpfSBnYXAtOFwiPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic2xvdC1jb2wtMSBzcGFjZS15LThcIj5cbiAgICAgICAgeyNpZiAocGFnZWRhdGEudGVtcGxhdGUgJiYgIXBhZ2VkYXRhLm1pbml3ZWJfcm9vdCl9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1iIGJvcmRlci1icC1ncmF5LW1pZGRsZSBwYi00IGlubGluZS1ibG9ja1wiPlxuICAgICAgICAgICAgPFRleHRJbWFnZSB7Li4ucGFnZWRhdGEudGVtcGxhdGV9Lz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgey9pZn1cblxuICAgICAgICB7I2lmIChwYWdlZGF0YS5iYW5uZXJzICYmIHBhZ2VkYXRhLmJhbm5lcnMubGVuZ3RoKX1cbiAgICAgICAgICA8U2xvdCB7Li4ucGFnZWRhdGEuYmFubmVyc1swXX0vPlxuICAgICAgICB7L2lmfVxuXG4gICAgICAgIHsjaWYgKHBhZ2VkYXRhLm1pbml3ZWJfcm9vdCl9XG4gICAgICAgICAgPFRpbGVNZW51Lz5cbiAgICAgICAgey9pZn1cblxuICAgICAgICB7I2lmIChwYWdlZGF0YS5pc19zZWFyY2gpfVxuICAgICAgICAgIHsjaWYgY29tcG9uZW50cy5maW5kKHR5cGUgPT4gdHlwZS5pZCA9PT0gcGFnZWRhdGEuc2VhcmNoX2NvbXBvbmVudCl9XG4gICAgICAgICAgICA8c3ZlbHRlOmNvbXBvbmVudFxuICAgICAgICAgICAgICB0aGlzPXtjb21wb25lbnRzLmZpbmQodHlwZSA9PiB0eXBlLmlkID09PSBwYWdlZGF0YS5zZWFyY2hfY29tcG9uZW50KS5jb21wb25lbnR9XG4gICAgICAgICAgICA+PC9zdmVsdGU6Y29tcG9uZW50PlxuICAgICAgICAgIHs6ZWxzZX1cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJlZC01MDBcIj5Lb21wb25lbnRlIHtwYWdlZGF0YS5zZWFyY2hfY29tcG9uZW50fSBuaWNodCBnZWZ1bmRlbjwvZGl2PlxuICAgICAgICAgIHsvaWZ9XG4gICAgICAgIHs6ZWxzZX1cbiAgICAgICAgICB7I2lmIChzbG90ZGF0YS5jb3VudCl9XG4gICAgICAgICAgICA8U2xvdCB7Li4ucGFnZWRhdGEuc2xvdHNbMF19Lz5cbiAgICAgICAgICB7L2lmfVxuICAgICAgICB7L2lmfVxuXG4gICAgICAgIHsjaWYgKHBhZ2VkYXRhLm1pbml3ZWJfcm9vdCl9XG4gICAgICAgICAgPEFjdGlvbnNNZW51PjwvQWN0aW9uc01lbnU+XG4gICAgICAgIHsvaWZ9XG4gICAgICA8L2Rpdj5cblxuICAgICAgeyNpZiAoc2xvdGRhdGEuY291bnQgPT09IDIpfVxuICAgICAgICA8ZGl2IGNsYXNzPVwic2xvdC1jb2wtMiBvdXRsaW5lLTJcIj5cbiAgICAgICAgICA8U2xvdCBzbG90PVwiMlwiIHsuLi5wYWdlZGF0YS5zbG90c1sxXX0vPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHsvaWZ9XG5cbiAgICA8L2Rpdj5cbiAgey9pZn1cbjwvYXJ0aWNsZT5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7cGFnZWRhdGEsIGNhdGRhdGF9IGZyb20gJ0BsYXlvdXQvYnAtbGliLmpzJ1xuXG4gIGNvbnN0IHNtQnRucyA9IChjYXRkYXRhICYmIGNhdGRhdGEuc29jaWFsKSA/IGNhdGRhdGEuc29jaWFsIDogbnVsbFxuICBjb25zdCBzbUxua3MgPSAoY2F0ZGF0YSAmJiBjYXRkYXRhLmxpbmtzKSA/IGNhdGRhdGEubGlua3MgOiBudWxsXG5cbiAgY29uc3QgbGlua3MgPSBbXG4gICAge3RpdGxlOiAnSW1wcmVzc3VtJywgaHJlZjogKHNtTG5rcyAmJiBzbUxua3MuaW1wcmludCkgPyBzbUxua3MuaW1wcmludCA6IG51bGx9LFxuICAgIHt0aXRsZTogJ0RhdGVuc2NodXR6JywgaHJlZjogKHNtTG5rcyAmJiBzbUxua3MuZHNndm8pID8gc21MbmtzLmRzZ3ZvIDogbnVsbH0sXG4gICAge3RpdGxlOiAnQmFycmllcmVmcmVpaGVpdCcsIGhyZWY6IChzbUxua3MgJiYgc21MbmtzLmFsbHkpID8gc21MbmtzLmFsbHkgOiBudWxsfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ0JhcnJpZXJlIG1lbGRlbicsXG4gICAgICBocmVmOiAoIXBhZ2VkYXRhLmlzX3ByZXZpZXcpID8gJ21haWx0bzpnc3QuaW50ZXJuZXRAcG9saXplaS5iYXllcm4uZGUnIDogbnVsbCxcbiAgICAgIHRhcmdldDogJ19ibGFuaycsXG4gICAgICBzdWJqZWN0OiAnQmFycmllcmUgbWVsZGVuIGbDvHIgZGllIFNlaXRlOiAnICsgd2luZG93LmRvY3VtZW50LnRpdGxlICsgJyAoJyArIHdpbmRvdy5kb2N1bWVudC5VUkwgKyAnKScsXG4gICAgICBib2R5OiBcIlNlaHIlMjBnZWVocnRlJTIwRGFtZW4lMjB1bmQlMjBIZXJyZW4sXCJcbiAgICAgICAgKyBcIiUwQSUwQWhpZXJtaXQlMjBtw7ZjaHRlbiUyMGljaCUyMGVpbmUlMjBCYXJyaWVyZSUyMGbDvHIlMjBkaWUlMjBJbnRlcm5ldHNlaXRlJTIwZGVyJTIwQmF5ZXJpc2NoZW4lMjBQb2xpemVpJTIwbWVsZGVuLlwiXG4gICAgICAgICsgXCIlMEElMEFGb2xnZW5kZSUyMEJhcnJpZXJlJTIwaXN0JTIwbWlyJTIwYXVmZ2VmYWxsZW46JTBBJTBBXCJcbiAgICB9XG4gIF1cblxuICBjb25zdCBnZXRMaW5rID0gKGxpbmspID0+IHtcbiAgICByZXR1cm4gKHBhZ2VkYXRhLmlzX3ByZXZpZXcpXG4gICAgICA/IG51bGxcbiAgICAgIDogbGluay5ocmVmXG4gIH1cblxuICBjb25zdCBnZXRNYWlsTGluayA9IChsaW5rKSA9PiB7XG4gICAgcmV0dXJuIChwYWdlZGF0YS5pc19wcmV2aWV3KVxuICAgICAgPyBudWxsXG4gICAgICA6IGxpbmsuaHJlZiArICc/c3ViamVjdD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGxpbmsuc3ViamVjdCkgKyAnJmJvZHk9JyArIGxpbmsuYm9keVxuICB9XG5cbiAgY29uc3QgY2FwID0gKHMpID0+IHtcbiAgICByZXR1cm4gKHR5cGVvZiBzICE9PSAnc3RyaW5nJylcbiAgICAgID8gJydcbiAgICAgIDogcy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHMuc2xpY2UoMSlcbiAgfVxuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBiZy1icC1ibHVlLWRhcmsgZGFyazpiZy1ibGFjayB0ZXh0LXdoaXRlIHRleHQtYmFzZSBtZDp0ZXh0LXhsIHB5LTJcIj5cbiAgeyNpZiBzbUJ0bnN9XG4gICAgPGRpdiBjbGFzcz1cImZsZXgtbm9uZSBzb2NpYWxzIGRpdmlkZS14LTIgZGl2aWRlLXdoaXRlXCI+XG4gICAgICB7I2VhY2ggT2JqZWN0LmtleXMoc21CdG5zKSBhcyBidG59XG4gICAgICAgI
41HsjaWYgc21CdG5zW2J0bl19XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9XCJ7IXBhZ2VkYXRhLmlzX3ByZXZpZXcgPyBzbUJ0bnNbYnRuXSA6IG51bGx9XCJcbiAgICAgICAgICAgIGNsYXNzPVwicHgtMiBob3Zlcjp0ZXh0LWJwLWJsdWUgZHVyYXRpb24tNTAwXCJcbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgIHRpdGxlPVwiw5xiZXIge2NhcChidG4pfSBtaXR0ZWlsZW5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiZmEtYnJhbmRzIGZhLXsoYnRuID09PSAndHdpdHRlcicpID8gJ3gtdHdpdHRlcicgOiBidG59XCJcbiAgICAgICAgICAgICAgdGl0bGU9XCLDnGJlciB7KGJ0biA9PT0gJ3R3aXR0ZXInKSA/ICdYJyA6IGNhcChidG4pfSBtaXR0ZWlsZW5cIlxuICAgICAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgey9pZn1cbiAgICAgIHsvZWFjaH1cbiAgICA8L2Rpdj5cbiAgey9pZn1cbiAgPGRpdiBjbGFzcz1cImZsZXgtMSBmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWVuZCBsaW5rcyBkaXZpZGUteC0yIGRpdmlkZS13aGl0ZVwiPlxuICAgIHsjZWFjaCBsaW5rcyBhcyBsaW5rfVxuICAgICAgeyNpZiBsaW5rLmhyZWZ9XG4gICAgICAgIHsjaWYgbGluay5ocmVmLnN0YXJ0c1dpdGgoJ21haWx0bycpfVxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPVwie2dldE1haWxMaW5rKGxpbmspfVwiXG4gICAgICAgICAgICBjbGFzcz1cInB4LTIgaG92ZXI6dGV4dC1icC1ibHVlIGR1cmF0aW9uLTUwMFwiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgIHRhcmdldD1cIntsaW5rLnRhcmdldH1cIlxuICAgICAgICAgID57bGluay50aXRsZX08L2E+XG4gICAgICAgIHs6ZWxzZX1cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj1cIntnZXRMaW5rKGxpbmspfVwiXG4gICAgICAgICAgICBjbGFzcz1cInB4LTIgaG92ZXI6dGV4dC1icC1ibHVlIGR1cmF0aW9uLTUwMFwiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgIHRhcmdldD1cIl9zZWxmXCJcbiAgICAgICAgICA+e2xpbmsudGl0bGV9PC9hPlxuICAgICAgICB7L2lmfVxuICAgICAgey9pZn1cbiAgICB7L2VhY2h9XG4gIDwvZGl2PlxuPC9kaXY+XG4iLCIvLyBDU1MgTGFkZW5cbmltcG9ydCAnLi9tYWluLmNzcydcblxuLy8gQWxsZSBKU09OIERhdGVuIGxhZGVuXG5sZXQgc2xvdGRhdGEsIHBhZ2VkYXRhLCBjYXRkYXRhLCBuYXZpZGF0YSwgc2xpZGVyZGF0YSwgY2Fyb3VzZWxkYXRhXG5cbmNvbnN0IGlzX3ByZXZpZXcgPSAhISh3aW5kb3cuY3VzdG9tX3ByZXZpZXcpXG5jb25zdCBpc19lcnJvciA9ICEhKHdpbmRvdy5lcnJvcmRhdGEpXG5jb25zdCBwYXRobmFtZSA9ICh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgPT09ICcvJykgPyAnL2luZGV4Lmh0bWwnIDogd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lXG5jb25zdCBwYWdlZmlsZSA9IHBhdGhuYW1lLnJlcGxhY2UoJy5odG1sJywgJy5qc29uJylcbmNvbnN0IG9wdGlvbnMgPSB7bWV0aG9kOiAnR0VUJywgaGVhZGVyczogeydBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbid9fVxuXG4vKipcbiAqIEpTT04gRGF0ZWkgZWlubGVzZW4sIHVuZCBkYXMgT2JqZWt0IHp1csO8Y2tnZWJlblxuICpcbiAqIEBwYXJhbSBkYXRhZmlsZVxuICogQHBhcmFtIGRlZmF1bHRfdHlwZVxuICogQHJldHVybnMge1Byb21pc2U8e318Kj59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldERhdGEoZGF0YWZpbGUsIGRlZmF1bHRfdHlwZSA9IHt9KSB7XG4gIGlmIChpc19wcmV2aWV3ICYmIGRhdGFmaWxlID09PSBwYWdlZmlsZSkge1xuICAgIHJldHVybiB3aW5kb3cuY3VzdG9tX3ByZXZpZXdcbiAgfVxuICBpZiAoaXNfZXJyb3IgJiYgZGF0YWZpbGUgPT09IHBhZ2VmaWxlKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5lcnJvcmRhdGFcbiAgfVxuXG4gIGxldCByZXNwID0gYXdhaXQgZmV0Y2goZGF0YWZpbGUsIG9wdGlvbnMpXG5cbiAgaWYgKHJlc3Aub2spIHtcbiAgICByZXR1cm4gYXdhaXQgcmVzcC5qc29uKClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGVmYXVsdF90eXBlXG4gIH1cbn1cblxuY29uc3QgY2F0ZmlsZSA9IChpc19wcmV2aWV3KSA/ICcvJyArIHdpbmRvdy5jdXN0b21fcHJldmlldy5taW5pd2ViICsgJy9zc2kvY2F0ZGF0YS5qc29uJyA6ICcvc3NpL2NhdGRhdGEuanNvbidcbmNvbnN0IG1lbnVmaWxlID0gKGlzX3ByZXZpZXcpID8gJy8nICsgd2luZG93LmN1c3RvbV9wcmV2aWV3Lm1pbml3ZWIgKyAnL3NzaS9tZW51Lmpzb24nIDogJy9zc2kvbWVudS5qc29uJ1xuY29uc3Qgc2xpZGVyZmlsZSA9IChpc19wcmV2aWV3KSA/ICcvJyArIHdpbmRvdy5jdXN0b21fcHJldmlldy5taW5pd2ViICsgJy9zc2kvaGVhZGVyc2xpZGVyLmpzb24nIDogJy9zc2kvaGVhZGVyc2xpZGVyLmpzb24nXG5jb25zdCBjYXJvdXNlbGZpbGUgPSAoaXNfcHJldmlldykgPyAnLycgKyB3aW5kb3cuY3VzdG9tX3ByZXZpZXcubWluaXdlYiArICcvc3NpL2Zvb3RlcmNhcm91c2VsLmpzb24nIDogJy9zc2kvZm9vdGVyY2Fyb3VzZWwuanNvbidcblxuLy8gQWxsZSBiZW51dHp0ZW4gSlNPTiBEYXRlaWVuIGVpbmxlc2VuLlxuYXdhaXQgUHJvbWlzZS5hbGwoW1xuICBwYWdlZGF0YSA9IGF3YWl0IGdldERhdGEocGFnZWZpbGUpLFxuICBjYXRkYXRhID0gYXdhaXQgZ2V0RGF0YShjYXRmaWxlKSxcbiAgbmF2aWRhdGEgPSBhd2FpdCBnZXREYXRhKG1lbnVmaWxlKSxcbiAgc2xpZGVyZGF0YSA9IGF3YWl0IGdldERhdGEoc2xpZGVyZmlsZSksXG4gIGNhcm91c2VsZGF0YSA9IGF3YWl0IGdldERhdGEoY2Fyb3VzZWxmaWxlLCBbXSlcbl0pXG5cbi8vIFNsb3RkYXRlbiBmw7xyIGRhcyBKU1xuc2xvdGRhdGEgPSB7XG4gIG1haW46IChwYWdlZGF0YS5jb2x1bW5zX3NldCAhPT0gJzI1LTc1JykgPyAxIDogMixcbiAgY291bnQ6IChwYWdlZGF0YS5zbG90cykgPyBwYWdlZGF0YS5zbG90cy5sZW5ndGggOiAwLFxuICBjb2xzOiAoKSA9PiB7XG4gICAgaWYgKHBhZ2VkYXRhLmNvbHVtbnNfc2V0ID09PSAnNTAtNTAnKSB7XG4gICAgICByZXR1cm4gJ21kOmdyaWQtY29scy1bMWZyXzFmcl0nXG4gICAgfSBlbHNlIGlmIChwYWdlZGF0YS5jb2x1bW5zX3NldCA9PT0gJzc1LTI1Jykge1xuICAgICAgcmV0dXJuICdtZDpncmlkLWNvbHMtWzNmcl8xZnJdJ1xuICAgIH0gZWxzZSBpZiAocGFnZWRhdGEuY29sdW1uc19zZXQgPT09ICcyNS03NScpIHtcbiAgICAgIHJldHVybiAnbWQ6Z3JpZC1jb2xzLVsxZnJfM2ZyXSdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdtZDpncmlkLWNvbHMtWzFmcl0nXG4gICAgfVxuICB9XG59XG5cbnBhZ2VkYXRhLmlzX3ByZXZpZXcgPSBpc19wcmV2aWV3XG5wYWdlZGF0YS5pc19lcnJvcl9wYWdlID0gaXNfZXJyb3JcblxuLypcbiAqIEpTT04gRGF0ZW4gZXhwb3J0aWVyZW5cbiAqIERpZXNlIGvDtm5uZW4gZGFubiBpbiBkZW4gU3ZlbHRlIEtvbXBvbmVudGVuIHdpZSBmb2xndCBnZWxhZGVuIHdlcmRlblxuICpcbiAqIHouQi4gaW1wb3J0IHtwYWdlZGF0YSwgbmF2aWRhdGF9IGZyb20gJ0BsYXlvdXQvYnAtbGliLmpzJ1xuICovXG5pbXBvcnQge2JwY29uZmlnfSBmcm9tICdAbGF5b3V0L2pzL3N5c3RlbS5jb25maWcuanMnXG5pZiAoIWlzX3ByZXZpZXcpIHtcbiAgYnBjb25maWcuY2hhdGJvdC5hY3RpdmF0ZSgpXG59XG5cbmV4cG9ydCB7c2xvdGRhdGEsIHBhZ2VkYXRhLCBjYXRkYXRhLCBuYXZpZGF0YSwgc2xpZGVyZGF0YSwgY2Fyb3VzZWxkYXRhLCBicGNvbmZpZ31cblxuLy8gQ29va2llcyBhdXNsZXNlbiB1bmQgaW4gZGVuIFN0b3JlcyBzcGVpY2hlcm5cbmltcG9ydCB7aW5pdFNvcmVzRnJvbUNvb2tpZXN9IGZyb20gJ0BsYXlvdXQvanMvY29va2llcy5qcydcbmluaXRTb3Jlc0Zyb21Db29raWVzKClcblxuLy8gSGF1cHRrb21wb25lbnRlbiBsYWRlblxuaW1wb3J0IE5hdiBmcm9tICdAbGF5b3V0L05hdi5zdmVsdGUnXG5pbXBvcnQgTWVudSBmcm9tICdAbGF5b3V0L01lbnUuc3ZlbHRlJ1xuaW1wb3J0IEhlYWRlciBmcm9tICdAbGF5b3V0L0hlYWRlci5zdmVsdGUnXG5pbXBvcnQgTWFpbiBmcm9tICdAbGF5b3V0L01haW4uc3ZlbHRlJ1xuaW1wb3J0IEZvb3RlciBmcm9tICdAbGF5b3V0L0Zvb3Rlci5zdmVsdGUnXG5cbmZ1bmN0aW9uIG1vdW50SWZQcmVzZW50KENvbXBvbmVudCwgdGFyZ2V0SWQpIHtcbiAgY29uc3QgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0SWQpXG4gIGlmICghdGFyZ2V0KSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybi
41BuZXcgQ29tcG9uZW50KHtcbiAgICB0YXJnZXQsXG4gICAgaHlkcmF0ZTogdHJ1ZVxuICB9KVxufVxuXG4vLyBIVE1MIEVsZW1lbnRlIGbDvHIgZGVuIFN2ZWx0ZSBBcHAgS29udGV4dFxubW91bnRJZlByZXNlbnQoTmF2LCAnYXBwLW5hdicpXG5tb3VudElmUHJlc2VudChNZW51LCAnYXBwLW1lbnUnKVxubW91bnRJZlByZXNlbnQoSGVhZGVyLCAnYXBwLWhlYWRlcicpXG5tb3VudElmUHJlc2VudChNYWluLCAnYXBwLW1haW4nKVxubW91bnRJZlByZXNlbnQoRm9vdGVyLCAnYXBwLWZvb3RlcicpXG4iXSwiZmlsZSI6InN0YXRpYy9qcy9icC1ieXNrLWxpYi5qcyJ9
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.